AVX2置换控制位

AVX2 permute control bit

来自 AVX2 指令的置换命令需要来自类型 imm8 的参数。此参数控制排列的执行方式。不幸的是,我不明白这个 imm8 参数是如何 "created"。我必须设置什么值或如何确定我必须为特定排列设置什么值?

示例: _mm256_permute_pd(vec2, 0x5);

此处参数 0x5 置换了 vec2 中的第一个和第二个双精度数以及 vec2 中的第三个和第四个双精度数。但是我怎么知道 0x5 这样做呢?

对于每个目标元素,select 来自源向量相应通道的两个元素之一是 4x 1 位索引。阅读 asm 指令文档的操作部分:http://felixcloutier.com/x86/VPERMILPD.html.

look it up in Intel's intrinsics guide,它具有类似的伪代码,可以准确显示每个位 select 是结果元素的来源。

它不是交叉路口vpermpd,所以它不像_MM_SHUFFLE作为辅助宏的2位索引,所以它不太像