From 1bc5aee63eb72b341f506ad058502cd0361f0d10 Mon Sep 17 00:00:00 2001 From: Ben Cheng Date: Tue, 25 Mar 2014 22:37:19 -0700 Subject: Initial checkin of GCC 4.9.0 from trunk (r208799). Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba --- .../testsuite/c-c++-common/torture/vector-shift2.c | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 gcc-4.9/gcc/testsuite/c-c++-common/torture/vector-shift2.c (limited to 'gcc-4.9/gcc/testsuite/c-c++-common/torture/vector-shift2.c') diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/torture/vector-shift2.c b/gcc-4.9/gcc/testsuite/c-c++-common/torture/vector-shift2.c new file mode 100644 index 000000000..d3a2ef87c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/torture/vector-shift2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +#define vector(elcount, type) \ +__attribute__((vector_size((elcount)*sizeof(type)))) type + +#define vidx(type, vec, idx) (*((type *) &(vec) + idx)) +#define uint unsigned int + +int main (int argc, char *argv[]) { + vector(4, uint) vuint = { 1, 2, 3, 4}; + vector(4, int) vint0 = { 1, 1, 1, 1}; + vector(4, int) vint1 = {-1, -1, -1, -1}; + + vector(4, int) i1, i2, i3; + vector(4, uint) u1, u2, u3; + + i1 = vint1<< vint0; + + if (vidx(int, i1, 0) != ((int)-1 << (int)1)) + __builtin_abort (); + if (vidx(int, i1, 1) != ((int)-1 << (int)1)) + __builtin_abort (); + if (vidx(int, i1, 2) != ((int)-1 << (int)1)) + __builtin_abort (); + if (vidx(int, i1, 3) != ((int)-1 << (int)1)) + __builtin_abort (); + + u1 = vuint << vint0; + + if (vidx(int, u1, 0) != ((uint)1 << (int)1)) + __builtin_abort (); + if (vidx(int, u1, 1) != ((uint)2 << (int)1)) + __builtin_abort (); + if (vidx(int, u1, 2) != ((uint)3 << (int)1)) + __builtin_abort (); + if (vidx(int, u1, 3) != ((uint)4 << (int)1)) + __builtin_abort (); + + + i2 = vint1 >> vuint; + + if (vidx(int, i2, 0) != ((int)-1 >> (uint)1)) + __builtin_abort (); + if (vidx(int, i2, 1) != ((int)-1 >> (uint)2)) + __builtin_abort (); + if (vidx(int, i2, 2) != ((int)-1 >> (uint)3)) + __builtin_abort (); + if (vidx(int, i2, 3) != ((int)-1 >> (uint)4)) + __builtin_abort (); + + + vint1 >>= vuint; + + vuint <<= vint0; + vuint <<= vint1; + + + return 0; +} + + -- cgit v1.2.3