1/* { dg-do run } */
2/* { dg-require-effective-target avx } */
3/* { dg-options "-O3 -mavx" } */
4
5#include "avx-check.h"
6
7#include "rotate-4.c"
8
9static void
10__attribute__((noinline))
11avx_test (void)
12{
13  int i;
14  for (i = 0; i < 1024; i++)
15    a[i] = i * 1073741789U;
16  foo (3);
17  for (i = 0; i < 1024; i++)
18    {
19      unsigned int x = i * 1073741789U;
20      if (a[i] != ((x << 3) | (x >> ((-3) & 31))))
21	abort ();
22    }
23  foo (0);
24  for (i = 0; i < 1024; i++)
25    {
26      unsigned int x = i * 1073741789U;
27      if (a[i] != ((x << 3) | (x >> ((-3) & 31))))
28	abort ();
29    }
30  foo (29);
31  for (i = 0; i < 1024; i++)
32    if (a[i] != i * 1073741789U)
33      abort ();
34}
35