blob: 0637bc990b88bf31020a181ccb4f507a1324264a [file] [log] [blame]
/* { dg-do run } */
/* { dg-require-effective-target avx2 } */
/* { dg-options "-O3 -mavx2" } */
#include "avx2-check.h"
typedef unsigned int ui;
ui x[32*32];
ui y[32];
ui z[32];
void __attribute__ ((noinline, noclone)) foo (ui n, ui z)
{
ui i, b;
ui v;
for (i = 0; i< n; i++)
{
v = y[i];
if (v) {
for (b = 0; b < 32; b++)
if ((v >> b) & 1)
x[i*32 +b] = z;
y[i] = 0;
}
}
}
static void
avx2_test (void)
{
int i;
unsigned int val;
for (i = 0; i<32; i++)
{
val = 1U << i;
y[i] = (i & 1)? 0 : val;
z[i] = i;
}
foo (32, 10);
for (i=0; i<1024; i+=66)
if (x[i] != 10)
__builtin_abort ();
}