. pcmpeqd:
__m128i zero = _mm_set1_epi32(0);
__m128i a = _mm_set_epi32(6, 4, 7, 2);
__m128i b = _mm_set_epi32(2, 4, 9, 2);
__m128i mask = _mm_cmp_epi32(a, b); // mask is now 0, -1, 0, -1
mask = _mm_sub_epi32(zero, mask); // mask is now 0, 1, 0, 1
:
- , .
static const __m128i zero = _mm_set1_epi32(0);
static const __m128i bits = _mm_set_epi32(1,2,4,8);
__m128i a = _mm_set_epi32(6, 4, 7, 2);
__m128i b = _mm_set_epi32(2, 4, 9, 2);
__m128i bitvector = _mm_and_si128(bits, _mm_cmp_epi32(a, b));
bitvector = _mm_hadd_epi32(bitvector, bitvector);
bitvector = _mm_hadd_epi32(bitvector, bitvector);
, , , De Bruijn. OTOH, 4 ints , 4 int phaddd.