Oracle Solaris Studio 12.2:C 用户指南

B.2.157 -xvector[= a]

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

a 可以为下列值:

表 B–43 -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

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

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