static void avx2_test (void) { union256i_w s1, s2, res; unsigned short res_ref[16]; int i, j; int fail = 0; for (i = 0; i < 10; i++) { for (j = 0; j < 16; j++) { s1.a[j] = j * i; s2.a[j] = i + 2000; } res.x = _mm256_min_epu16 (s1.x, s2.x); compute_pminuw256 ((unsigned short *) s1.a, (unsigned short *) s2.a, (unsigned short *) res_ref); fail += check_union256i_w (res, res_ref); } if (fail != 0) abort (); }
__m256i test_mm256_min_epu16(__m256i a, __m256i b) { // CHECK: @llvm.x86.avx2.pminu.w return _mm256_min_epu16(a, b); }
__m256i test_mm256_min_epu16(__m256i a, __m256i b) { // CHECK-LABEL: test_mm256_min_epu16 // CHECK: [[CMP:%.*]] = icmp ult <16 x i16> [[X:%.*]], [[Y:%.*]] // CHECK-NEXT: select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]] return _mm256_min_epu16(a, b); }
static FORCE_INLINE __m256i mm256_min_epu(const __m256i &a, const __m256i &b) { if (sizeof(PixelType) == 1) return _mm256_min_epu8(a, b); else return _mm256_min_epu16(a, b); }