如何将_mm256_permute4x64扩展到 AVX-512?

How to extend _mm256_permute4x64 to AVX-512?

提问人:aganm 提问时间:10/30/2023 更新时间:10/30/2023 访问量:64

问:

我有这个 AVX2 代码,我正在尝试将其扩展到 AVX-512:

_mm256_permute4x64_epi64(a, _MM_SHUFFLE(3, 1, 2, 0));

扩展代码如下所示:

_mm512_permute8x64_epi64(a, _MM_SHUFFLE(7, 5, 3, 1, 6, 4, 2, 0));

但这种内在因素并不存在。

目的是取每个 128 位通道的低 64 位部分,并将它们打包到寄存器的底部 256 位部分。

如何将原始代码扩展到 AVX-512?

SIMD AVX512

评论

3赞 harold 10/30/2023
基本上这不存在,因为 shufmask 不适合 8 位,但有一些随机播放可以做到这一点,它采用索引向量
2赞 Peter Cordes 10/30/2023
如果以后可以有效地使用 512 位向量,不妨使用从两个输入向量中获取所需的元素并将它们打包到 .(使用控制向量。vpermt2q__m512i_mm512_permutex2var_epi64
0赞 chtz 10/30/2023
特别是对于查找随机指令,您通常可以用 / 指令编译一个简单的程序,并询问 clang 它提出了什么随机指令: godbolt.org/z/PE86MeE8s (索引恰好使用,因为 gcc/clang 表示的方式。setsetrepi64__m512i

答: 暂无答案