在Stack Overflow上的另一个问题中,我们尝试(并成功)找到了一种替代AVX缺失指令的方法。
__m256d _mm256_dp_pd(__m256d m1, __m256d m2, const int mask);
有人知道这个指令缺失的原因吗?部分答案在这里。
__m256d _mm256_dp_pd(__m256d m1, __m256d m2, const int mask);
有人知道这个指令缺失的原因吗?部分答案在这里。
这个和其它各种AVX的限制的根本原因在于,AVX在体系结构上不过是两个SSE执行单元并排放置 - 您会注意到,几乎没有AVX指令在一个向量的两个128位半部分之间水平操作(这在vpalignr
的情况下尤其令人烦恼)。通常情况下,您实际上只能获得两个128位SSE操作并行执行,这对于大多数按元素方式操作的指令非常有用,但不如一个完整的256位SIMD实现那么有用。