ここでは、整数比較操作用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。R、R0、R1 ~ R15 は、結果が配置されるレジスターを表します。
組込み関数名
|
演算子
|
対応するインテル® SSE2 命令
|
_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
|