intel - 如何读取 "Intel Intrinsics Guide"?

标签 intel simd intrinsics

我正在尝试通过阅读 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/

相关文章:

opengl - 如何在GLSL程序中识别intel显卡?

intel - Haswell 微架构在性能中没有停滞周期后端

c++ - 通过内部函数或指令手动控制 Intel MIC SIMD 操作

c++ - 编写可移植的 SSE/AVX 版本的 std::copysign

cuda - 如果我们有 GPGPU,为什么要使用 SIMD?

performance - 平均而言,现代 x64 CPU cmpxchg16b 比 64 或 32 位 CPU 慢得多?

c++ - 如何优化 SIMD 转置函数(8x4 => 4x8)?

c++ - SSE1,2,3 round() 不完全遵循 std::round() 结果

gcc - 有没有更有效的方法将4个连续的double广播到4个YMM寄存器中?

c - 如何最好地模拟 _mm_slli_si128(128 位位移)的逻辑含义,而不是 _mm_bslli_si128