インテル® ストリーミング 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 に基づいて、a と b から 4 つの単精度浮動小数点値を選択します。
マスクは即値でなければなりません。シャッフルのセマンティクスについては、「シャッフル操作を行うマクロ関数」を参照してください。
__m128 _mm_unpackhi_ps(__m128 a, __m128 b)
a と b から上位 2 つの単精度浮動小数点値を選択し、インターリーブ (交互に配置) します。
__m128 _mm_unpacklo_ps(__m128 a, __m128 b)
a と b から下位 2 つの単精度浮動小数点値を選択し、インターリーブします。
__m128 _mm_move_ss( __m128 a, __m128 b)
最下位ワードを、b の単精度浮動小数点値に設定します。
上位 3 つの単精度浮動小数点値は a からそのまま渡されます。
__m128 _mm_movehl_ps(__m128 a, __m128 b)
b の上位 2 つの単精度浮動小数点値を、結果の下位 2 つの単精度浮動小数点値に移動します。
a の上位 2 つの単精度浮動小数点値は、そのまま結果に渡されます。
__m128 _mm_movelh_ps(__m128 a, __m128 b)
b の下位 2 つの単精度浮動小数点値を、結果の上位 2 つの単精度浮動小数点値に移動します。
a の下位 2 つの単精度浮動小数点値は、そのまま結果に渡されます。
int _mm_movemask_ps(__m128 a)
4 つの単精度浮動小数点値の最上位ビットを使用して、4 ビット・マスクを作成します。
R
|
sign(a3)<<3 | sign(a2)<<2 | sign(a1)<<1 | sign(a0)
|