ストリーミング SIMD 拡張命令 2 のその他の操作

ストリーミング SIMD 拡張命令 2 の組込み関数のプロトタイプは、ヘッダファイル emmintrin.h 内にあります。

__m128d _mm_unpackhi_pd(__m128d a, __m128d b)

(UNPCKHPD を使用) ab の上位の倍精度浮動小数点値をインターリーブ (交互に配置) します。
r0 := a1
r1 := b1

__m128d _mm_unpacklo_pd(__m128d a, __m128d b)

(UNPCKLPD を使用) ab の下位の倍精度浮動小数点値をインターリーブします。
r0 := a0
r1 := b0

int _mm_movemask_pd(__m128d a)

(MOVMSKPD を使用) a の 2 つの倍精度浮動小数点値の符号ビットから、2 ビットマスクを作成します。
r := sign(a1) << 1 | sign(a0)

__m128d _mm_shuffle_pd(__m128d a, __m128d b, int i)

(SHUFPD を使用) マスク i に基づいて、ab から 2 つの倍精度浮動小数点値を選択します。マスクは即値でなければなりません。シャッフルのセマンティクスについては、「シャッフルを行うマクロ関数」を参照してください。