ストリーミング SIMD 拡張命令 2 (SSE2) に対応した比較演算組込み関数とその説明を下表に示します。
SSE2 組込み関数のプロトタイプは、ヘッダファイル 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