AVX2指令中的permute命令需要imm8类型的参数。此参数控制如何执行排列。不幸的是,我不知道如何“创建”此imm8参数。我必须设置什么值,或者如何确定特定的偏移量必须设置什么值?
示例: _mm256_permute_pd(vec2,0x5);
此处,参数0x5排列vec2中的第一个和第二个双精度值以及vec2中的第三个和第四个双精度值。但是我怎么知道0x5呢?
答案 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?不太一样。