【发布时间】:2023-04-09 11:26:01
【问题描述】:
AVX2 指令中的置换命令需要 imm8 类型的参数。此参数控制如何执行排列。不幸的是,我不明白这个 imm8 参数是如何“创建”的。我必须设置什么值或如何确定我必须为特定排列设置什么值?
示例: _mm256_permute_pd(vec2, 0x5);
这里的参数 0x5 置换了 vec2 中的第一个和第二个 double 以及 vec2 中的第三个和第四个 double。但是我怎么知道 0x5 做到了呢?
【问题讨论】:
-
_mm256_permute_pd只需要 AVX1,它是vpermilpd,一个车道内置换。您是否将其与 AVX2_mm256_permute4x64_pd(vpermpd) 混在一起?尝试将 Intel 的固有名称与 asm 指令匹配时可能会造成混淆。