ストリーミング SIMD 拡張命令 2 の整数比較操作

ストリーミング SIMD 拡張命令 2 (SSE2) に対応した比較演算組み込み関数とその説明を下表に示します。

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

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

SSE2 の組み込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。

組み込み関数名 操作 命令
_mm_cmpeq_epi8 等しい PCMPEQB
_mm_cmpeq_epi16 等しい PCMPEQW
_mm_cmpeq_epi32 等しい PCMPEQD
_mm_cmpgt_epi8 より大きい PCMPGTB
_mm_cmpgt_epi16 より大きい PCMPGTW
_mm_cmpgt_epi32 より大きい PCMPGTD
_mm_cmplt_epi8 より小さい PCMPGTBr
_mm_cmplt_epi16 より小さい PCMPGTWr
_mm_cmplt_epi32 より小さい PCMPGTDr

 

__m128i _mm_cmpeq_epi8(__m128i a, __m128i b)

a の 16 の符号付きまたは符号なし 8 ビット整数と、b の 16 の符号付きまたは符号なし 8 ビット整数が等しいかどうか比較します。

R0 R1 ... R15
(a0 == b0) ? 0xff : 0x0 (a1 == b1) ? 0xff : 0x0 ... (a15 == b15) ? 0xff : 0x0

 

__m128i _mm_cmpeq_epi16(__m128i a, __m128i b)

a の 8 つの符号付きまたは符号なし 16 ビット整数と、b の 8 つの符号付きまたは符号なし 16 ビット整数が等しいかどうか比較します。

R0 R1 ... R7
(a0 == b0) ? 0xffff : 0x0 (a1 == b1) ? 0xffff : 0x0 ... (a7 == b7) ? 0xffff : 0x0

 

__m128i _mm_cmpeq_epi32(__m128i a, __m128i b)

a の 4 つの符号付きまたは符号なし 32 ビット整数と、b の 4 つの符号付きまたは符号なし 32 ビット整数が等しいかどうか比較します。

R0 R1 R2 R3
(a0 == b0) ? 0xffffffff : 0x0 (a1 == b1) ? 0xffffffff : 0x0 (a2 == b2) ? 0xffffffff : 0x0 (a3 == b3) ? 0xffffffff : 0x0

 

__m128i _mm_cmpgt_epi8(__m128i a, __m128i b)

a の 16 の符号付き 8 ビット整数が、b の 16 の符号付き 8 ビット整数より大きいかどうか比較します。

R0 R1 ... R15
(a0 > b0) ? 0xff : 0x0 (a1 > b1) ? 0xff : 0x0 ... (a15 > b15) ? 0xff : 0x0

 

__m128i _mm_cmpgt_epi16(__m128i a, __m128i b)

a の 8 つの符号付き 16 ビット整数が、b の 8 つの符号付き 16 ビット整数より大きいかどうか比較します。

R0 R1 ... R7
(a0 > b0) ? 0xffff : 0x0 (a1 > b1) ? 0xffff : 0x0 ... (a7 > b7) ? 0xffff : 0x0

 

__m128i _mm_cmpgt_epi32(__m128i a, __m128i b)

a の 4 つの符号付き 32 ビット整数が、b の 4 つの符号付き 32 ビット整数より大きいかどうか比較します。

R0 R1 R2 R3
(a0 > b0) ? 0xffffffff : 0x0 (a1 > b1) ? 0xffffffff : 0x0 (a2 > b2) ? 0xffffffff : 0x0 (a3 > b3) ? 0xffffffff : 0x0

 

__m128i _mm_cmplt_epi8( __m128i a, __m128i b)

a の 16 の符号付き 8 ビット整数が、b の 16 の符号付き 8 ビット整数より小さいかどうか比較します。

R0 R1 ... R15
(a0 < b0) ? 0xff : 0x0 (a1 < b1) ? 0xff : 0x0 ... (a15 < b15) ? 0xff : 0x0

 

__m128i _mm_cmplt_epi16( __m128i a, __m128i b)

a の 8 つの符号付き 16 ビット整数が、b の 8 つの符号付き 16 ビット整数より小さいかどうか比較します。

R0 R1 ... R7
(a0 < b0) ? 0xffff : 0x0 (a1 < b1) ? 0xffff : 0x0 ... (a7 < b7) ? 0xffff : 0x0

 

__m128i _mm_cmplt_epi32( __m128i a, __m128i b)

a の 4 つの符号付き 32 ビット整数が、b の 4 つの符号付き 32 ビット整数より小さいかどうか比較します。

R0 R1 R2 R3
(a0 < b0) ? 0xffffffff : 0x0 (a1 < b1) ? 0xffffffff : 0x0 (a2 < b2) ? 0xffffffff : 0x0 (a3 < b3) ? 0xffffffff : 0x0