-ax{i|M|K|W} オプションは、コンパイラに対して特定のプロセッサごとに命令を使い分ける別々の関数を生成する機会があるかどうかの確認を求めます。(次の表を参照してください。)そしてコンパイラはこのような機会を見つけると、プロセッサ固有の関数バージョンを生成することがパフォーマンスの向上につながるかをチェックします。パフォーマンスが向上すると判明した場合、コンパイラはプロセッサ固有の関数バージョンと汎用バージョンの両方を生成します。汎用バージョンはどのIA-32プロセッサ上でも実行できます。
プログラムの実行時に、プログラムが現在実行されているプロセッサに応じて、この 2つのバージョンのどちらを実行するか選択されます。このため、プログラムはそれ以前のプロセッサでも正常に動作しながら、新しいプロセッサにおいてパフォーマンスの大幅な向上を実現できます。
ただし、-ax{i|M|K|W}を使用した場合には、次のような欠点があります。
注
このオプションでコンパイルするアプリケーションは、どのIA-32プロセッサ上でも実行できます。ただし、このようなコンパイル処理は、-xオプションを使用したコンパイル処理時に加えられる専用コードと同様の制約を受けます。
オプション | 最適化の対象 |
---|---|
-axi | (CMOV命令、FCMOV命令、およびFCOMI命令を使用する)インテル® Pentium® Pro プロセッサと Pentium II プロセッサ |
-axM | MMX® テクノロジ Pentium プロセッサ |
-axK | ストリーミングSIMD拡張命令( i とMの命令セットを含む)対応 Pentium III プロセッサ |
-axW | ストリーミングSIMD拡張命令2( i、M、および K の命令セットを含む)対応 Pentium 4 およびインテル® Xeon™ プロセッサ |
下記のコンパイルは、次のような1つの実行ファイルを生成します。
あらゆるIA-32プロセッサ上で使用できる汎用バージョン。
パフォーマンスが向上する場合、Pentium III プロセッサ用に最適化されたバージョン。
パフォーマンスが向上する場合、Pentium 4 プロセッサおよびインテル Xeon プロセッサ用に最適化されたバージョン。
prompt>icc -axKW prog.c