使用 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