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

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

ストリーミングSIMD拡張命令2の組込み関数のプロトタイプは、ヘッダ・ファイルemmintrin.h内にあります。

組込み関数名 命令 比較条件 要素数 要素のサイズ
_mm_cmpeq_epi8 PCMPEQB 16 8
_mm_cmpeq_epi16 PCMPEQW 8 16
_mm_cmpeq_epi32 PCMPEQD 4 32
_mm_cmpgt_epi8 PCMPGTB より大きい 16 8
_mm_cmpgt_epi16 PCMPGTW より大きい 8 16
_mm_cmpgt_epi32 PCMPGTD より大きい 4 32
_mm_cmplt_epi8 PCMPGTBr 16 8
_mm_cmplt_epi16 PCMPGTWr 8 16
_mm_cmplt_epi32 PCMPGTDr 4 32

__m128i _mm_cmpeq_epi8(__m128i a, __m128i b)

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

r0 := (a0 == b0) ? 0xff : 0x0
r1 := (a1 == b1) ? 0xff : 0x0
...
r15 := (a15 == b15) ? 0xff : 0x0

__m128i _mm_cmpeq_epi16(__m128i a, __m128i b)

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

r0 := (a0 == b0) ? 0xffff : 0x0
r1 := (a1 == b1) ? 0xffff : 0x0
...
r7 := (a7 == b7) ? 0xffff : 0x0

__m128i _mm_cmpeq_epi32(__m128i a, __m128i b)

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

r0 := (a0 == b0) ? 0xffffffff : 0x0
r1 := (a1 == b1) ? 0xffffffff : 0x0
r2 := (a2 == b2) ? 0xffffffff : 0x0
r3 := (a3 == b3) ? 0xffffffff : 0x0

__m128i _mm_cmpgt_epi8(__m128i a, __m128i b)

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

r0 := (a0 > b0) ? 0xff : 0x0
r1 := (a1 > b1) ? 0xff : 0x0
...
r15 := (a15 > b15) ? 0xff : 0x0

__m128i _mm_cmpgt_epi16(__m128i a, __m128i b)

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

r0 := (a0 > b0) ? 0xffff : 0x0
r1 := (a1 > b1) ? 0xffff : 0x0
...
r7 := (a7 > b7) ? 0xffff : 0x0

__m128i _mm_cmpgt_epi32(__m128i a, __m128i b)

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

r0 := (a0 > b0) ? 0xffff : 0x0
r1 := (a1 > b1) ? 0xffff : 0x0
r2 := (a2 > b2) ? 0xffff : 0x0
r3 := (a3 > b3) ? 0xffff : 0x0

__m128i _mm_cmplt_epi8(__m128i a, __m128i b)

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

r0 := (a0 < b0) ? 0xff : 0x0
r1 := (a1 < b1) ? 0xff : 0x0
...
r15 := (a15 < b15) ? 0xff : 0x0

__m128i _mm_cmplt_epi16(__m128i a, __m128i b)

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

r0 := (a0 < b0) ? 0xffff : 0x0
r1 := (a1 < b1) ? 0xffff : 0x0
...
r7 := (a7 < b7) ? 0xffff : 0x0

__m128i _mm_cmplt_epi32(__m128i a, __m128i b)

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

r0 := (a0 < b0) ? 0xffff : 0x0
r1 := (a1 < b1) ? 0xffff : 0x0
r2 := (a2 < b2) ? 0xffff : 0x0
r3 := (a3 < b3) ? 0xffff : 0x0