インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
ここでは、浮動小数点設定操作用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
ロード組込み関数と設定組込み関数はよく似ており、いずれも __m128d 型のデータを初期化します。しかし、設定組込み関数は、データを定数で初期化するための関数で、double 引数を使用します。ロード組込み関数は、メモリーからデータをロードする命令を模倣するための関数で、double ポインター引数を使用します。
一部の組込み関数は、2 つ以上の命令で実行するため、"複合組込み関数" と呼ばれます。
各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。各組込み関数の結果レジスターは R0 と R1 で示します。R0 および R1 はそれぞれ、結果レジスターの 1 つの部分を表します。
組込み関数名 |
演算 |
対応するインテル® SSE2 命令 |
---|---|---|
_mm_set_sd |
下位の倍精度浮動小数点値を w に設定し、上位の倍精度浮動小数点値を 0 に設定する |
複合 |
_mm_set1_pd |
2 つの倍精度浮動小数点値を w に設定します。 |
複合 |
_mm_set_pd |
下位の倍精度浮動小数点値を x に設定し、上位の倍精度浮動小数点値を w に設定する |
複合 |
_mm_setr_pd |
下位の倍精度浮動小数点値を w に設定し、上位の倍精度浮動小数点値を x に設定する |
複合 |
_mm_setzero_pd |
2 つの倍精度浮動小数点値を 0 に設定する |
XORPD |
_mm_move_sd |
下位の倍精度浮動小数点値を、b の下位の倍精度浮動小数点値に設定します。 |
MOVSD |
__m128d _mm_set_sd(double w);
下位の倍精度浮動小数点値を w に設定し、上位の倍精度浮動小数点値を 0 に設定します。
R0 |
R1 |
---|---|
w |
0.0 |
__m128d _mm_set1_pd(double w);
2 つの倍精度浮動小数点値を w に設定します。
R0 |
R1 |
---|---|
w |
w |
__m128d _mm_set_pd(double w, double x);
下位の倍精度浮動小数点値を x に設定し、上位の倍精度浮動小数点値を w に設定します。
R0 |
R1 |
---|---|
x |
w |
__m128d _mm_setr_pd(double w, double x);
下位の倍精度浮動小数点値を w に設定し、上位の倍精度浮動小数点値を x に設定します。r0 := w r1 := x
R0 |
R1 |
---|---|
w |
x |
__m128d _mm_setzero_pd(void);
2 つの倍精度浮動小数点値を 0 に設定します。
R0 |
R1 |
---|---|
0.0 |
0.0 |
__m128d _mm_move_sd( __m128d a, __m128d b);
下位の倍精度浮動小数点値を、b の下位の倍精度浮動小数点値に設定します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
b0 |
a1 |