Merge from mainline (165734:167278).
[official-gcc/graphite-test-results.git] / gcc / testsuite / gcc.c-torture / execute / vector-shift2.c
blob55f1035552232f54509d9f98ad4d3e86746ce1c9
1 #define vector(elcount, type) \
2 __attribute__((vector_size((elcount)*sizeof(type)))) type
4 #define vidx(type, vec, idx) (*((type *) &(vec) + idx))
5 #define uint unsigned int
7 int main (int argc, char *argv[]) {
8 vector(4, uint) vuint = { 1, 2, 3, 4};
9 vector(4, int) vint0 = { 1, 1, 1, 1};
10 vector(4, int) vint1 = {-1, -1, -1, -1};
12 vector(4, int) i1, i2, i3;
13 vector(4, uint) u1, u2, u3;
15 i1 = vint1<< vint0;
17 if (vidx(int, i1, 0) != ((int)-1 << (int)1))
18 __builtin_abort ();
19 if (vidx(int, i1, 1) != ((int)-1 << (int)1))
20 __builtin_abort ();
21 if (vidx(int, i1, 2) != ((int)-1 << (int)1))
22 __builtin_abort ();
23 if (vidx(int, i1, 3) != ((int)-1 << (int)1))
24 __builtin_abort ();
26 u1 = vuint << vint0;
28 if (vidx(int, u1, 0) != ((uint)1 << (int)1))
29 __builtin_abort ();
30 if (vidx(int, u1, 1) != ((uint)2 << (int)1))
31 __builtin_abort ();
32 if (vidx(int, u1, 2) != ((uint)3 << (int)1))
33 __builtin_abort ();
34 if (vidx(int, u1, 3) != ((uint)4 << (int)1))
35 __builtin_abort ();
38 i2 = vint1 >> vuint;
40 if (vidx(int, i2, 0) != ((int)-1 >> (uint)1))
41 __builtin_abort ();
42 if (vidx(int, i2, 1) != ((int)-1 >> (uint)2))
43 __builtin_abort ();
44 if (vidx(int, i2, 2) != ((int)-1 >> (uint)3))
45 __builtin_abort ();
46 if (vidx(int, i2, 3) != ((int)-1 >> (uint)4))
47 __builtin_abort ();
50 vint1 >>= vuint;
52 vuint <<= vint0;
53 vuint <<= vint1;
56 return 0;