ロード操作用のインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) の組込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。
各組込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組込み関数ごとに R0 から R3 までを使用して示します。R0、R1、R2、および R3 はそれぞれ、結果レジスターの 4 つの 32 ビット部分を表します。
組込み関数名
|
演算子
|
対応するインテル® 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 ワードすべてにコピーします。
__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]
|