1 /* { dg-do run } */
2 /* { dg-require-effective-target avx } */
3 /* { dg-options "-O2 -mavx" } */
4 
5 #include "avx-check.h"
6 
7 static __m256i
8 __attribute__((noinline))
foo(short x,int i)9 foo (short x, int i)
10 {
11   switch (i)
12     {
13     case 15:
14       return _mm256_set_epi16 (x, 1, 1, 1, 1, 1, 1, 1,
15 			       1, 1, 1, 1, 1, 1, 1, 1);
16     case 14:
17       return _mm256_set_epi16 (1, x, 1, 1, 1, 1, 1, 1,
18 			       1, 1, 1, 1, 1, 1, 1, 1);
19     case 13:
20       return _mm256_set_epi16 (1, 1, x, 1, 1, 1, 1, 1,
21 			       1, 1, 1, 1, 1, 1, 1, 1);
22     case 12:
23       return _mm256_set_epi16 (1, 1, 1, x, 1, 1, 1, 1,
24 			       1, 1, 1, 1, 1, 1, 1, 1);
25     case 11:
26       return _mm256_set_epi16 (1, 1, 1, 1, x, 1, 1, 1,
27 			       1, 1, 1, 1, 1, 1, 1, 1);
28     case 10:
29       return _mm256_set_epi16 (1, 1, 1, 1, 1, x, 1, 1,
30 			       1, 1, 1, 1, 1, 1, 1, 1);
31     case 9:
32       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, x, 1,
33 			       1, 1, 1, 1, 1, 1, 1, 1);
34     case 8:
35       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, x,
36 			       1, 1, 1, 1, 1, 1, 1, 1);
37     case 7:
38       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
39 			       x, 1, 1, 1, 1, 1, 1, 1);
40     case 6:
41       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
42 			       1, x, 1, 1, 1, 1, 1, 1);
43     case 5:
44       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
45 			       1, 1, x, 1, 1, 1, 1, 1);
46     case 4:
47       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
48 			       1, 1, 1, x, 1, 1, 1, 1);
49     case 3:
50       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
51 			       1, 1, 1, 1, x, 1, 1, 1);
52     case 2:
53       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
54 			       1, 1, 1, 1, 1, x, 1, 1);
55     case 1:
56       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
57 			       1, 1, 1, 1, 1, 1, x, 1);
58     case 0:
59       return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
60 			       1, 1, 1, 1, 1, 1, 1, x);
61     default:
62       abort ();
63     }
64 }
65 
66 static void
avx_test(void)67 avx_test (void)
68 {
69   short e = 0xbeef;
70   short v[16];
71   union256i_w u;
72   int i, j;
73 
74   for (i = 0; i < ARRAY_SIZE (v); i++)
75     {
76       for (j = 0; j < ARRAY_SIZE (v); j++)
77 	v[j] = 1;
78       v[i] = e;
79       u.x = foo (e, i);
80       if (check_union256i_w (u, v))
81 	abort ();
82     }
83 }
84