インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
インテル® MMX® 命令では、次の機能を使用します。
新しいレジスター - 最大 128 ビットのパックドデータの最適な SIMD (single-instruction multiple data) 処理が可能です。
新しいデータ型 - 最大 16 要素のデータを 1 つのレジスターにパックできます。
インテル® MMX® 命令は、8 個の 64 ビット・レジスター (mm0 ~ mm7) を使用します。これらのレジスターは、浮動小数点スタックレジスターに別名を付けて使用されます。
各レジスターは複数のデータ要素を保持できるため、プロセッサーは複数のデータ要素を同時に処理できます。このような処理方法は、SIMD (Single Instruction Multiple Data) 処理と呼ばれます。
新しい拡張命令セットのそれぞれの計算命令とデータ操作命令について、その命令を直接実装する C 組込み関数が用意されています。これにより、プログラマーは、レジスターの管理とアセンブリー言語のプログラミングを行う必要がなくなります。また、コンパイラーは、命令のスケジュールを最適化して、実行ファイルの処理速度を上げることができます。
組込み関数は、4 つの新しい C データ型をオペランドとして使用します。4 つのデータ型は、組込み関数に対するオペランドとして使用される新しいレジスターを表しています。
__m64 データ型は、インテル® MMX® テクノロジーの組込み関数に使用される MMX レジスターの内容を表します。__m64 データ型は、8 個の 8 ビット値、4 個の 16 ビット値、2 個の 32 ビット値、または 1 個の 64 ビット値を保持できます。
これらの新しいデータ型は、基本的な ANSI C データ型ではありません。このため、次のような使用上の制限があります。
データ型は、代入文の左辺または右辺で、戻り値または引数として使用してください。ほかの算術式 ("+"、"-" など) にこのデータ型を使用することはできません。
データ型は、バイト要素/構造にアクセスするための、共用体などの集合体のオブジェクトとして使用してください。
データ型は、本書で説明する組込み関数でのみ使用してください。