如何阅读"Intel Intrinsics Guide"?
How to read the "Intel Intrinsics Guide"?
我试图通过阅读 Intel Intrinsics Guide 开始使用 AVX512 内在函数,但到目前为止我发现它没有定义命名数据类型或用于解释的伪代码语法。没有这样的定义,所谓的指南根本就没有指导我。
例如,如果我查找函数 _mm512_slli_epi32 (__m512i a, unsigned int imm8)
,该函数采用打包 32 位整数的向量 a
并对其执行某些操作,指南说结果存储在名为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
如果没有适当的文档,我到底应该从中得到什么?甚至没有 link 所用语法的文档。
请帮忙。我正在寻找“Intel Intrinsics Guide”的指南。或者,我也希望对英特尔内在函数有任何其他教学介绍。 This answer 没有帮助。谢谢!
英特尔调用 dst
指令的 return 值。总的来说,该指令是这样做的:
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 Intrinsics Guide 开始使用 AVX512 内在函数,但到目前为止我发现它没有定义命名数据类型或用于解释的伪代码语法。没有这样的定义,所谓的指南根本就没有指导我。
例如,如果我查找函数 _mm512_slli_epi32 (__m512i a, unsigned int imm8)
,该函数采用打包 32 位整数的向量 a
并对其执行某些操作,指南说结果存储在名为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
如果没有适当的文档,我到底应该从中得到什么?甚至没有 link 所用语法的文档。
请帮忙。我正在寻找“Intel Intrinsics Guide”的指南。或者,我也希望对英特尔内在函数有任何其他教学介绍。 This answer 没有帮助。谢谢!
英特尔调用 dst
指令的 return 值。总的来说,该指令是这样做的:
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希望介绍得很好。