summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/simd-1b.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/simd-1b.c')
-rw-r--r--gcc/testsuite/gcc.dg/simd-1b.c36
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" } */
+}