_mm256_shuffle_ps如何工作?

pyt*_*nic 4 c x86 simd intrinsics avx

我明白了_mm_shuffle_ps工作.例如,在下面.

__m128 r = _mm_shuffle_ps(x,y, _MM_SHUFFLE(2,0,2,0)); 
Run Code Online (Sandbox Code Playgroud)

r将有内容x[0],x[2],y[0],y[2].

但是我看到它_MM_SHUFFLE也需要4个参数_mm256_shuffle_ps,而矢量每个都有8个元素.所以,逻辑上_MM_SHUFFLE应该采取8个参数.有人可以解释这是如何工作的吗?

Yan*_*hou 8

_mm256_shuffle_ps将两个128位通道中的每一个独立地混洗,就像_mm_shuffle_ps调用两个XMM一样.如果你想要洗牌所有8个32位元素,你需要_mm256_permutevar8x32_ps