インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
ほとんどの組込み関数名は、次の表記規則に従います。
_mm_<intrin_op>_<suffix>
次の表は、構文の各項目について説明したものです。
変数名を付加した数字は、パックされたオブジェクトの要素を示します。例えば、r0 は r の最下位ワードです。 一部の組込み関数は、2 つ以上の命令で実行するため、"複合組込み関数" と呼ばれます。
パックされた値は、右から左の順序で表現し、最下位の値がスカラー操作に使用されます。次の例について考えてみます。
double a[2] = {1.0, 2.0}; __m128d t = _mm_load_pd(a);
上の操作の結果は、次のそれぞれの操作と同じになります。
__m128d t = _mm_set_pd(2.0, 1.0); __m128d t = _mm_setr_pd(1.0, 2.0);
つまり、値 t を保持する xmm レジスターは、次のようになります。
"スカラー" 要素は 1. 0 です。一部の組込み関数では、命令の性質上、引数として即値 (定数整数) を指定しなければなりません。