インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
ここでは、浮動小数点ストア操作用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
ストア組込み関数は、初期化したデータを、指定したアドレスに割り当てます。
各組込み関数の詳細には、戻り値を説明した表が含まれています。dp[n] は、結果の要素 n へのアクセスを示します。
組込み関数名 |
演算 |
対応するインテル® SSE2 命令 |
---|---|---|
_mm_stream_pd |
ストア |
MOVNTPD |
_mm_store_sd |
ストア |
MOVSD |
_mm_store1_pd |
ストア |
MOVAPD + シャッフル |
_mm_store_pd |
ストア |
MOVAPD |
_mm_storeu_pd |
ストア |
MOVUPD |
_mm_storer_pd |
ストア |
MOVAPD + シャッフル |
_mm_storeh_pd |
ストア |
MOVHPD |
_mm_storel_pd |
ストア |
MOVLPD |
void _mm_store_sd(double *dp, __m128d a);
a の下位の倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなくてもかまいません。
*dp |
---|
a0 |
void _mm_store1_pd(double *dp, __m128d a);
a の下位の倍精度浮動小数点値を 2 回ストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。
dp[0] |
dp[1] |
---|---|
a0 |
a0 |
void _mm_store_pd(double *dp, __m128d a);
2 つの倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。
dp[0] |
dp[1] |
---|---|
a0 |
a1 |
void _mm_storeu_pd(double *dp, __m128d a);
2 つの倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなくてもかまいません。
dp[0] |
dp[1] |
---|---|
a0 |
a1 |
void _mm_storer_pd(double *dp, __m128d a);
2 つの倍精度浮動小数点値を逆順でストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。
dp[0] |
dp[1] |
---|---|
a1 |
a0 |
void _mm_storeh_pd(double *dp, __m128d a);
a の上位の倍精度浮動小数点値をストアします。
*dp |
---|
a1 |
void _mm_storel_pd(double *dp, __m128d a);
a の下位の倍精度浮動小数点値をストアします。
*dp |
---|
a0 |