Oracle® Developer Studio 12.5:C++ 用户指南

退出打印视图

更新时间: 2016 年 7 月
 
 

4.12 对 Intel MMX 和扩展的 x86 平台内部函数的编译器支持

mmintrin.h 头文件中声明的原型支持 Intel MMX 内部函数,是为了实现兼容性而提供的。

特定头文件提供了附加扩展平台内部函数的原型,如下表所示。这些头文件的位置取决于编译器的安装位置。例如,如果编译器位于 /opt/Solarisstudio12.3/bin 中,头文件将在 /opt/Solarisstudio12.3/lib/compilers/include/cc/sys 中。

表 21  头文件
x86 平台
头文件
SSE
mmintrin.h
SSE2
xmmintrin.h
SSE3
pmmintrin.h
SSSE3
tmmintrin.h
SSE4A
ammintrin.h
SSE4.1
smmintrin.h
SSE4.2
nmmintrin.h
AES 加密和 PCLMULQDQ
wmmintrin.h
AVX、CORE-AVX-I、AVX2
immintrin.h

表中每个头文件在其前面都包括了原型。例如,在 SSE4.1 平台上,用户程序中的包含方 smmintrin.h 声明了支持 SSE4.1、SSSE3、SSE3、SSE2、SSE 和 MMX 平台的内部函数名称,因为 smmintrin.h 包含了 tmmintrin.h,而 tmmintrin.h 包含了 pmmintrin.h,并依次向下类推至 mmintrin.h

请注意,ammintrin.h 是由 AMD 发布的,未包含在任何 Intel 内部函数头文件中。ammintrin.h 包含了 pmmintrin.h,因此,通过将 ammintrin.h 包含在内,就可声明所有 AMD SSE4A 以及 Intel SSE3、SSE2、SSE 和 MMX 函数。

另外,单个 Oracle Developer Studio 头文件 sunmedia_intrin.h 包括了所有 Intel 头文件中的声明,但未包括 AMD 头文件 ammintrin.h

请注意,在主机平台(例如 SSE3)上部署的调用任何超集内部函数(例如,针对 AVX)的代码不会在 Oracle Solaris 平台上装入,并且在 Oracle Linux 平台上可能会失败并产生未定义的行为或不正确的结果。对于调用这些特定于平台的内部函数的程序,请只在支持这些函数的平台上部署这类程序。

这些为系统头文件,应按下例所示显示在程序中:

#include <nmmintrin.h>

有关详细信息,请参阅最新的 Intel C++ 编译器参考指南。