インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このセクションでは、インテル® C++ コンパイラー内でストリーミング SIMD 拡張命令 (インテル® SSE) をサポートする、C++ 言語レベルの機能について説明します。これらの機能は、次の 2 種類に分類されます。
浮動小数点組込み関数 -- 倍精度浮動小数点データ型 (__m128d) に対する、算術演算、論理演算、比較、変換、メモリー操作、初期化を行う組込み関数について説明します。
整数組込み関数 -- 拡張精度整数データ型 (__m128i) に対する、算術演算、論理演算、比較、変換、メモリー操作、初期化を行う組込み関数について説明します。
次のプロセッサーでは、sse2mmx.h ヘッダーファイルを使用してください。
インテル® Pentium® III プロセッサー
インテル® Pentium® II プロセッサー
インテル® MMX® テクノロジー対応インテル® Pentium® プロセッサー
一部の組込み関数は、2 つ以上の命令で実行するため、"複合組込み関数" と呼ばれます。1 つの命令で実行する組込み関数は "単一組込み関数" と呼ばれます。
インテル® ストリーミング SSE2 拡張命令 (インテル® SSE) の組込み関数を使用してプログラムを作成する際は、インテル® SSE2 によって提供されるハードウェア機能についてよく理解している必要があります。特に、次の 3 つの点に注意してください。
_mm_loadr_pd や _mm_cmpgt_sd などの一部の組込み関数は、命令セットによって直接にはサポートされていません。これらの組込み関数は、プログラミング上の便宜のために用意されたものであり、実行時にはコストがかかります。
__m128d オブジェクトとしてロードまたはストアされるデータは、通常は 16 バイトにアライメントが合っていなければなりません。
一部の組込み関数は、命令の性質上、引数を即値で、すなわち定数整数 (リテラル) で指定する必要があります。
インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
IA-32 アーキテクチャー・ベースの組込み関数に対して 1 つのヘッダーファイル ia32intrin.h を使用することもできます。