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

A.2.181 –xtarget=t

为指令集和优化指定目标平台

通过为编译器提供目标计算机硬件的精确描述,某些程序的性能可得到提高。当程序性能很重要时,目标硬件的正确指定是非常重要的。在较新的 SPARC 处理器上运行时,尤其是这样。不过,对大多数程序和较旧的 SPARC 处理器来讲,性能的提高微不足道,因此指定 generic 就足够了。

t 的值必须是下列值之一:nativegenericnative64generic64system-name

-xtarget 的每个特定值都会扩展到 -xarch-xchip-xcache 选项值的特定集合。使用 -xdryrun 选项可在运行的系统上确定 -xtarget=native 的扩展。

例如,-xtarget=ultraT2 等效于 -xarch=sparcvis2 -xchip=ultraT2-xcache=8/16/4:4096/64/16


注 –

-xtarget 在特定主机平台上的扩展在该平台上编译时扩展到的 -xarch-xchip-xcache 设置可能与 -xtarget=native 不同。


A.2.181.1 -xtarget 值(按平台)

本节按平台提供 -xtarget 值的说明。下表列出了所有平台的 -xtarget 值。

表 A–47 -xtarget 值(所有平台)

值 

含义  

native

在主机系统上获取最佳性能。编译器生成为主机系统优化的代码。它决定了运行编译器的计算机的可用架构、芯片和缓存属性。 

native64

在主机系统上获取 64 位二进制目标文件的最佳性能。编译器生成为主机系统优化的 64 位二进制目标文件。它决定了运行编译器的计算机的可用 64 位体系结构、芯片和缓存属性。 

generic

这是缺省值。获取通用体系结构、芯片和高速缓存的最佳性能。 

generic64

为了在大多数 64 位平台体系结构上获得 64 位二进制目标文件的最佳性能而设置参数。 

system-name

获取指定平台的最佳性能。  

从以下代表您所面向的实际系统的列表中选择系统名称: 

-xtarget 值(SPARC 平台)

在 SPARC 还是 UltraSPARC V9 上针对 64 位 Solaris 软件进行编译,是由 -m64 选项指示。如果为 -xtarget 指定 native64generic64 以外的标志,则还必须如下所示指定 -m64 选项:-xtarget=ultra ... -m64,否则编译器将使用 32 位内存模型。

表 A–48 SPARC 体系结构上的 -xtarget 扩展

-xtarget=  

-xarch  

-xchip  

-xcache  

generic

generic

generic

generic

ultra

v8plusa

ultra

16/32/1:512/64/1

ultra1/140

v8plusa

ultra

16/32/1:512/64/1

ultra1/170

v8plusa

ultra

16/32/1:512/64/1

ultra1/200

v8plusa

ultra

16/32/1:512/64/1

ultra2

v8plusa

ultra2

16/32/1:512/64/1

ultra2/1170

v8plusa

ultra

16/32/1:512/64/1

ultra2/1200

v8plusa

ultra

16/32/1:1024/64/1

ultra2/1300

v8plusa

ultra2

16/32/1:2048/64/1

ultra2/2170

v8plusa

ultra

16/32/1:512/64/1

ultra2/2200

v8plusa

ultra

16/32/1:1024/64/1

ultra2/2300

v8plusa

ultra2

16/32/1:2048/64/1

ultra2e

v8plusa

ultra2e

16/32/1:256/64/4

ultra2i

v8plusa

ultra2i

16/32/1:512/64/1

ultra3

sparcvis2

ultra3

64/32/4:8192/512/1

ultra3cu

sparcvis2

ultra3cu

64/32/4:8192/512/2

ultra3i

sparcvis2

ultra3i

64/32/4:1024/64/4

ultra4

sparcvis2

ultra4

64/32/4:8192/128/2

ultra4plus

sparcvis2

ultra4plus

64/32/4:2048/64/4:32768/64/4

ultraT1

sparcvis2

ultraT1

8/16/4/4:3072/64/12/32

ultraT2

sparc

ultraT2

8/16/4:4096/64/16

ultraT2plus

sparcvis2

ultraT2plus

8/16/4:4096/64/16

ultraT3

sparcvis3

ultraT3

8/16/4:6144/64/24

sparc64vi

sparcfmaf

sparc64vi

128/64/2:5120/64/10

sparc64vii

sparcima

sparc64vii

64/64/2:5120/256/10

有关 UltraSPARC IVplus、UltraSPARC T1 和 UltraSPARC T2 芯片的缓存属性的更多信息,请参见A.2.113 –xcache=c

-xtarget 值(x86 平台)

在 64 位 x86 平台上针对 64 位 Solaris 软件进行编译是由 -m64 选项指示的。如果为 -xtarget 指定 native64generic64 以外的标志,则还必须如下所示指定 -m64 选项:-xtarget=opteron ... -m64,否则编译器将使用 32 位内存模型。

表 A–49 -xtarget 值(x86 平台)

-xtarget=  

-xarch  

-xchip  

-xcache  

generic

generic

generic

generic

opteron

sse2

opteron

64/64/2:1024/64/16

pentium

386

pentium

generic

pentium_pro

pentium_pro

pentium_pro

generic

pentium3

sse

pentium3

16/32/4:256/32/4

pentium4

sse2

pentium4

8/64/4:256/128/8

nehalem

sse4_2

nehalem

32/64/8:256/64/8: 8192/64/16

penryn

sse4_1

penryn

2/64/8:4096/64/16

woodcrest

ssse3

core2

32/64/8:4096/64/16

barcelona

amdsse4a

amdfam10

64/64/2:512/64/16

缺省值

在 SPARC 和 x86 设备上,如果未指定 –xtarget,则假定 –xtarget=generic

扩展

–xtarget 选项是一个宏,使用它可以快捷地指定可在从市场上购买的平台上使用的 -xarch–xchip–xcache 组合。–xtarget 的唯一含义在其扩展中。

示例

-xtarget=sun4/15 表示 -xarch=v8a -xchip=micro -xcache=2/16/1

交互

针对 SPARC V9 体系结构的编译用 -xarch=v9|v9a|v9b 选项指示。不必设置 –xtarget=ultraultra2,而且这也不够。如果指定了 -xtarget,则必须在 -xtarget 后面使用 –xarch=v9v9av9b 选项。例如:


-xarch=v9 -xtarget=ultra

扩展到以下选项,并将 -xarch 值恢复为 v8


-xarch=v9 -xarch=v8 -xchip=ultra -xcache=16/32/1:512/64/1

正确的方法是在 -xtarget 后面指定 -xarch。例如:


–xtarget=ultra -xarch=v9

警告

在不同的步骤中进行编译和链接时,必须在编译步骤和链接步骤中使用相同的 -xtarget 设置。