1/* { dg-do compile { target { ! { ia32 } } } } */ 2/* { dg-options "-O2 -fno-ipa-icf -mbmi " } */ 3/* { dg-final { scan-assembler "andn\[^\\n]*rax" } } */ 4/* { dg-final { scan-assembler-times "bextr\[ \\t]+\[^\\n]*rax" 2 } } */ 5/* { dg-final { scan-assembler-times "blsi\[^\\n]*rax" 2 } } */ 6/* { dg-final { scan-assembler-times "blsmsk\[^\\n]*rax" 2 } } */ 7/* { dg-final { scan-assembler-times "blsr\[^\\n]*rax" 2 } } */ 8/* { dg-final { scan-assembler-times "tzcntq\[^\\n]*rax" 2 } } */ 9 10#include <x86intrin.h> 11 12unsigned long long 13func_andn64 (unsigned long long X, unsigned long long Y) 14{ 15 return __andn_u64 (X, Y); 16} 17 18unsigned long long 19func_bextr64 (unsigned long long X, unsigned long long Y) 20{ 21 return __bextr_u64 (X, Y); 22} 23 24unsigned long long 25func_bextr64_3args (unsigned long long X, 26 unsigned long long Y, 27 unsigned long long Z) 28{ 29 return _bextr_u64 (X, Y, Z); 30} 31 32unsigned long long 33func_blsi64 (unsigned long long X) 34{ 35 return __blsi_u64 (X); 36} 37 38unsigned long long 39func_blsi64_2 (unsigned long long X) 40{ 41 return _blsi_u64 (X); 42} 43 44unsigned long long 45func_blsmsk64 (unsigned long long X) 46{ 47 return __blsmsk_u64 (X); 48} 49 50unsigned long long 51func_blsmsk64_2 (unsigned long long X) 52{ 53 return _blsmsk_u64 (X); 54} 55 56unsigned long long 57func_blsr64 (unsigned long long X) 58{ 59 return __blsr_u64 (X); 60} 61 62unsigned long long 63func_blsr64_2 (unsigned long long X) 64{ 65 return _blsr_u64 (X); 66} 67 68unsigned long long 69func_tzcnt64 (unsigned long long X) 70{ 71 return __tzcnt_u64 (X); 72} 73 74unsigned long long 75func_tzcnt64_2 (unsigned long long X) 76{ 77 return _tzcnt_u64 (X); 78} 79