3.4.179 –xtarget=t
为指令集和优化指定目标平台。
t 必须是以下值之一: native、native64、generic、generic64 和 platform–name。
-xtarget 选项允许简便快捷地指定发生在实际平台上的 -xarch、-xchip 和 -xcache 组合。-xtarget 的唯一含义在其扩展中。
通过为编译器提供目标计算机硬件的精确描述,某些程序的性能可得到提高。当程序性能很重要时,目标硬件的正确指定是非常重要的。在较新的 SPARC 处理器上运行时,尤其是这样。不过,对大多数程序和较旧的 SPARC 处理器来讲,性能的提高微不足道,因此指定 generic 就足够了。
-xtarget 值的实际扩展可能会因发行版的不同而异。通过使用 -dryrun 标志,您始终可以确定编译器将使用的扩展:
demo% f95 -dryrun -xtarget=ultra4plus
### command line files and options (expanded):
### -dryrun -xarch=sparcvis
-xcache=64/32/4/1:2048/64/4/2:32768/64/4/2 -xchip=ultra4plus
请注意,针对特定名称平台的 —xtarget 扩展不得与同一平台上的 —xtarget=native 相同。
3.4.179.1 通用平台与本机平台
- native
-
优化主机平台(32 位)的性能。
扩展至 —m32 —xarch=native —xchip=native —xcache=native
- native64
-
已过时。改用 —xtarget=native —m64。
- generic
-
为大多数 32 位平台获得最佳性能。
这是缺省值并可扩展至:-m32 -xarch=generic -xchip=generic -xcache=generic
- generic64
-
已过时。改用 -xtarget=generic -m64。
- platform–name
-
获取以下列出的指定平台的最佳性能。
3.4.179.2 SPARC 平台
下表列出了编译器接受的常用系统平台的名称。
表 3-21 常用的 -xtarget 系统平台的扩展
|
|
|
|
sparc64vi
|
sparcfmaf
|
sparc64vi
|
128/64/2:5120/64/10
|
sparc64vii
|
sparcima
|
sparc64vii
|
64/64/2:5120/256/10
|
sparc64viiplus
|
sparcima
|
sparc64viiplus
|
64/64/2:11264/256/11
|
sparc64x
|
sparcace
|
sparc64x
|
64/128/4/2:24576/128/24/32
|
sparc64xplus
|
sparcaceplus
|
sparc64xplus
|
64/128/4/2:24576/128/24/32
|
ultra
|
sparcvis
|
ultra
|
16/32/1:512/64/1
|
ultra1/140
|
sparcvis
|
ultra
|
16/32/1:512/64/1
|
ultra1/170
|
sparcvis
|
ultra
|
16/32/1:512/64/1
|
ultra1/200
|
sparcvis
|
ultra
|
16/32/1:512/64/1
|
ultra2
|
sparcvis
|
ultra2
|
16/32/1:512/64/1
|
ultra2/1170
|
sparcvis
|
ultra
|
16/32/1:512/64/1
|
ultra2/1200
|
sparcvis
|
ultra
|
16/32/1:1024/64/1
|
ultra2/1300
|
sparcvis
|
ultra2
|
16/32/1:2048/64/1
|
ultra2/2170
|
sparcvis
|
ultra
|
16/32/1:512/64/1
|
ultra2/2200
|
sparcvis
|
ultra
|
16/32/1:1024/64/1
|
ultra2/2300
|
sparcvis
|
ultra2
|
16/32/1:2048/64/1
|
ultra2e
|
sparcvis
|
ultra2e
|
16/32/1:256/64/4
|
ultra2i
|
sparcvis
|
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/1:2048/64/4/2:32768/64/4/2
|
ultraT1
|
sparc
|
ultraT1
|
8/16/4/4:3072/64/12/32
|
ultraT2
|
sparcvis2
|
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
|
T3
|
sparcvis3
|
T3
|
8/16/4:6144/64/24
|
T4
|
sparc4
|
T4
|
16/32/4:128/32/8:4096/64/16
|
T5
|
sparc4
|
T5
|
16/32/4/8:128/32/8/8:8192/64/16/128
|
M5
|
sparc4
|
M5
|
16/32/4/8:128/32/8/8:49152/64/12/48
|
|
注 -
以下 SPARC -xtarget 值已过时,在将来的发行版中可能会删除:ultra、ultra1/140、ultra1/170、ultra1/200、ultra2、ultra2e、ultra2i、ultra2/1170、
ultra2/1200、ultra2/1300、ultra2/2170、ultra2/2200、ultra2/2300、ultra3、ultra3cu、
ultra3i、ultra4 和 ultra4plus。
-m64 标志表示针对启用了 64 位的平台上的 64 位 Solaris OS 进行编译。如果指定了 -xtarget,则 -m64 必须出现在 -xtarget 标志之后,如下所示:
-xtarget=ultra2 ... -m64
否则,将使用缺省的 32 位内存模型。
3.4.179.3 X86 平台
下表显示了针对 x86 系统的有效 -xtarget 平台名称及其扩展。
表 3-22 -xtarget 值(x86 平台)
|
|
|
|
|
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
|
opteron
|
sse2a
|
opteron
|
64/64/2:1024/64/16
|
woodcrest
|
ssse3
|
core2
|
32/64/8:4096/64/16
|
barcelona
|
amdsse4a
|
amdfam10
|
64/64/2:512/64/16
|
penryn
|
sse4_1
|
penryn
|
2/64/8:6144/64/24
|
nehalem
|
sse4_2
|
nehalem
|
32/64/8:256/64/8:8192/64/16
|
westmere
|
aes
|
westmere
|
32/64/8:256/64/8:30720/64/24
|
sandybridge
|
avx
|
sandybridge
|
32/64/8/2:256/64/8/2:20480/64/20/16
|
ivybridge
|
avx_i
|
ivybridge
|
32/64/8/2:256/64/8/2:20480/64/20/16
|
haswell
|
avx2
|
haswell
|
32/64/8/2:256/64/8/2:20480/64/20/16
|
|
-m64 标志表示针对启用了 64 位的 x86 平台上的 64 位 Solaris OS 进行编译。例如,使用 -xtarget=opteron 进行编译是不必要的或不够的。如果指定了 -xtarget,则 -m64 选项必须出现在 -xtarget 标志之后,如下所示:
-xtarget=opteron -m64
否则,编译将为 32 位 x86。