OSDN Git Service

Support AVX for cmpss/cmpsd.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / i386 / avx-set-v16hi-5.c
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))
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
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 }