Oracle Solaris Studio 12.2:C++ 用户指南

A.2.187 -xvector[= a]

启用向量库函数调用的自动生成和/或 SIMD(Single Instruction Multiple Data,单指令多数据)指令的生成。使用此选项时,必须通过指定 -fround=nearest 来使用缺省的舍入模式。

-xvector 选项需要 -xO3 或更高的优化级别。如果优化级别未指定或低于 -xO3,编译将不会继续,同时会发出消息。

a 可以为下列值:

表 A–52 -xvector 标志

值 

含义  

[no%]lib

仅限 Solaris)[不] 允许编译器将循环内的数学库调用转换为对等效向量数学例程的单个调用(如果能够进行此类转换)。此类转换可提高那些循环计数较大的循环的性能。

[no%]simd

[不] 指示编译器使用本机 x86 SSE SIMD 指令来提高某些循环的性能。在 x86 中,缺省情况下以优化级别 3 和更高级别使用流扩展。可以使用子选项 no%simd 将其禁用。

仅当目标体系结构中存在流扩展(即目标 ISA 至少为 SSE2)时,编译器才会使用 SIMD。例如,可在现代平台中指定 -xtarget=woodcrest、-xarch=generic64、-xarch=sse2、-xarch=sse3-fast 来使用它。如果目标 ISA 没有流扩展,子选项将无效。

yes

此选项已过时,改为指定 -xvector=lib

no

此选项已过时,改为指定 -xvector=none

A.2.187.1 缺省值

在 x86 平台上的缺省值为 -xvector=simd,在 SPARC 平台上的缺省值为 -xvector=%none。如果指定不带子选项的 -xvector,编译器将采用 -xvector=simd、lib (x86)、-xvector=lib(SPARC、Solaris)和 -xvector=simd (Linux)。

交互

在装入步骤中,编译器包含 libmvec 库。

如果使用单独的命令进行编译和链接,应确保在链接 CC 命令中使用 -xvector。有关在编译时和链接时都必须指定的选项的完整列表,请参见3.3.3 编译时选项和链接时选项