我正在尝试通过阅读 Intel Intrinsics Guide 来开始使用 AVX512 内在函数但到目前为止我发现它没有定义命名数据类型或用于解释的伪代码语法。没有这样的定义,所谓的指南对我起码没有指导作用。
例如,如果我查找函数 _mm512_slli_epi32 (__m512i a, unsigned int imm8)
它接受一个向量 a
打包的 32 位整数并对它做一些事情,指南说结果存储在一个叫做 dst
的东西中。 (undefined) 操作如下。
FOR j := 0 to 15
i := j*32
IF imm8[7:0] > 31
dst[i+31:i] := 0
ELSE
dst[i+31:i] := ZeroExtend32(a[i+31:i] << imm8[7:0])
FI
ENDFOR
dst[MAX:512] := 0
如果没有适当的文件,我到底应该怎么做?甚至没有指向所用语法的文档链接。
请帮助。我正在寻找“英特尔内在指南”的指南。或者,我也很欣赏英特尔内在函数的任何其他教学介绍。 This answer没有帮助。谢谢!
最佳答案
英特尔调用 dst
指令的返回值。总的来说,该指令是这样做的:
inline std::array<int, 16> slli( std::array<int, 16> a, int imm )
{
for( int& tmp : a )
tmp = ( imm > 31 ) ? 0 : tmp << imm;
return a;
}
这是我的文章:http://const.me/articles/simd/simd.pdf希望有好的介绍。
关于intel - 如何读取 "Intel Intrinsics Guide"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62349373/