C ユーザーズガイド

-xarch=a

コンパイラが使用できる命令セットを指定します。

a には、generic、 v7、 v8a、 v8、 v8plus、 v8plusav9、v9a、386、pentium_pro のいずれか 1 つを指定しなければなりません。

このオプションは単独で使用することができますが、本来は -xtarget オプションの展開の一部です。主に、-xtarget オプションで取得した値を上書きする際に使用されます。

このオプションは、指定したアーキテクチャの命令だけが生成されるように限定して、特定の命令セットだけが生成されるようにします。このオプションで生成された特定のセットが必ず使用されるとは限りませんが、最適化を行う際には、通常そのセットが使用されます。

このオプションを最適化と併せて使用する場合、適切なアーキテクチャを選択すると、指定のアーキテクチャ上での実行パフォーマンスを向上させることができます。ただし、不適切なアーキテクチャを選択すると、パフォーマンスを大幅に低下させることがあります。

v7、v8、v8a はバイナリ互換性があります。v8plusv8plusa はバイナリ互換ですが、他のアーキテクチャに対しては上位互換性はありますが、下位互換性はありません。

古いアーキテクチャでは、実行速度が遅くなることがあります。

v9v9a は、それぞれバイナリ互換性があります。しかし、以前のアーキテクチャとの下位互換性はなく、Solaris 7 上だけで利用できます。

表 2-4 -xarch の値

意味 

generic

ほとんどの x86、SPARC の各アーキテクチャで良好なパフォーマンスが得られます。パフォーマンスの著しい低下が生じることはありません。 

これがデフォルトです。このオプションは、ほとんどの x86、SPARC プロセッサで良好なパフォーマンスを提供し、どの SPARC プロセッサでも著しいパフォーマンス低下が生じない最適な命令セットを使用します。これらの最高のタイミング特性は、新しいリリースごとに、必要に応じて調整されます。 

v7

命令セットを V7 アーキテクチャに限定します。 

このオプションは V7 アーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用します。ただし、4 倍精度の浮動小数点命令は使用しません。 

これは V8 アーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用するのと同義ですが、以下の命令は使用しません。 

4 倍精度の浮動小数点命令 

整数の mul および div 命令

fsmuld 命令

例: SPARCstation 1、SPARCstation 2 

v8a

命令セットを V8 アーキテクチャの V8a バージョンに限定します。 

定義では V8a は基本的に V8 アーキテクチャのことですが、以下の命令は使用しません。 

4 倍精度の浮動小数点命令 

fsmuld 命令

このオプションは V8 のアーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用します。 

例: MicroSPARC(TM) チップのアーキテクチャにもとづくマシン 

v8

命令セットを V8 アーキテクチャに限定します。 

このオプションは V8 アーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用しますが、4 倍精度の浮動小数点命令は使用しません。 

例: SPARCstation 10 

v8plus

命令セットを V9 アーキテクチャの V8plus バージョンに限定します。 

定義では V8plus または V8+ は基本的に V9 アーキテクチャのことですが、以下の点が異なります。 

4 倍精度の浮動小数点命令を使用しない 

V8plus 仕様で定義される 32 ビットの部分集合に限定される 

VIS 命令を使用しない 

このオプションは V8plus のアーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用します。V8plus では、V9 の 64 ビットレジスタをもつシステムであっても 32 ビットのアドレス指定モードで動作しますが、ix および lx レジスタの上位 32 ビットを使用してプログラム結果に影響を及ぼすことはできません。

例: UltraSPARC(TM) チップのアーキテクチャにもとづくマシン 

-xarch=v8plus を指定すると、.o ファイルは V8plus のバイナリとみなされます。このバイナリは、V7 および V8 のマシンでは実行できません。

v8plusa

命令セットを V9 のアーキテクチャの V8plusa バージョンおよび Visual Instruction Set (VIS) のバージョン 1.0 に限定します。 

定義では V8plusa は V8plus アーキテクチャに加えて以下の命令を使用します。 

UltraSPARC 固有の命令 

VIS 命令 

このオプションは UltraSPARC アーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用します。ただし、V8plus 仕様で定義される 32 ビットの部分集合に限定されます。 

例: UltraSPARC チップのアーキテクチャにもとづくマシン 

-xarch=v8plusa を使用するときも、.o ファイルは Sun 固有の V8plus バイナリとみなされます。このバイナリは、V7 および V8 のマシンでは実行できません。

v9

命令セットを V9 アーキテクチャに限定します。生成される .o オブジェクトファイルは 64 ビット ELF 形式で、同じ形式のオブジェクトファイルとだけリンクできます。生成される実行可能ファイルは、64 ビットカーネルを持つ 64 ビット Solaris 7 が動作している 64 ビット SPARC プロセッサ上だけで実行できます。このオプションでコンパイルすると、V9 SPARC アーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用します。ただし、4 倍精度の浮動小数点命令は使用しません。

Solaris 7 より前の バージョンの SunOS では、このオプションは使用できません。 

v9a

命令セットを SPARC-V9 アーキテクチャに限定し、Visual Instruction Set (VIS) と UltraSPARC プロセッサ固有の拡張を追加します。生成される .o オブジェクトファイルは 64 ビット ELF 形式で、同じ形式のオブジェクトファイルとだけリンクできます。生成される実行可能ファイルは、64 ビットカーネルを持つ 64 ビット Solaris 7 が動作している 64 ビット SPARC プロセッサ上だけで実行できます。このオプションでコンパイルすると、V9 UltraSPARC アーキテクチャでのパフォーマンスを良好にする最適な命令セットを使用します。ただし、4 倍精度の浮動小数点命令 (64 ビット Solaris 7 でのみ利用可能) は使用しません。

Solaris 7 より前の バージョンの SunOS では、このオプションは使用できません。 

386

命令セットを Intel x86 アーキテクチャのバージョンに限定します。 

pentium_pro

命令セットを Intel Pentium Pro アーキテクチャのバージョンに限定します。