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