インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
次の表に、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) のその他の組込み関数のリストを示します。表の後に、各組込み関数の説明を示します。
インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
組込み関数 |
演算子 |
対応するインテル® SSE2 命令 |
---|---|---|
_mm_packs_epi16 |
パックド飽和 |
PACKSSWB |
_mm_packs_epi32 |
パックド飽和 |
PACKSSDW |
_mm_packus_epi16 |
パックド飽和 |
PACKUSWB |
_mm_extract_epi16 |
抽出 |
PEXTRW |
_mm_insert_epi16 |
挿入 |
PINSRW |
_mm_movemask_epi8 |
マスクの作成 |
PMOVMSKB |
_mm_shuffle_epi32 |
シャッフル |
PSHUFD |
_mm_shufflehi_epi16 |
シャッフル |
PSHUFHW |
_mm_shufflelo_epi16 |
シャッフル |
PSHUFLW |
_mm_unpackhi_epi8 |
インターリーブ |
PUNPCKHBW |
_mm_unpackhi_epi16 |
インターリーブ |
PUNPCKHWD |
_mm_unpackhi_epi32 |
インターリーブ |
PUNPCKHDQ |
_mm_unpackhi_epi64 |
インターリーブ |
PUNPCKHQDQ |
_mm_unpacklo_epi8 |
インターリーブ |
PUNPCKLBW |
_mm_unpacklo_epi16 |
インターリーブ |
PUNPCKLWD |
_mm_unpacklo_epi32 |
インターリーブ |
PUNPCKLDQ |
_mm_unpacklo_epi64 |
インターリーブ |
PUNPCKLQDQ |
_mm_movepi64_pi64 |
移動 |
MOVDQ2Q |
_mm_movpi64_epi64 |
移動 |
MOVDQ2Q |
_mm_move_epi64 |
移動 |
MOVQ |
_mm_unpackhi_pd |
インターリーブ |
UNPCKHPD |
_mm_unpacklo_pd |
インターリーブ |
UNPCKLPD |
_mm_movemask_pd |
マスクの作成 |
MOVMSKPD |
_mm_shuffle_pd |
値の選択 |
SHUFPD |
int _mm_extract_epi16(__m128i a, int imm)
選択された符号付きまたは符号なし 16 ビット整数を a から抽出して、0 で拡張します。 セレクター imm は、即値でなければなりません。
__m128i _mm_insert_epi16(__m128i a, int b, int imm)
b の最下位 16 ビットを、a の選択された 16 ビット整数に挿入します。 セレクター imm は、即値でなければなりません。
int _mm_movemask_epi8(__m128i a)
a の 16 の符号付きまたは符号なし 8 ビット整数の最上位ビットを使用して 16 ビット・マスクを作成し、上位ビットを 0 で拡張します。
__m128i _mm_shuffle_epi32(__m128i a, int imm)
imm の指定に従って、a の 4 つの符号付きまたは符号なし 32 ビット整数をシャッフルします。 シャッフル値 imm は、即値でなければなりません。 シャッフルのセマンティクスについては、このセクションの最後の「シャッフルを行うマクロ関数」を参照してください。
__m128i _mm_shufflehi_epi16(__m128i a, int imm)
imm の指定に従って、a の上位 4 つの符号付きまたは符号なし 16 ビット整数をシャッフルします。 シャッフル値 imm は、即値でなければなりません。 シャッフルのセマンティクスについては、このセクションの最後の「シャッフルを行うマクロ関数」を参照してください。
__m128i _mm_shufflelo_epi16(__m128i a, int imm)
imm の指定に従って、a の下位 4 つの符号付きまたは符号なし 16 ビット整数をシャッフルします。 シャッフル値 imm は、即値でなければなりません。 シャッフルのセマンティクスについては、このセクションの最後の「シャッフルを行うマクロ関数」を参照してください。
__m128i _mm_unpackhi_epi8(__m128i a, __m128i b)
a の上位 8 つの符号付きまたは符号なし 8 ビット整数と、b の上位 8 つの符号付きまたは符号なし 8 ビット整数をインターリーブ (交互に配置) します。
__m128i _mm_unpackhi_epi16(__m128i a, __m128i b)
a の上位 4 つの符号付きまたは符号なし 16 ビット整数と、b の上位 4 つの符号付きまたは符号なし 16 ビット整数をインターリーブします。
__m128i _mm_unpackhi_epi32(__m128i a, __m128i b)
a の上位 2 つの符号付きまたは符号なし 32 ビット整数と、b の上位 2 つの符号付きまたは符号なし 32 ビット整数をインターリーブします。
__m128i _mm_unpackhi_epi64(__m128i a, __m128i b)
a の上位の符号付きまたは符号なし 64 ビット整数と、b の上位の符号付きまたは符号なし 64 ビット整数をインターリーブします。
__m128i _mm_unpacklo_epi8(__m128i a, __m128i b)
a の下位 8 つの符号付きまたは符号なし 8 ビット整数と、b の下位 8 つの符号付きまたは符号なし 8 ビット整数をインターリーブします。
__m128i _mm_unpacklo_epi16(__m128i a, __m128i b)
a の下位 4 つの符号付きまたは符号なし 16 ビット整数と、b の下位 4 つの符号付きまたは符号なし 16 ビット整数をインターリーブします。
__m128i _mm_unpacklo_epi32(__m128i a, __m128i b)
a の下位 2 つの符号付きまたは符号なし 32 ビット整数と、b の下位 2 つの符号付きまたは符号なし 32 ビット整数をインターリーブします。
__m128i _mm_unpacklo_epi64(__m128i a, __m128i b)
a の下位の符号付きまたは符号なし 64 ビット整数と、b の下位の符号付きまたは符号なし 64 ビット整数をインターリーブします。
__m128d _mm_shuffle_pd(__m128d a, __m128d b, int i)
マスク i に基づいて、a と b から 2 つの倍精度浮動小数点値を選択します。 マスクは即値でなければなりません。シャッフルのセマンティクスについては、「シャッフルを行うマクロ関数」を参照してください。