diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/simd-1b.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/simd-1b.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/simd-1b.c b/gcc/testsuite/gcc.dg/simd-1b.c new file mode 100644 index 000000000..44c39c2ef --- /dev/null +++ b/gcc/testsuite/gcc.dg/simd-1b.c @@ -0,0 +1,36 @@ +/* { dg-do compile } */ +/* { dg-options "-Wall" } */ + +/* Origin: Aldy Hernandez <aldyh@redhat.com>. */ +/* Purpose: Program to test generic SIMD support. */ + +typedef int __attribute__((vector_size (16))) v4si; +typedef int __attribute__((vector_size (8))) v2si; + +v4si a, b; +v2si c, d; + +void +hanneke () +{ + /* Operators on compatible SIMD types. */ + a %= b; + c &= d; + a |= b; + c ^= d; + a >>= b; + c <<= d; + a = +b; + c = ~d; + + /* Operators on incompatible SIMD types. */ + a = b % c; /* { dg-error "invalid operands to binary" } */ + a = b % c; /* { dg-error "invalid operands to binary" } */ + d = c & b; /* { dg-error "invalid operands to binary" } */ + a = b | c; /* { dg-error "invalid operands to binary" } */ + d = c ^ b; /* { dg-error "invalid operands to binary" } */ + a = b >> c; /* { dg-error "invalid operands to binary" } */ + a = b >> c; /* { dg-error "invalid operands to binary" } */ + d = c << b; /* { dg-error "invalid operands to binary" } */ + d = c << b; /* { dg-error "invalid operands to binary" } */ +} |