自動CPUディスパッチ(IA-32のみ)

-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拡張命令( iMの命令セットを含む)対応 Pentium III プロセッサ
-axW ストリーミングSIMD拡張命令2( iM、および K の命令セットを含む)対応 Pentium 4 およびインテル® Xeon™ プロセッサ

下記のコンパイルは、次のような1つの実行ファイルを生成します。

prompt>icc -axKW prog.c