The comparison intrinsics for Streaming SIMD Extensions 2 and descriptions for each are listed in the following table. The "r" next to the instruction indicates that the operands are reversed in the instruction implementation.
Intrinsic Name | Instruction | Comparison | Elements | Size of Elements |
---|---|---|---|---|
_mm_cmpeq_epi8 |
PCMPEQB |
Equality |
16 |
8 |
_mm_cmpeq_epi16 |
PCMPEQW |
Equality |
8 |
16 |
_mm_cmpeq_epi32 |
PCMPEQD |
Equality |
4 |
32 |
_mm_cmpgt_epi8 |
PCMPGTB |
Greater Than |
16 |
8 |
_mm_cmpgt_epi16 |
PCMPGTW |
Greater Than |
8 |
16 |
_mm_cmpgt_epi32 |
PCMPGTD |
Greater Than |
4 |
32 |
_mm_cmplt_epi8 |
PCMPGTBr |
Less Than |
16 |
8 |
_mm_cmplt_epi16 |
PCMPGTWr |
Less Than |
8 |
16 |
_mm_cmplt_epi32 |
PCMPGTDr |
Less Than |
4 |
32 |
__m128i _mm_cmpeq_epi8 ( __m128i a, __m128i b)
Compares the 16 signed or unsigned 8-bit integers in a and the 16 signed or unsigned 8-bit integers in b for equality.
r0 := (a0 == b0) ? 0xff : 0x0
r1 := (a1 == b1) ? 0xff : 0x0
...
r15 := (a15 == b15) ? 0xff : 0x0
__m128i _mm_cmpeq_epi16 ( __m128i a, __m128i b)
Compares the 8 signed or unsigned 16-bit integers in a and the 8 signed or unsigned 16-bit integers in b for equality.
r0 := (a0 == b0) ? 0xffff : 0x0
r1 := (a1 == b1) ? 0xffff : 0x0
...
r7 := (a7 == b7) ? 0xffff : 0x0
__m128i _mm_cmpeq_epi32 ( __m128i a, __m128i b)
Compares the 4 signed or unsigned 32-bit integers in a and the 4 signed or unsigned 32-bit integers in b for equality.
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)
Compares the 16 signed 8-bit integers in a and the 16 signed 8-bit integers in b for greater than.
r0 := (a0 > b0) ? 0xff : 0x0
r1 := (a1 > b1) ? 0xff : 0x0
...
r15 := (a15 > b15) ? 0xff : 0x0
__m128i _mm_cmpgt_epi16 ( __m128i a, __m128i b)
Compares the 8 signed 16-bit integers in a and the 8 signed 16-bit integers in b for greater than.
r0 := (a0 > b0) ? 0xffff : 0x0
r1 := (a1 > b1) ? 0xffff : 0x0
...
r7 := (a7 > b7) ? 0xffff : 0x0
__m128i _mm_cmpgt_epi32 ( __m128i a, __m128i b)
Compares the 4 signed 32-bit integers in a and the 4 signed 32-bit integers in b for greater than.
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)
Compares the 16 signed 8-bit integers in a and the 16 signed 8-bit integers in b for less than.
r0 := (a0 < b0) ? 0xff : 0x0
r1 := (a1 < b1) ? 0xff : 0x0
...
r15 := (a15 < b15) ? 0xff : 0x0
__m128i _mm_cmplt_epi16 ( __m128i a, __m128i b)
Compares the 8 signed 16-bit integers in a and the 8 signed 16-bit integers in b for less than.
r0 := (a0 < b0) ? 0xffff : 0x0
r1 := (a1 < b1) ? 0xffff : 0x0
...
r7 := (a7 < b7) ? 0xffff : 0x0
__m128i _mm_cmplt_epi32 ( __m128i a, __m128i b)
Compares the 4 signed 32-bit integers in a and the 4 signed 32-bit integers in b for less than.
r0 := (a0 < b0) ? 0xffff : 0x0
r1 := (a1 < b1) ? 0xffff : 0x0
r2 := (a2 < b2) ? 0xffff : 0x0
r3 := (a3 < b3) ? 0xffff : 0x0