167217Sn_hibma/* { dg-do run } */
261560Sn_hibma/* { dg-require-effective-target avx } */
3113273Smdodd/* { dg-options "-O2 -mavx" } */
461560Sn_hibma
561560Sn_hibma#include "avx-check.h"
661560Sn_hibma
761560Sn_hibmastatic __m256i
861560Sn_hibma__attribute__((noinline))
961560Sn_hibmafoo (char x, int i)
1061560Sn_hibma{
1161560Sn_hibma  switch (i)
1261560Sn_hibma    {
1361560Sn_hibma    case 31:
1461560Sn_hibma      return _mm256_set_epi8 (x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1561560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
1661560Sn_hibma    case 30:
1761560Sn_hibma      return _mm256_set_epi8 (1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1861560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
1961560Sn_hibma    case 29:
2061560Sn_hibma      return _mm256_set_epi8 (1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2161560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
2261560Sn_hibma    case 28:
2361560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2461560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
2561560Sn_hibma    case 27:
2661560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2797586Sru			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
2897586Sru    case 26:
29187994Salfred      return _mm256_set_epi8 (1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3093350Sjoe			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
3161560Sn_hibma    case 25:
3261560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3393350Sjoe			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
3461560Sn_hibma    case 24:
35187994Salfred      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1,
3667217Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
3761560Sn_hibma    case 23:
3861560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1,
3961560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
4061560Sn_hibma    case 22:
4161560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1,
4261560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
4361560Sn_hibma    case 21:
4461560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1,
4561560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
4661560Sn_hibma    case 20:
47225839Smav      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1,
48225839Smav			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
49225839Smav    case 19:
5061560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1,
5161560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
5293351Sjoe    case 18:
5361560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1,
54113273Smdodd			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
5561560Sn_hibma    case 17:
5661560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1,
57187994Salfred			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
58187994Salfred    case 16:
59187994Salfred      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x,
60187994Salfred			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
6167217Sn_hibma    case 15:
6267217Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6361560Sn_hibma			      x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
6461560Sn_hibma    case 14:
6561560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
66113273Smdodd			      1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
6761560Sn_hibma    case 13:
6861560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6961560Sn_hibma			      1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
7061560Sn_hibma    case 12:
7161560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
72113273Smdodd			      1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
7361560Sn_hibma    case 11:
74113273Smdodd      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
75152763Sru			      1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
7661560Sn_hibma    case 10:
77152763Sru      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
78113273Smdodd			      1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
7967217Sn_hibma    case 9:
80113273Smdodd      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
81152763Sru			      1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1);
82113273Smdodd    case 8:
8361560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84152763Sru			      1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1);
8561560Sn_hibma    case 7:
86152763Sru      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8761560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1);
88152763Sru    case 6:
89225839Smav      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
90225839Smav			      1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1);
91225839Smav    case 5:
92225839Smav      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9361560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1);
9461560Sn_hibma    case 4:
9561560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9661560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1);
97115225Sru    case 3:
9897586Sru      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9997586Sru			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1);
10061560Sn_hibma    case 2:
10161560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
10297586Sru			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1);
10361560Sn_hibma    case 1:
10461560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
10561560Sn_hibma			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1);
10661560Sn_hibma    case 0:
10761560Sn_hibma      return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
108187994Salfred			      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x);
109187994Salfred    default:
110187994Salfred      abort ();
111187994Salfred    }
112187994Salfred}
113187994Salfred
114225839Smavstatic void
115225839Smavavx_test (void)
116225839Smav{
117225839Smav  char e = 0xa1;
118225839Smav  char v[32];
119225839Smav  union256i_b u;
120225839Smav  int i, j;
121225839Smav
122115225Sru  for (i = 0; i < ARRAY_SIZE (v); i++)
123187994Salfred    {
124187994Salfred      for (j = 0; j < ARRAY_SIZE (v); j++)
12561560Sn_hibma	v[j] = 1;
12661560Sn_hibma      v[i] = e;
12761560Sn_hibma      u.x = foo (e, i);
12861560Sn_hibma      if (check_union256i_b (u, v))
12997586Sru	abort ();
13097586Sru    }
13167217Sn_hibma}
13267217Sn_hibma