インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス

その他の組込み関数

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

_mm_shuffle_ps

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

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

_mm_unpackhi_ps

__m128 _mm_unpackhi_ps(__m128 a, __m128 b);

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

R0

R1

R2

R3

a2

b2

a3

b3

_mm_unpacklo_ps

__m128 _mm_unpacklo_ps(__m128 a, __m128 b);

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

R0

R1

R2

R3

a0

b0

a1

b1

_mm_move_ss

__m128 _mm_move_ss( __m128 a, __m128 b);

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

R0

R1

R2

R3

b0

a1

a2

a3

_mm_movehl_ps

__m128 _mm_movehl_ps(__m128 a, __m128 b);

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

R0

R1

R2

R3

b2

b3

a2

a3

_mm_movelh_ps

__m128 _mm_movelh_ps(__m128 a, __m128 b);

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

R0

R1

R2

R3

a0

a1

b0

b1

_mm_movemask_ps

int _mm_movemask_ps(__m128 a);

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

R

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

関連情報