1 /* { dg-do compile } */
2 /* { dg-options "-O2 -mbmi2 -fdump-tree-optimized" } */
3 /* { dg-final { scan-tree-dump-not "link_error" "optimized" } } */
7 extern void link_error (void);
11 static inline unsigned int f1 (void) { return _bzhi_u32 (a
, 0); }
12 static inline unsigned int f2 (unsigned int x
) { return _bzhi_u32 (x
, 0); }
13 static inline unsigned int f3 (void) { return _bzhi_u32 (a
, 5); }
14 static inline unsigned int f4 (unsigned int x
) { return _bzhi_u32 (x
, 5); }
15 static inline unsigned int f5 (void) { return _bzhi_u32 (a
, 31); }
16 static inline unsigned int f6 (unsigned int x
) { return _bzhi_u32 (x
, 31); }
17 static inline unsigned int f7 (void) { return _bzhi_u32 (a
, 32); }
18 static inline unsigned int f8 (unsigned int x
) { return _bzhi_u32 (x
, 32); }
19 static inline unsigned int f9 (void) { return _bzhi_u32 (a
, 37); }
20 static inline unsigned int f10 (unsigned int x
) { return _bzhi_u32 (x
, 37); }
21 static inline unsigned int f11 (void) { return _bzhi_u32 (a
, 257); }
22 static inline unsigned int f12 (unsigned int x
) { return _bzhi_u32 (x
, 257); }
23 static inline unsigned int f13 (void) { return _bzhi_u32 (a
, 289); }
24 static inline unsigned int f14 (unsigned int x
) { return _bzhi_u32 (x
, 289); }
26 static inline unsigned long long f21 (void) { return _bzhi_u64 (b
, 0); }
27 static inline unsigned long long f22 (unsigned long long x
) { return _bzhi_u64 (x
, 0); }
28 static inline unsigned long long f23 (void) { return _bzhi_u64 (b
, 5); }
29 static inline unsigned long long f24 (unsigned long long x
) { return _bzhi_u64 (x
, 5); }
30 static inline unsigned long long f25 (void) { return _bzhi_u64 (b
, 63); }
31 static inline unsigned long long f26 (unsigned long long x
) { return _bzhi_u64 (x
, 63); }
32 static inline unsigned long long f27 (void) { return _bzhi_u64 (b
, 64); }
33 static inline unsigned long long f28 (unsigned long long x
) { return _bzhi_u64 (x
, 64); }
34 static inline unsigned long long f29 (void) { return _bzhi_u64 (b
, 69); }
35 static inline unsigned long long f30 (unsigned long long x
) { return _bzhi_u64 (x
, 69); }
36 static inline unsigned long long f31 (void) { return _bzhi_u64 (b
, 257); }
37 static inline unsigned long long f32 (unsigned long long x
) { return _bzhi_u64 (x
, 257); }
38 static inline unsigned long long f33 (void) { return _bzhi_u64 (b
, 321); }
39 static inline unsigned long long f34 (unsigned long long x
) { return _bzhi_u64 (x
, 321); }
48 asm volatile ("" : : "g" (&c
), "g" (&d
) : "memory");
51 if (f1 () != 0 || f2 (-1U) != 0
52 || f3 () != 0x1f || f4 (-1U) != 0x1f
53 || f5 () != 0x7fffffffU
|| f6 (-1U) != 0x7fffffffU
54 || f7 () != -1U || f8 (-1U) != -1U
55 || f9 () != -1U || f10 (-1U) != -1U
56 || f11 () != 1 || f12 (-1U) != 1
57 || f13 () != -1U || f14 (-1U) != -1U)
59 if (_bzhi_u32 (c
, 32) != c
60 || _bzhi_u32 (c
, 64) != c
61 || _bzhi_u32 (c
, 255) != c
)
64 if (f21 () != 0 || f22 (-1ULL) != 0
65 || f23 () != 0x1f || f24 (-1ULL) != 0x1f
66 || f25 () != 0x7fffffffffffffffULL
|| f26 (-1ULL) != 0x7fffffffffffffffULL
67 || f27 () != -1ULL || f28 (-1ULL) != -1ULL
68 || f29 () != -1ULL || f30 (-1ULL) != -1ULL
69 || f31 () != 1 || f32 (-1ULL) != 1
70 || f33 () != -1ULL || f34 (-1ULL) != -1ULL)
72 if (_bzhi_u64 (d
, 64) != d
73 || _bzhi_u64 (d
, 255) != d
)