static void bmi2_test () { unsigned i; unsigned src = 0xce7ace0f; unsigned res, res_ref; for (i = 0; i < 5; ++i) { src = src * (i + 1); res_ref = calc_bzhi_u32 (src, i * 2); res = _bzhi_u32 (src, i * 2); if (res != res_ref) abort(); } }
unsigned int test_bzhi_u32(unsigned int __X, unsigned int __Y) { // CHECK: @llvm.x86.bmi.bzhi.32 return _bzhi_u32(__X, __Y); }
unsigned int __attribute__((__target__("bmi2"))) bzhi_u32_wrap(unsigned int x, unsigned int y) { return _bzhi_u32(x, y); }