OSDN Git Service

* gcc.dg/vect/vect-reduc-dot-s16b.c: Mark functions noinline.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / pr32912-1.c
1 /* PR middle-end/32912 */
2 /* { dg-do run } */
3 /* { dg-options "-O2 -w" } */
4
5 extern void abort (void);
6
7 typedef int __m128i __attribute__ ((__vector_size__ (16)));
8
9 __m128i a, b, c, d, e, f;
10
11 void
12 foo (__m128i x)
13 {
14   a = x ^ ~x;
15   b = ~x ^ x;
16   c = x | ~x;
17   d = ~x | x;
18   e = x & ~x;
19   f = ~x & x;
20 }
21
22 int
23 main (void)
24 {
25   union { __m128i v; int i[sizeof (__m128i) / sizeof (int)]; } u;
26   int i;
27
28   for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++)
29     u.i[i] = i * 49 - 36;
30   foo (u.v);
31 #define check(x, val) \
32   u.v = (x); \
33   for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++) \
34     if (u.i[i] != (val)) \
35       abort ()
36
37   check (a, ~0);
38   check (b, ~0);
39   check (c, ~0);
40   check (d, ~0);
41   check (e, 0);
42   check (f, 0);
43   return 0;
44 }