comparison gcc/testsuite/gcc.dg/simd-2.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 1830386684a0
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* { dg-do compile } */
2 /* { dg-options "-Wall" } */
3
4 /* Origin: Aldy Hernandez <aldyh@redhat.com>. */
5 /* Purpose: Program to test generic SIMD support. */
6
7 typedef float __attribute__((vector_size(8))) v2sf;
8 typedef float __attribute__((vector_size(16))) v4sf;
9 typedef double __attribute__((vector_size(16))) v2df;
10
11 v4sf a, b;
12 v2sf c, d;
13 v2df e;
14
15 double foo;
16 float foo1;
17 v2sf foo2;
18
19 void
20 hanneke ()
21 {
22 /* Assignment. */
23 a = b;
24
25 /* Assignment of different types. */
26 b = c; /* { dg-error "incompatible types when assigning" } */
27 d = a; /* { dg-error "incompatible types when assigning" } */
28
29 /* Casting between SIMDs of the same size. */
30 e = (typeof (e)) a;
31
32 /* Assignment between scalar and SIMD of different size. */
33 foo = a; /* { dg-error "incompatible types when assigning" } */
34
35 /* Casted assignment between scalar and SIMD of same size. */
36 foo = (typeof (foo)) foo2; /* { dg-error "aggregate value used where a float was expected" } */
37
38 /* Casted assignment between scalar and SIMD of different size. */
39 foo1 = (typeof (foo1)) foo2; /* { dg-error "aggregate value used where a float was expected" } */
40
41 /* Operators on compatible SIMD types. */
42 a += b + b;
43 a -= b;
44 a *= b;
45 a /= b;
46 a = +b;
47 c = -d;
48
49 /* Operators on incompatible SIMD types. */
50 a = b + c; /* { dg-error "invalid operands to binary" } */
51 a = b - c; /* { dg-error "invalid operands to binary" } */
52 a = b * c; /* { dg-error "invalid operands to binary" } */
53 a = b / c; /* { dg-error "invalid operands to binary" } */
54 }