AVX2指令中的permute命令需要imm8类型的参数。此参数控制如何执行排列。不幸的是,我不明白这个imm8参数是如何“创建”的。我必须设置什么值,或者我如何确定必须为特定的永久设置什么值?
示例:_mm256_permute_pd(vec2,0x5);
在这里,参数0x5置换了vec2中的第一个和第二个double,以及vec2中的第三个和第四个double。但是我怎么知道0x5会这样做呢?
发布于 2018-12-22 10:29:53
它是4x1位的索引,为每个目标元素从源向量的相应通道中选择两个元素中的一个。阅读文档的操作部分,了解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?。
https://stackoverflow.com/questions/53892584
复制相似问题