ストリーミング SIMD 拡張命令 (SSE) の組み込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。
次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。
各組み込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組み込み関数ごとに R0 から R3 までを使用して示します。結果レジスターの 4 つの 32 ビット部分を、R0、R1、R2、および R3 とそれぞれ表します。
組み込み関数名 | 操作 | 対応する SSE 命令 |
---|---|---|
_mm_loadh_pi | 上位の値のロード | MOVHPS reg, mem |
_mm_loadl_pi | 下位の値のロード | MOVLPS reg, mem |
_mm_load_ss | 最下位の値をロードして、上位 3 つの値をクリアする | MOVSS |
_mm_load1_ps | 1 つの値を 4 ワードすべてにロードする | MOVSS + Shuffling |
_mm_load_ps | 4 つの値をロードする (アドレスのアライメントが合っていなければなりません) | MOVAPS |
_mm_loadu_ps | 4 つの値をロードする (アドレスのアライメントが合っている必要はありません) | MOVUPS |
_mm_loadr_ps | 4 つの値を逆順でロードする | MOVAPS + Shuffling |
__m128 _mm_loadh_pi(__m128 a, __m64 const *p)
アドレス p からロードされた 64 ビットのデータで、上位 2 つの単精度浮動小数点値を設定します。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 | a1 | *p0 | *p1 |
__m128 _mm_loadl_pi(__m128 a, __m64 const *p)
アドレス p からロードされた 64 ビットのデータで、下位 2 つの単精度浮動小数点値を設定します。上位 2 つの値は、a からそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
*p0 | *p1 | a2 | a3 |
__m128 _mm_load_ss(float * p )
単精度浮動小数点値を最下位ワードにロードし、上位 3 ワードをクリアします。
R0 | R1 | R2 | R3 |
---|---|---|---|
*p | 0.0 | 0.0 | 0.0 |
__m128 _mm_load1_ps(float * p )
1 つの単精度浮動小数点値をロードして、その値を 4 ワードすべてにコピーします。
R0 | R1 | R2 | R3 |
---|---|---|---|
*p | *p | *p | *p |
__m128 _mm_load_ps(float * p )
4 つの単精度浮動小数点値をロードします。アドレスは 16 バイトにアライメントが合っていなければなりません。
R0 | R1 | R2 | R3 |
---|---|---|---|
p[0] | p[1] | p[2] | p[3] |
__m128 _mm_loadu_ps(float * p)
4 つの単精度浮動小数点値をロードします。アドレスは 16 バイトにアライメントが合っている必要はありません。
R0 | R1 | R2 | R3 |
---|---|---|---|
p[0] | p[1] | p[2] | p[3] |
__m128 _mm_loadr_ps(float * p)
4 つの単精度浮動小数点値を逆順でロードします。アドレスは 16 バイトにアライメントが合っていなければなりません。
R0 | R1 | R2 | R3 |
---|---|---|---|
p[3] | p[2] | p[1] | p[0] |