Sun Studio 12:Fortran 用户指南

3.4.113 –xarch=isa

指定指令集体系结构 (instruction set architecture, ISA)。

-xarch 关键字 isa 接受的体系结构如表 3–11 所示:

表 3–11 –xarch ISA 关键字

平台 

有效的 -xarch 关键字

SPARC 

genericgeneric64nativenative64sparcsparcvissparcvis2sparcfmafv9v9av9b

x86 

genericnative386pentium_prossesse2amd64pentium_proasseasse2aamd64asse3

请注意,尽管 -xarch 可以单独使用,但它是 –xtarget 选项扩展的一部分,并且可用于覆盖由特定 -xtarget 选项设置的 -xarch 值。例如:

% f95 -xtarget=ultra2 -xarch=sparcfmaf ...

会覆盖由 -xtarget=ultra2 设置的 -xarch

通过只允许指定的指令集,此选项可将编译器生成的代码限定于指定指令集体系结构的指令。此选项不保证使用任何特定于目标的指令。

如果此选项与优化一起使用,则在指定的体系结构上,适当的选择可以为可执行文件提供良好性能。如果选择不当,则会导致二进制程序在预定的目标平台上无法执行。

请注意以下事项:

对于任何特定选择,生成的可执行文件在早期体系结构中运行时都会慢得多。此外,虽然在多数指令集体系结构中都可以使用四精度(REAL*16long double)浮点指令,但编译器不在它生成的代码中使用这些指令。

在 SPARC 平台上,未指定 -xarch 时的缺省值为 sparc;在 x86 平台上,则为 386

表 3–12 提供了有关 SPARC 平台上每个 -xarch 关键字的详细信息。

表 3–12 SPARC 平台的 -xarch

-xarch=

含义 (SPARC) 

generic

使用大多数处理器通用的指令集进行编译。

generic64

针对大多数的 64 位平台进行编译。

(仅适用于 Solaris)此选项与 -m64 -xarch=generic 等效,并与早先的发行版兼容。使用 -m64(而非 -xarch=generic64)指定 64 位编译

native

为了在此系统上获得良好性能而进行编译。

编译器为运行它的当前系统处理器选择适当的设置。这是 -fast 选项的缺省值。

native64

为了在此系统上获得 64 位模式下的良好性能而进行编译。

(仅适用于 Solaris)此选项与 -m64 -xarch=native 等效,并与早先的发行版兼容。

sparc

针对 SPARC–V9 ISA 进行编译。

针对 V9 ISA 进行编译,但不具备可视指令集 (Visual Instruction Set, VIS),也不具备特定于其他实现的 ISA 扩展。该选项在 V9 ISA 上使编译器生成高性能代码。 

sparcvis

针对具有 UltraSPARC 扩展的 SPARC–V9 ISA 进行编译。

针对 SPARC-V9 加可视指令集 (Visual Instruction Set, VIS) 版本 1.0 进行编译,并具有 UltraSPARC 扩展。该选项在 UltraSPARC 体系结构上使编译器生成高性能代码。 

sparcvis2

针对具有 UltraSPARC-III 扩展的 SPARC-V9 ISA 进行编译。

此选项允许编译器在具有 UltraSPARC III 扩展的 UltraSPARC 体系结构以及可视化指令集 (VIS) 2.0 版上生成目标代码。 

sparcfmaf

针对 SPARC-V9 ISA 的 sparcfmaf 版本进行编译。

允许编译器使用 SPARC-V9 指令集,加 UltraSPARC 扩展(包括可视指令集 (Visual Instruction Set, VIS) 版本 1.0)、UltraSPARC-III 扩展(包括可视指令集 (Visual Instruction Set, VIS) 版本 2.0)以及面向浮点乘加的 SPARC64 VI 扩展中的指令。 

注意,必须将 -xarch=sparcfmaf-fma=fused 以及某些优化级别结合使用,来使编译器尝试寻找机会自动使用乘加指令。

v9

-m64 -xarch=sparc 等效。传统的 make 程序的描述文件和脚本(使用 -xarch=v9 来获取 64 位内存模型)仅需使用 -m64

v9a

-m64 -xarch=sparcvis 等效,并与早前的发行版兼容。

v9b

-m64 -xarch=sparcvis2 等效,并与早期的发行版兼容。

表 3–13 详细介绍了 x86 平台上的每个 -xarch 关键字。在 x86 平台上,如果未指定 -xarch,则缺省值为 generic

表 3–13 x86 平台的 -xarch

-xarch=

含义 (x86) 

generic

为了在大多数 32 位 x86 平台上获得良好性能而进行编译。这是缺省值,与 -xarch=386 等效。

generic64

为了在大多数 64 位 x86 平台上获得良好性能而进行编译。它当前解释为 amd64

native

为了在此 x86 体系结构上获得良好性能而进行编译。使用最佳指令集以便在大多数 x86 处理器上获得良好性能。对于每个新发行版,“最佳”指令集的定义可能会有所调整(如果适用)。 

native64

为了在此 64 位 x86 体系结构上获得良好性能而进行编译。 

386

将指令集限制于 Intel 386/486 体系结构。 

pentium_pro

将指令集限制于 Pentium Pro 体系结构。 

pentium_proa

将 AMD 扩展(3DNow!、3DNow! 扩展和 MMX 扩展)添加到 32 位 Pentium Pro 体系结构中。 

sse

将 SSE 指令集添加到 pentium_pro 中。(参见下面的注释。)

ssea

将 AMD 扩展(3DNow!、3DNow! 扩展和 MMX 扩展)添加到 32 位 SSE 体系结构中。 

sse2

将 SSE2 指令集添加到 pentium_pro 中。(参见下面的注释。)

sse2a

将 AMD 扩展(3DNow!、3DNow! 扩展和 MMX 扩展)添加到 32 位 SSE2 体系结构中。 

sse3

向 SSE2 指令集中添加 SSE3 指令集。 

amd64

-m64 -xarch=sse2 等效(仅适用于 Solaris)。传统的 make 程序的描述文件和脚本(使用 -xarch=amd64 获取 64 位内存模式)仅需使用 -m64

amd64a

—m64 —xarch=sse2a 等效(仅适用于 Solaris)。

3.4.113.1 x86/x64 平台的特别注意事项:

当针对 x86 Solaris 平台进行编译时,有几项重要的注意事项。