/* { dg-do compile } */ | |
/* { dg-options "-O2 -fprofile-use -Wno-missing-profile" } */ | |
static inline int CLZ(int mask) { | |
return mask ? __builtin_clz(mask) : 32; | |
} | |
int foo(int value) | |
{ | |
if (value == 0) | |
return 0; | |
int bias = CLZ(value); | |
value >>= bias; | |
int zeros = CLZ(value << 1); | |
value <<= zeros; | |
int packed = (unsigned)(value << 9) >> 9; | |
return packed; | |
} |