Intel Intrinsics Guide列出了英特尔MMX技术的内在函数,英特尔C / C ++编译器的SSE,SSE2,SSE3和SSSE3指令。 x86 Built-in Functions列出了GCC的内在函数。这两个清单之间有什么关系?
我的猜测是x86 Built-in Functions是Intel Intrinsics Guide的实现。例如,Intel Intrinsics Guide有__m64 _mm_add_pi16 (__m64 a, __m64 b)
,在x86 Built-in Functions中实现为v4hi __builtin_ia32_paddw (v4hi, v4hi)
。所以x86 Built-in Functions似乎选择了一些Intel Intrinsics Guide的内在函数并进行了一些包装,例如重命名。但x86 Built-in Functions并未在Intel Intrinsics Guide中实现所有内在函数。例如,__m64 _mm_shuffle_pi16 (__m64 a, int imm8)
的SEE指令为pshufw
。但x86 Built-in Functions没有此SSE指令的固有内容。所以x86 Built-in Functions似乎没有实现Intel Intrinsics Guide中的所有内在函数。要使用此类内在函数,我们可以包含Intel Intrinsics Guide的头文件,并使用-msse
进行编译(我已经验证了这一点)。
我的理解是否正确?