在another question on SO我们尝试(并成功)找到替换AVX缺失指令的方法:
__m256d _mm256_dp_pd(__m256d m1, __m256d m2, const int mask);
任何人都知道为什么缺少这条指令?部分答案here。
答案 0 :(得分:12)
这个以及其他各种AVX限制的根本原因在于,架构上AVX只是两个并排的SSE执行单元 - 您会注意到几乎没有AVX指令在两个128位半部分之间的边界上水平操作向量(在vpalignr
的情况下尤其令人讨厌)。通常,您实际上只需并行获得两个128位SSE操作,这对于大多数仅以元素方式操作的指令非常有用,但不如正确的256位SIMD实现有用。