_mm256_broadcast_ss() 的 c++ AVX512 内在等价物?

c++ AVX512 intrinsic equivalent of _mm256_broadcast_ss()?

我正在将代码从 AVX2 重写为 AVX512。

我可以使用什么来将单个浮点数广播到 _mm512 向量?在 AVX2 中它是 _mm256_broadcast_ss() 但我找不到像 _mm512_broadcast_ss().

这样的东西

AVX512 不需要内存源版本1 的特殊内在函数。您可以简单地使用 _mm512_set1_ps(需要 float,而不是 float*)。如果有效的话,编译器应该使用内存源广播。 (甚至可能折叠到 ALU 指令的广播内存源中,而不是单独加载;AVX512 可以为 512 位向量做到这一点。)

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_set1_ps&expand=5236,4980


脚注 1:_mm256_broadcast_ss 甚至与 _mm256_set1_ps 分开存在的原因可能是因为 AVX1 vbroadcastss ymm, [mem] 与 AVX2 vbroadcastss ymm, xmm。某些编译器(如 MSVC 和 ICC)允许您使用内部函数,而无需为编译器启用 ISA 扩展以在任何地方使用,因此需要专门针对 AVX1 内存源版本的内部函数。

对于 AVX512,AVX512F 引入了内存和寄存器源形式,因此无需为这些编译器的用户提供微观管理允许哪些 asm 的方法。