使用 4 个打包float( __m128),我可以使用 SSE 内在函数
__m128 X;
__m128 H = _mm_shuffle_ps(X,X,_MM_SHUFFLE(3,3,3,3));
将所有元素设置H为第三个元素X(这是最快的方法吗?)
现在,我想对 4 个打包double( __m256d) 做同样的事情。我天真地编码
__m256d X;
__m256d H = _mm256_shuffle_pd(X,X,_MM_SHUFFLE(3,3,3,3));
但这不正确!相反,它设置 H={X[1],X[1],X[3],X[3]}。
那么,怎么做才对呢?
编辑
使用 Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz