blob: 633e1312063ad2e6e4182b03978859b3d956ca5e [file] [log] [blame]
/* PR tree-optimization/112536 */
/* { dg-do compile } */
/* { dg-options "-O2 -fno-ipa-icf" } */
/* { dg-additional-options "-mlzcnt -mavx512cd -mavx512vl" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-final { scan-assembler-times "\tvplzcntd\t" 3 { target { i?86-*-* x86_64-*-* } } } } */
unsigned a[12];
void
foo (void)
{
int i = a[0];
int j = a[1];
int k = a[2];
int l = a[3];
int e = i ? __builtin_clz (i) : __SIZEOF_INT__ * __CHAR_BIT__;
int f = j ? __builtin_clz (j) : __SIZEOF_INT__ * __CHAR_BIT__;
int g = k ? __builtin_clz (k) : __SIZEOF_INT__ * __CHAR_BIT__;
int h = l ? __builtin_clz (l) : __SIZEOF_INT__ * __CHAR_BIT__;
a[0] = e;
a[1] = f;
a[2] = g;
a[3] = h;
}
void
bar (void)
{
int i = a[4];
int j = a[5];
int k = a[6];
int l = a[7];
int e = i ? __builtin_clz (i) : __SIZEOF_INT__ * __CHAR_BIT__;
int f = __builtin_clz (j);
int g = __builtin_clz (k);
int h = l ? __builtin_clz (l) : __SIZEOF_INT__ * __CHAR_BIT__;
a[4] = e;
a[5] = f;
a[6] = g;
a[7] = h;
}
void
baz (void)
{
int i = a[8];
int j = a[9];
int k = a[10];
int l = a[11];
int e = __builtin_clz (i);
int f = j ? __builtin_clz (j) : __SIZEOF_INT__ * __CHAR_BIT__;
int g = __builtin_clz (k);
int h = l ? __builtin_clz (l) : __SIZEOF_INT__ * __CHAR_BIT__;
a[8] = e;
a[9] = f;
a[10] = g;
a[11] = h;
}