]>
git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/simd-1.c
1 /* { dg-do compile } */
2 /* { dg-options "-Wall" } */
4 /* Origin: Aldy Hernandez <aldyh@redhat.com>. */
5 /* Purpose: Program to test generic SIMD support. */
7 typedef int __attribute__ (( vector_size ( 16 ))) v4si
;
8 typedef short __attribute__ (( vector_size ( 16 ))) v8hi
;
9 typedef int __attribute__ (( vector_size ( 8 ))) v2si
;
10 typedef unsigned int __attribute__ (( vector_size ( 16 ))) uv4si
;
19 short foo2
__attribute__ (( vector_size ( 8 )));
27 /* Assignment of different types. */
28 b
= c
; /* { dg-error "incompatible types when assigning" } */
29 d
= a
; /* { dg-error "incompatible types when assigning" } */
31 /* Casting between SIMDs of the same size. */
34 /* Different signed SIMD assignment. */
35 f
= a
; /* { dg-message "note: use .-flax-vector-conversions. to permit conversions between vectors with differing element types or numbers of subparts" } */
36 /* { dg-error "incompatible types when assigning" "" { target *-*-* } .-1 } */
38 /* Casted different signed SIMD assignment. */
41 /* Assignment between scalar and SIMD of different size. */
42 foo
= a
; /* { dg-error "incompatible types when assigning" } */
44 /* Casted assignment between scalar and SIMD of same size. */
45 foo
= ( typeof ( foo
)) foo2
;
47 /* Casted assignment between scalar and SIMD of different size. */
48 foo1
= ( typeof ( foo1
)) foo2
; /* { dg-error "can't convert a vector of type" } */
50 /* Operators on compatible SIMD types. */
57 /* Operators on incompatible SIMD types. */
58 a
= b
+ c
; /* { dg-error "invalid operands to binary +" } */
59 a
= b
- c
; /* { dg-error "invalid operands to binary -" } */
60 a
= b
* c
; /* { dg-error "invalid operands to binary *" } */
61 a
= b
/ c
; /* { dg-error "invalid operands to binary /" } */