The following table details the performance of an executable that is compiled with a given-xarch option and then executed by various SPARC processors. The purpose of this table is to help you identify the best-xarch option for your executable given a particular target machine. Start by identifying the range of machines that are of interest to you and then consider the cost of maintaining multiple binaries versus the benefit of extracting the last iota of performance from newer machines.
Table B–12 The -xarch Matrix
Instruction Set of SPARC Machine: |
||||||
---|---|---|---|---|---|---|
V8a |
V8 |
V9 (Non-Sun Processor) |
V9 (Sun processor) |
V9b |
||
v8a |
N |
S |
S |
S |
S |
|
-xarch compilation option |
v8 |
PD |
N |
S |
S |
S |
v8plus |
NE |
NE |
N |
S |
S |
|
v8plusa |
NE |
NE |
** |
N |
S |
|
v8plusb |
NE |
NE |
** |
NE |
N |
|
v9 |
NE |
NE |
N |
S |
S |
|
v9a |
NE |
NE |
** |
N |
S |
|
v9b |
NE |
NE |
NE |
N |
||
** Note: An executable compiled with this instruction set may perform nominally on a V9 non-Sun processor chip or it may not execute at all. Check with your hardware vendor to make sure your executable can run on its target machine. |
N reflects Nominal performance. The program executes and takes full advantage of the processor’s instruction set.
S reflects Satisfactory performance. The program executes but may not exploit all available processor instructions.
PD reflects Performance Degradation. The program executes, but depending on the instructions used, may experience slight to significant performance degradation. The degradation occurs when instructions that are not implemented by the processor are emulated by the kernel.
NE means Not Executable. The program will not execute because the kernel does not emulate the instructions that are not implemented by the processor.
If you are compiling your executable with the v8plus or v8plusa instruction set, consider compiling with v9 or v9a instead. The v8plus and v8plusa options are provided so that programs can take advantage of some SPARC V9 and UltraSPARC features prior to the availability of Solaris 8 software with its support for 64-bit programs. Programs compiled with the v8plus or v8plusa option are not portable to SPARC V8 or older machines. You can recompile such programs with v9 or v9a, respectively, to take full advantage of all the features of SPARC V9 and UltraSPARC. The V8+ Technical Specification white paper, part number 802-7447-10, is available through your Sun representative and explains the limitations of v8plus and v8plusa.
SPARC instruction set architectures V8 and V8a are binary compatible.
Object binary files (.o) compiled with v8plus and v8plusa can be linked and can execute together, but only on a SPARC V8plusa compatible platform.
Object binary files (.o) compiled with v8plus, v8plusa, and v8plusb can be linked and can execute together, but only on a SPARC V8plusb compatible platform.
-xarch values v9, v9a, and v9b are only available on UltraSPARC 64-bit Solaris operating systems.
Object binary files (.o) compiled with v9 and v9a can be linked and can execute together, but will run only on a SPARC V9a compatible platform.
Object binary files (.o) compiled with v9, v9a, and v9b can be linked and can execute together, but will run only on a SPARC V9b compatible platform.
For any particular choice, the generated executable may run much more slowly on earlier architectures. Also, although quad-precision (REAL*16 and long double) floating-point instructions are available in many of these instruction set architectures, the compiler does not use these instructions in the code it generates.
The following table gives details for each of the-xarch keywords on SPARC platforms.
Table B–13 The -xarch Flags for SPARC Platforms