PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx-set-v16hi-5.c
blobad77eda29939160123592a610ae3351fece349a0
1 /* { dg-do run } */
2 /* { dg-require-effective-target avx } */
3 /* { dg-options "-O2 -mavx" } */
5 #include "avx-check.h"
7 static __m256i
8 __attribute__((noinline))
9 foo (short x, int i)
11 switch (i)
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 ();
66 static void
67 avx_test (void)
69 short e = 0xbeef;
70 short v[16];
71 union256i_w u;
72 int i, j;
74 for (i = 0; i < ARRAY_SIZE (v); i++)
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 ();