AVX2置换控制位

时间:2018-12-22 02:22:26

标签: avx avx2

AVX2指令中的permute命令需要imm8类型的参数。此参数控制如何执行排列。不幸的是,我不知道如何“创建”此imm8参数。我必须设置什么值,或者如何确定特定的偏移量必须设置什么值?

示例:     _mm256_permute_pd(vec2,0x5);

此处,参数0x5排列vec2中的第一个和第二个双精度值以及vec2中的第三个和第四个双精度值。但是我怎么知道0x5呢?

1 个答案:

答案 0 :(得分:3)

它是4个1位索引,用于为每个目标元素从源向量的对应通道中选择两个元素之一。阅读有关asm指令的文档的“操作”部分:http://felixcloutier.com/x86/VPERMILPD.html

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

这不是穿越vpermpd,因此_MM_SHUFFLE并不像2位索引那样是辅助宏,所以它与Convert _mm_shuffle_epi32 to C expression for the permutation?不太一样。