その他の組み込み関数

インテル® ストリーミング 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)