ストリーミング SIMD 拡張命令を使用するその他の組み込み関数

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

各組み込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。R、R0、R1、R2、R3 は、結果が配置されるレジスターを表します。

次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。

組み込み関数名 操作 対応する SSE
命令
_mm_shuffle_ps シャッフル SHUFPS
_mm_unpackhi_ps 上位の値のアンパック UNPCKHPS
_mm_unpacklo_ps 下位の値のアンパック UNPCKLPS
_mm_move_ss 最下位ワードを設定し、上位 3 つの値はそのまま渡す MOVSS
_mm_movehl_ps 上位から下位への移動 MOVHLPS
_mm_movelh_ps 下位から上位への移動 MOVLHPS
_mm_movemask_ps 4 ビット・マスクの作成 MOVMSKPS

 

__m128 _mm_shuffle_ps(__m128 a, __m128 b, unsigned int imm8)

マスク imm8 に基づいて、ab から 4 つの単精度浮動小数点値を選択します。マスクは即値でなければなりません。シャッフルのセマンティクスについては、「ストリーミング SIMD 拡張命令を使用してシャッフルを行うマクロ関数」を参照してください。

 

__m128 _mm_unpackhi_ps(__m128 a, __m128 b)

ab から上位 2 つの単精度浮動小数点値を選択し、インターリーブ (交互に配置) します。

R0 R1 R2 R3
a2 b2 a3 b3

 

__m128 _mm_unpacklo_ps(__m128 a, __m128 b)

ab から下位 2 つの単精度浮動小数点値を選択し、インターリーブします。

R0 R1 R2 R3
a0 b0 a1 b1

 

__m128 _mm_move_ss( __m128 a, __m128 b)

最下位ワードを、b の単精度浮動小数点値に設定します。上位 3 つの単精度浮動小数点値は a からそのまま渡されます。

R0 R1 R2 R3
b0 a1 a2 a3

 

__m128 _mm_movehl_ps(__m128 a, __m128 b)

b の上位 2 つの単精度浮動小数点値を、結果の下位 2 つの単精度浮動小数点値に移動します。a の上位 2 つの単精度浮動小数点値は、そのまま結果に渡されます。

R0 R1 R2 R3
b2 b3 a2 a3

 

__m128 _mm_movelh_ps(__m128 a, __m128 b)

b の下位 2 つの単精度浮動小数点値を、結果の上位 2 つの単精度浮動小数点値に移動します。a の下位 2 つの単精度浮動小数点値は、そのまま結果に渡されます。

R0 R1 R2 R3
a0 a1 b0 b1

 

int _mm_movemask_ps(__m128 a)

4 つの単精度浮動小数点値の最上位ビットを使用して、4 ビット・マスクを作成します。

R
sign(a3)<<3 | sign(a2)<<2 | sign(a1)<<1 | sign(a0)