This patch updates existing SVE ACLE tests to expect new behaviour wrt SVE ACLE types, GNU vectors and C/C++ operations.
testsuite/ChangeLog: * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c: Update test. * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c: Likewise. * gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Likewise. * gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise. * gcc.target/aarch64/sve/acle/general/attributes_7.c: Likewise. * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C: Likewise. * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C: Likewise. --- .../sve/acle/general-c++/gnu_vectors_1.C | 438 +++++++++--------- .../sve/acle/general-c++/gnu_vectors_2.C | 434 ++++++++--------- .../sve/acle/general-c/gnu_vectors_1.c | 349 +++++++------- .../sve/acle/general-c/gnu_vectors_2.c | 346 +++++++------- .../aarch64/sve/acle/general-c/sizeless-1.c | 2 +- .../aarch64/sve/acle/general-c/sizeless-2.c | 2 +- .../aarch64/sve/acle/general/attributes_7.c | 30 +- 7 files changed, 801 insertions(+), 800 deletions(-) diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C index f60ffe4a262..49b90492ce1 100644 --- a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C +++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C @@ -14,20 +14,20 @@ f (svuint8_t sve_u1, svint8_t sve_s1, svuint8_t init_sve_u1 = 0; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } svuint8_t init_sve_u2 = {}; svuint8_t init_sve_u3 = { sve_u1 }; - svuint8_t init_sve_u4 = { gnu_u1 }; - svuint8_t init_sve_u5 = { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'svuint8_t' in initialization} } - svuint8_t init_sve_u6 = { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'svuint8_t' in initialization} } - svuint8_t init_sve_u7 = { 0 }; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } - svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } - svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } + svuint8_t init_sve_u4 = { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u5 = { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u6 = { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u7 = { 0 }; + svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } svuint8_t init_sve_u10 {}; svuint8_t init_sve_u11 { sve_u1 }; - svuint8_t init_sve_u12 { gnu_u1 }; - svuint8_t init_sve_u13 { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'svuint8_t' in initialization} } - svuint8_t init_sve_u14 { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'svuint8_t' in initialization} } - svuint8_t init_sve_u15 { 0 }; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } - svuint8_t init_sve_u16 { sve_u1, sve_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } - svuint8_t init_sve_u17 { gnu_u1, gnu_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } + svuint8_t init_sve_u12 { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u13 { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u14 { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u15 { 0 }; + svuint8_t init_sve_u16 { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u17 { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } svuint8_t init_sve_u18 (0); // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } svuint8_t init_sve_u19 (sve_u1); svuint8_t init_sve_u20 (gnu_u1); @@ -59,13 +59,13 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Compound literals (svuint8_t) {}; - (svuint8_t) { 0 }; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } + (svuint8_t) { 0 }; (svuint8_t) { sve_u1 }; - (svuint8_t) { gnu_u1 }; - (svuint8_t) { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'svuint8_t' in initialization} } - (svuint8_t) { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'svuint8_t' in initialization} } - (svuint8_t) { sve_u1, sve_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } - (svuint8_t) { gnu_u1, gnu_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } + (svuint8_t) { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } + (svuint8_t) { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'unsigned char' in initialization} } + (svuint8_t) { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'unsigned char' in initialization} } + (svuint8_t) { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} } + (svuint8_t) { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } (gnu_uint8_t) {}; (gnu_uint8_t) { 0 }; @@ -93,14 +93,14 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Casts (void) sve_u1; - (int) sve_u1; // { dg-error {invalid cast from type 'svuint8_t' to type 'int'} } - (bool) sve_u1; // { dg-error {invalid cast from type 'svuint8_t' to type 'bool'} } - (svuint8_t) 0; // { dg-error {invalid cast from type 'int' to type 'svuint8_t'} } - (svuint8_t) n; // { dg-error {invalid cast from type 'int' to type 'svuint8_t'} } + (int) sve_u1; // { dg-error {cannot convert a vector of type 'svuint8_t' to type 'int'} } + (bool) sve_u1; // { dg-error {cannot convert a vector of type 'svuint8_t' to type 'bool'} } + (svuint8_t) 0; // { dg-error {cannot convert a value of type 'int' to vector type 'svuint8_t'} } + (svuint8_t) n; // { dg-error {cannot convert a value of type 'int' to vector type 'svuint8_t'} } (svuint8_t) sve_u1; (svuint8_t) gnu_u1; - (svuint8_t) sve_s1; // { dg-error {invalid cast from type 'svint8_t' to type 'svuint8_t'} } - (svuint8_t) gnu_s1; // { dg-error {invalid cast from type 'gnu_int8_t'[^\n]* to type 'svuint8_t'} } + (svuint8_t) sve_s1; + (svuint8_t) gnu_s1; (void) gnu_u1; (int) gnu_u1; // { dg-error {cannot convert a vector of type 'gnu_uint8_t'[^\n]* to type 'int'} } @@ -114,7 +114,7 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Vector indexing. - sve_u1[0]; // { dg-error {subscripted value is neither array nor pointer} } + sve_u1[0]; &sve_u1[0]; // { dg-error {subscripted value is neither array nor pointer} } gnu_u1[0]; @@ -122,18 +122,18 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Unary vector arithmetic. - +sve_u1; // { dg-error {wrong type argument to unary plus} } - -sve_u1; // { dg-error {wrong type argument to unary minus} } - ~sve_u1; // { dg-error {wrong type argument to bit-complement} } - !sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - // { dg-error {in argument to unary !} "" { target *-*-* } .-1 } + +sve_u1; + -sve_u1; + ~sve_u1; + !sve_u1; + *sve_u1; // { dg-error {invalid type argument of unary '\*'} } __real sve_u1; // { dg-error {wrong type argument to __real} } __imag sve_u1; // { dg-error {wrong type argument to __imag} } - ++sve_u1; // { dg-error {no pre-increment operator for type} } - --sve_u1; // { dg-error {no pre-decrement operator for type} } - sve_u1++; // { dg-error {no post-increment operator for type} } - sve_u1--; // { dg-error {no post-decrement operator for type} } + ++sve_u1; + --sve_u1; + sve_u1++; + sve_u1--; +gnu_u1; -gnu_u1; @@ -149,65 +149,65 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Vector-vector binary arithmetic. - sve_u1 + sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\+'} } - sve_u1 - sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator-'} } - sve_u1 * sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\*'} } - sve_u1 / sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator/'} } - sve_u1 % sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator%'} } - sve_u1 & sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\&'} } - sve_u1 | sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\|'} } - sve_u1 ^ sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\^'} } - sve_u1 == sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator=='} } - sve_u1 != sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator!='} } - sve_u1 <= sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<='} } - sve_u1 < sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<'} } - sve_u1 > sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator>'} } - sve_u1 >= sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator>='} } - sve_u1 <=> sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<=>'} } - sve_u1 << sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<<'} } - sve_u1 >> sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator>>'} } - sve_u1 && sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - - sve_u1 + gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\+'} } - sve_u1 - gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator-'} } - sve_u1 * gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\*'} } - sve_u1 / gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator/'} } - sve_u1 % gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator%'} } - sve_u1 & gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\&'} } - sve_u1 | gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\|'} } - sve_u1 ^ gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\^'} } - sve_u1 == gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator=='} } - sve_u1 != gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator!='} } - sve_u1 <= gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<='} } - sve_u1 < gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<'} } - sve_u1 > gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator>'} } - sve_u1 >= gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator>='} } - sve_u1 <=> gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<=>'} } - sve_u1 << gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<<'} } - sve_u1 >> gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator>>'} } - sve_u1 && gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - - gnu_u1 + sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\+'} } - gnu_u1 - sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator-'} } - gnu_u1 * sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\*'} } - gnu_u1 / sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator/'} } - gnu_u1 % sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator%'} } - gnu_u1 & sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\&'} } - gnu_u1 | sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\|'} } - gnu_u1 ^ sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\^'} } - gnu_u1 == sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator=='} } - gnu_u1 != sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator!='} } - gnu_u1 <= sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<='} } - gnu_u1 < sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<'} } - gnu_u1 > sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator>'} } - gnu_u1 >= sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator>='} } - gnu_u1 <=> sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<=>'} } - gnu_u1 << sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<<'} } - gnu_u1 >> sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator>>'} } - gnu_u1 && sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - gnu_u1 || sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + sve_u1 + sve_u1; + sve_u1 - sve_u1; + sve_u1 * sve_u1; + sve_u1 / sve_u1; + sve_u1 % sve_u1; + sve_u1 & sve_u1; + sve_u1 | sve_u1; + sve_u1 ^ sve_u1; + sve_u1 == sve_u1; + sve_u1 != sve_u1; + sve_u1 <= sve_u1; + sve_u1 < sve_u1; + sve_u1 > sve_u1; + sve_u1 >= sve_u1; + sve_u1 <=> sve_u1; // { dg-message {three-way comparison of vectors} } + sve_u1 << sve_u1; + sve_u1 >> sve_u1; + sve_u1 && sve_u1; + sve_u1 || sve_u1; + + sve_u1 + gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 - gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 * gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 / gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 % gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 & gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 | gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 ^ gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 == gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 != gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <= gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 < gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 > gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >= gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <=> gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 << gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >> gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 && gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 || gnu_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + + gnu_u1 + sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 - sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 * sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 / sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 % sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 & sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 | sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 ^ sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 == sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 != sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <= sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 < sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 > sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >= sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <=> sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 << sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >> sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 && sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 || sve_u1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } gnu_u1 + gnu_u1; gnu_u1 - gnu_u1; @@ -233,45 +233,45 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Vector-scalar binary arithmetic. - sve_u1 + 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\+'} } - sve_u1 - 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator-'} } - sve_u1 * 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\*'} } - sve_u1 / 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator/'} } - sve_u1 % 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator%'} } - sve_u1 & 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\&'} } - sve_u1 | 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\|'} } - sve_u1 ^ 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\^'} } - sve_u1 == 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator=='} } - sve_u1 != 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator!='} } - sve_u1 <= 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<='} } - sve_u1 < 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<'} } - sve_u1 > 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator>'} } - sve_u1 >= 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator>='} } + sve_u1 + 2; + sve_u1 - 2; + sve_u1 * 2; + sve_u1 / 2; + sve_u1 % 2; + sve_u1 & 2; + sve_u1 | 2; + sve_u1 ^ 2; + sve_u1 == 2; + sve_u1 != 2; + sve_u1 <= 2; + sve_u1 < 2; + sve_u1 > 2; + sve_u1 >= 2; sve_u1 <=> 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<=>'} } - sve_u1 << 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<<'} } - sve_u1 >> 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator>>'} } - sve_u1 && 2; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || 2; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - - sve_u1 + uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\+'} } - sve_u1 - uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator-'} } - sve_u1 * uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\*'} } - sve_u1 / uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator/'} } - sve_u1 % uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator%'} } - sve_u1 & uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\&'} } - sve_u1 | uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\|'} } - sve_u1 ^ uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\^'} } - sve_u1 == uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator=='} } - sve_u1 != uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator!='} } - sve_u1 <= uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<='} } - sve_u1 < uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<'} } - sve_u1 > uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator>'} } - sve_u1 >= uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator>='} } + sve_u1 << 2; + sve_u1 >> 2; + sve_u1 && 2; + sve_u1 || 2; + + sve_u1 + uc; + sve_u1 - uc; + sve_u1 * uc; + sve_u1 / uc; + sve_u1 % uc; + sve_u1 & uc; + sve_u1 | uc; + sve_u1 ^ uc; + sve_u1 == uc; + sve_u1 != uc; + sve_u1 <= uc; + sve_u1 < uc; + sve_u1 > uc; + sve_u1 >= uc; sve_u1 <=> uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<=>'} } - sve_u1 << uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<<'} } - sve_u1 >> uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator>>'} } - sve_u1 && uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + sve_u1 << uc; + sve_u1 >> uc; + sve_u1 && uc; + sve_u1 || uc; gnu_u1 + 2; gnu_u1 - 2; @@ -315,25 +315,25 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Scalar-vector binary 'operatorarithmetic. - 3 + sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\+'} } - 3 - sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator-'} } - 3 * sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\*'} } - 3 / sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator/'} } - 3 % sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator%'} } - 3 & sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\&'} } - 3 | sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\|'} } - 3 ^ sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\^'} } - 3 == sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator=='} } - 3 != sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator!='} } - 3 <= sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<='} } + 3 + sve_u1; + 3 - sve_u1; + 3 * sve_u1; + 3 / sve_u1; + 3 % sve_u1; + 3 & sve_u1; + 3 | sve_u1; + 3 ^ sve_u1; + 3 == sve_u1; + 3 != sve_u1; + 3 <= sve_u1; 3 <=> sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<=>'} } - 3 < sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<'} } - 3 > sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator>'} } - 3 >= sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator>='} } - 3 << sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<<'} } - 3 >> sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator>>'} } - 3 && sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - 3 || sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + 3 < sve_u1; + 3 > sve_u1; + 3 >= sve_u1; + 3 << sve_u1; + 3 >> sve_u1; + 3 && sve_u1; + 3 || sve_u1; 3 + gnu_u1; 3 - gnu_u1; @@ -357,59 +357,59 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Mismatched types. - sve_u1 + sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\+'} } - sve_u1 - sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator-'} } - sve_u1 * sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\*'} } - sve_u1 / sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator/'} } - sve_u1 % sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator%'} } - sve_u1 & sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\&'} } - sve_u1 | sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\|'} } - sve_u1 ^ sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\^'} } - sve_u1 == sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator=='} } - sve_u1 != sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator!='} } - sve_u1 <= sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<='} } - sve_u1 < sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<'} } - sve_u1 > sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator>'} } - sve_u1 >= sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator>='} } - sve_u1 <=> sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<=>'} } - sve_u1 << sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<<'} } - sve_u1 >> sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator>>'} } - - sve_u1 + gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\+'} } - sve_u1 - gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator-'} } - sve_u1 * gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\*'} } - sve_u1 / gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator/'} } - sve_u1 % gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator%'} } - sve_u1 & gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\&'} } - sve_u1 | gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\|'} } - sve_u1 ^ gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\^'} } - sve_u1 == gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator=='} } - sve_u1 != gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator!='} } - sve_u1 <= gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<='} } - sve_u1 < gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<'} } - sve_u1 > gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator>'} } - sve_u1 >= gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator>='} } - sve_u1 <=> gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<=>'} } - sve_u1 << gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<<'} } - sve_u1 >> gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator>>'} } - - gnu_u1 + sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\+'} } - gnu_u1 - sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator-'} } - gnu_u1 * sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\*'} } - gnu_u1 / sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator/'} } - gnu_u1 % sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator%'} } - gnu_u1 & sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\&'} } - gnu_u1 | sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\|'} } - gnu_u1 ^ sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\^'} } - gnu_u1 == sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator=='} } - gnu_u1 != sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator!='} } - gnu_u1 <= sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<='} } - gnu_u1 < sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<'} } - gnu_u1 > sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator>'} } - gnu_u1 >= sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator>='} } - gnu_u1 <=> sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<=>'} } - gnu_u1 << sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<<'} } - gnu_u1 >> sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator>>'} } + sve_u1 + sve_s1; + sve_u1 - sve_s1; + sve_u1 * sve_s1; + sve_u1 / sve_s1; + sve_u1 % sve_s1; + sve_u1 & sve_s1; + sve_u1 | sve_s1; + sve_u1 ^ sve_s1; + sve_u1 == sve_s1; + sve_u1 != sve_s1; + sve_u1 <= sve_s1; + sve_u1 < sve_s1; + sve_u1 > sve_s1; + sve_u1 >= sve_s1; + sve_u1 <=> sve_s1; // { dg-message {three-way comparison of vectors} } + sve_u1 << sve_s1; + sve_u1 >> sve_s1; + + sve_u1 + gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 - gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 * gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 / gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 % gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 & gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 | gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 ^ gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 == gnu_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 != gnu_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <= gnu_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 < gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 > gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >= gnu_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <=> gnu_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 << gnu_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >> gnu_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + + gnu_u1 + sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 - sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 * sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 / sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 % sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 & sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 | sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 ^ sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 == sve_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 != sve_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <= sve_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 < sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 > sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >= sve_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <=> sve_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 << sve_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >> sve_s1;// { dg-error {cannot combine GNU and SVE vectors in a binary operation} } gnu_u1 + gnu_s1; gnu_u1 - gnu_s1; @@ -438,35 +438,35 @@ f (svuint8_t sve_u1, svint8_t sve_s1, uc ? sve_u1 : gnu_u1; // { dg-error {operands to '\?:' have different types 'svuint8_t' and 'gnu_uint8_t'} } uc ? gnu_u1 : gnu_u1; - sve_u1 ? sve_u1 : sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? gnu_u1 : sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? sve_u1 : gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? gnu_u1 : gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? sve_u1 : uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? uc : sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? gnu_u1 : uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? uc : gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + sve_u1 ? sve_u1 : sve_u1; + sve_u1 ? gnu_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} } + sve_u1 ? sve_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} } + sve_u1 ? gnu_u1 : gnu_u1; + sve_u1 ? sve_u1 : uc; + sve_u1 ? uc : sve_u1; + sve_u1 ? gnu_u1 : uc; + sve_u1 ? uc : gnu_u1; - gnu_u1 ? sve_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} } + gnu_u1 ? sve_u1 : sve_u1; gnu_u1 ? gnu_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} } gnu_u1 ? sve_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} } gnu_u1 ? gnu_u1 : gnu_u1; - gnu_u1 ? sve_u1 : uc; // { dg-error {incompatible vector types in conditional expression} } - gnu_u1 ? uc : sve_u1; // { dg-error {incompatible vector types in conditional expression} } + gnu_u1 ? sve_u1 : uc; + gnu_u1 ? uc : sve_u1; gnu_u1 ? gnu_u1 : uc; gnu_u1 ? uc : gnu_u1; // Vector built-ins. - __builtin_shuffle (sve_u1, sve_u1, sve_u1); // { dg-error {'__builtin_shuffle' last argument must be an integer vector} } - __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); // { dg-error {'__builtin_shuffle' arguments must be vectors} } - __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); // { dg-error {'__builtin_shuffle' arguments must be vectors} } - __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); // { dg-error {'__builtin_shuffle' last argument must be an integer vector} } + __builtin_shuffle (sve_u1, sve_u1, sve_u1); + __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } + __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } + __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); __builtin_shuffle (gnu_u1, gnu_u1, gnu_u1); - __builtin_convertvector (sve_u1, svuint8_t); // { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } - __builtin_convertvector (gnu_u1, svuint8_t); // { dg-error {'__builtin_convertvector' second argument must be an integer or floating vector type} } - __builtin_convertvector (sve_u1, gnu_uint8_t); // { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } + __builtin_convertvector (sve_u1, svuint8_t); + __builtin_convertvector (gnu_u1, svuint8_t); + __builtin_convertvector (sve_u1, gnu_uint8_t); __builtin_convertvector (gnu_u1, gnu_uint8_t); // Type queries. diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C index 30b2ca59d79..2e9f688946f 100644 --- a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C +++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C @@ -14,20 +14,20 @@ f (svuint8_t sve_u1, svint8_t sve_s1, svuint8_t init_sve_u1 = 0; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } svuint8_t init_sve_u2 = {}; svuint8_t init_sve_u3 = { sve_u1 }; - svuint8_t init_sve_u4 = { gnu_u1 }; - svuint8_t init_sve_u5 = { sve_s1 }; - svuint8_t init_sve_u6 = { gnu_s1 }; - svuint8_t init_sve_u7 = { 0 }; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } - svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } - svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } + svuint8_t init_sve_u4 = { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u5 = { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u6 = { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u7 = { 0 }; + svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } svuint8_t init_sve_u10 {}; svuint8_t init_sve_u11 { sve_u1 }; - svuint8_t init_sve_u12 { gnu_u1 }; - svuint8_t init_sve_u13 { sve_s1 }; - svuint8_t init_sve_u14 { gnu_s1 }; - svuint8_t init_sve_u15 { 0 }; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } - svuint8_t init_sve_u16 { sve_u1, sve_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } - svuint8_t init_sve_u17 { gnu_u1, gnu_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } + svuint8_t init_sve_u12 { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u13 { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u14 { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'unsigned char' in initialization} } + svuint8_t init_sve_u15 { 0 }; + svuint8_t init_sve_u16 { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} } + svuint8_t init_sve_u17 { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } svuint8_t init_sve_u18 (0); // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } svuint8_t init_sve_u19 (sve_u1); svuint8_t init_sve_u20 (gnu_u1); @@ -59,13 +59,13 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Compound literals (svuint8_t) {}; - (svuint8_t) { 0 }; // { dg-error {cannot convert 'int' to 'svuint8_t' in initialization} } + (svuint8_t) { 0 }; (svuint8_t) { sve_u1 }; - (svuint8_t) { gnu_u1 }; - (svuint8_t) { sve_s1 }; - (svuint8_t) { gnu_s1 }; - (svuint8_t) { sve_u1, sve_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } - (svuint8_t) { gnu_u1, gnu_u1 }; // { dg-error {too many initializers for 'svuint8_t'} } + (svuint8_t) { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } + (svuint8_t) { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'unsigned char' in initialization} } + (svuint8_t) { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'unsigned char' in initialization} } + (svuint8_t) { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} } + (svuint8_t) { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} } (gnu_uint8_t) {}; (gnu_uint8_t) { 0 }; @@ -93,10 +93,10 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Casts (void) sve_u1; - (int) sve_u1; // { dg-error {invalid cast from type 'svuint8_t' to type 'int'} } - (bool) sve_u1; // { dg-error {invalid cast from type 'svuint8_t' to type 'bool'} } - (svuint8_t) 0; // { dg-error {invalid cast from type 'int' to type 'svuint8_t'} } - (svuint8_t) n; // { dg-error {invalid cast from type 'int' to type 'svuint8_t'} } + (int) sve_u1; // { dg-error {cannot convert a vector of type 'svuint8_t' to type 'int'} } + (bool) sve_u1; // { dg-error {cannot convert a vector of type 'svuint8_t' to type 'bool'} } + (svuint8_t) 0; // { dg-error {cannot convert a value of type 'int' to vector type 'svuint8_t'} } + (svuint8_t) n; // { dg-error {cannot convert a value of type 'int' to vector type 'svuint8_t'} } (svuint8_t) sve_u1; (svuint8_t) gnu_u1; (svuint8_t) sve_s1; @@ -114,7 +114,7 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Vector indexing. - sve_u1[0]; // { dg-error {subscripted value is neither array nor pointer} } + sve_u1[0]; &sve_u1[0]; // { dg-error {subscripted value is neither array nor pointer} } gnu_u1[0]; @@ -122,18 +122,18 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Unary vector arithmetic. - +sve_u1; // { dg-error {wrong type argument to unary plus} } - -sve_u1; // { dg-error {wrong type argument to unary minus} } - ~sve_u1; // { dg-error {wrong type argument to bit-complement} } - !sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - // { dg-error {in argument to unary !} "" { target *-*-* } .-1 } + +sve_u1; + -sve_u1; + ~sve_u1; + !sve_u1; + *sve_u1; // { dg-error {invalid type argument of unary '\*'} } __real sve_u1; // { dg-error {wrong type argument to __real} } __imag sve_u1; // { dg-error {wrong type argument to __imag} } - ++sve_u1; // { dg-error {no pre-increment operator for type} } - --sve_u1; // { dg-error {no pre-decrement operator for type} } - sve_u1++; // { dg-error {no post-increment operator for type} } - sve_u1--; // { dg-error {no post-decrement operator for type} } + ++sve_u1; + --sve_u1; + sve_u1++; + sve_u1--; +gnu_u1; -gnu_u1; @@ -149,65 +149,65 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Vector-vector binary arithmetic. - sve_u1 + sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\+'} } - sve_u1 - sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator-'} } - sve_u1 * sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\*'} } - sve_u1 / sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator/'} } - sve_u1 % sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator%'} } - sve_u1 & sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\&'} } - sve_u1 | sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\|'} } - sve_u1 ^ sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator\^'} } - sve_u1 == sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator=='} } - sve_u1 != sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator!='} } - sve_u1 <= sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<='} } - sve_u1 < sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<'} } - sve_u1 > sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator>'} } - sve_u1 >= sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator>='} } - sve_u1 <=> sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<=>'} } - sve_u1 << sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator<<'} } - sve_u1 >> sve_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'svuint8_t' to binary 'operator>>'} } - sve_u1 && sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - - sve_u1 + gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\+'} } - sve_u1 - gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator-'} } - sve_u1 * gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\*'} } - sve_u1 / gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator/'} } - sve_u1 % gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator%'} } - sve_u1 & gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\&'} } - sve_u1 | gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\|'} } - sve_u1 ^ gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator\^'} } - sve_u1 == gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator=='} } - sve_u1 != gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator!='} } - sve_u1 <= gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<='} } - sve_u1 < gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<'} } - sve_u1 > gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator>'} } - sve_u1 >= gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator>='} } - sve_u1 <=> gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<=>'} } - sve_u1 << gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator<<'} } - sve_u1 >> gnu_u1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_uint8_t'[^\n]* to binary 'operator>>'} } - sve_u1 && gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - - gnu_u1 + sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\+'} } - gnu_u1 - sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator-'} } - gnu_u1 * sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\*'} } - gnu_u1 / sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator/'} } - gnu_u1 % sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator%'} } - gnu_u1 & sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\&'} } - gnu_u1 | sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\|'} } - gnu_u1 ^ sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator\^'} } - gnu_u1 == sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator=='} } - gnu_u1 != sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator!='} } - gnu_u1 <= sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<='} } - gnu_u1 < sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<'} } - gnu_u1 > sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator>'} } - gnu_u1 >= sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator>='} } - gnu_u1 <=> sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<=>'} } - gnu_u1 << sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator<<'} } - gnu_u1 >> sve_u1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svuint8_t' to binary 'operator>>'} } - gnu_u1 && sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - gnu_u1 || sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + sve_u1 + sve_u1; + sve_u1 - sve_u1; + sve_u1 * sve_u1; + sve_u1 / sve_u1; + sve_u1 % sve_u1; + sve_u1 & sve_u1; + sve_u1 | sve_u1; + sve_u1 ^ sve_u1; + sve_u1 == sve_u1; + sve_u1 != sve_u1; + sve_u1 <= sve_u1; + sve_u1 < sve_u1; + sve_u1 > sve_u1; + sve_u1 >= sve_u1; + sve_u1 <=> sve_u1; // { dg-message {three-way comparison of vectors} } + sve_u1 << sve_u1; + sve_u1 >> sve_u1; + sve_u1 && sve_u1; + sve_u1 || sve_u1; + + sve_u1 + gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 - gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 * gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 / gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 % gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 & gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 | gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 ^ gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 == gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 != gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <= gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 < gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 > gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >= gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <=> gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 << gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >> gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 && gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 || gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + + gnu_u1 + sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 - sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 * sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 / sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 % sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 & sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 | sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 ^ sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 == sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 != sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <= sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 < sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 > sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >= sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <=> sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 << sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >> sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 && sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 || sve_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } gnu_u1 + gnu_u1; gnu_u1 - gnu_u1; @@ -233,45 +233,45 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Vector-scalar binary arithmetic. - sve_u1 + 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\+'} } - sve_u1 - 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator-'} } - sve_u1 * 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\*'} } - sve_u1 / 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator/'} } - sve_u1 % 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator%'} } - sve_u1 & 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\&'} } - sve_u1 | 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\|'} } - sve_u1 ^ 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator\^'} } - sve_u1 == 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator=='} } - sve_u1 != 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator!='} } - sve_u1 <= 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<='} } - sve_u1 < 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<'} } - sve_u1 > 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator>'} } - sve_u1 >= 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator>='} } + sve_u1 + 2; + sve_u1 - 2; + sve_u1 * 2; + sve_u1 / 2; + sve_u1 % 2; + sve_u1 & 2; + sve_u1 | 2; + sve_u1 ^ 2; + sve_u1 == 2; + sve_u1 != 2; + sve_u1 <= 2; + sve_u1 < 2; + sve_u1 > 2; + sve_u1 >= 2; sve_u1 <=> 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<=>'} } - sve_u1 << 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator<<'} } - sve_u1 >> 2; // { dg-error {invalid operands of types 'svuint8_t' and 'int' to binary 'operator>>'} } - sve_u1 && 2; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || 2; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - - sve_u1 + uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\+'} } - sve_u1 - uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator-'} } - sve_u1 * uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\*'} } - sve_u1 / uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator/'} } - sve_u1 % uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator%'} } - sve_u1 & uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\&'} } - sve_u1 | uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\|'} } - sve_u1 ^ uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator\^'} } - sve_u1 == uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator=='} } - sve_u1 != uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator!='} } - sve_u1 <= uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<='} } - sve_u1 < uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<'} } - sve_u1 > uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator>'} } - sve_u1 >= uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator>='} } + sve_u1 << 2; + sve_u1 >> 2; + sve_u1 && 2; + sve_u1 || 2; + + sve_u1 + uc; + sve_u1 - uc; + sve_u1 * uc; + sve_u1 / uc; + sve_u1 % uc; + sve_u1 & uc; + sve_u1 | uc; + sve_u1 ^ uc; + sve_u1 == uc; + sve_u1 != uc; + sve_u1 <= uc; + sve_u1 < uc; + sve_u1 > uc; + sve_u1 >= uc; sve_u1 <=> uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<=>'} } - sve_u1 << uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator<<'} } - sve_u1 >> uc; // { dg-error {invalid operands of types 'svuint8_t' and 'unsigned char' to binary 'operator>>'} } - sve_u1 && uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 || uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + sve_u1 << uc; + sve_u1 >> uc; + sve_u1 && uc; + sve_u1 || uc; gnu_u1 + 2; gnu_u1 - 2; @@ -315,25 +315,25 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Scalar-vector binary 'operatorarithmetic. - 3 + sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\+'} } - 3 - sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator-'} } - 3 * sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\*'} } - 3 / sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator/'} } - 3 % sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator%'} } - 3 & sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\&'} } - 3 | sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\|'} } - 3 ^ sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator\^'} } - 3 == sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator=='} } - 3 != sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator!='} } - 3 <= sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<='} } + 3 + sve_u1; + 3 - sve_u1; + 3 * sve_u1; + 3 / sve_u1; + 3 % sve_u1; + 3 & sve_u1; + 3 | sve_u1; + 3 ^ sve_u1; + 3 == sve_u1; + 3 != sve_u1; + 3 <= sve_u1; 3 <=> sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<=>'} } - 3 < sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<'} } - 3 > sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator>'} } - 3 >= sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator>='} } - 3 << sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator<<'} } - 3 >> sve_u1; // { dg-error {invalid operands of types 'int' and 'svuint8_t' to binary 'operator>>'} } - 3 && sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - 3 || sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + 3 < sve_u1; + 3 > sve_u1; + 3 >= sve_u1; + 3 << sve_u1; + 3 >> sve_u1; + 3 && sve_u1; + 3 || sve_u1; 3 + gnu_u1; 3 - gnu_u1; @@ -357,59 +357,59 @@ f (svuint8_t sve_u1, svint8_t sve_s1, // Mismatched types. - sve_u1 + sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\+'} } - sve_u1 - sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator-'} } - sve_u1 * sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\*'} } - sve_u1 / sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator/'} } - sve_u1 % sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator%'} } - sve_u1 & sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\&'} } - sve_u1 | sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\|'} } - sve_u1 ^ sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator\^'} } - sve_u1 == sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator=='} } - sve_u1 != sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator!='} } - sve_u1 <= sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<='} } - sve_u1 < sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<'} } - sve_u1 > sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator>'} } - sve_u1 >= sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator>='} } - sve_u1 <=> sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<=>'} } - sve_u1 << sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator<<'} } - sve_u1 >> sve_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'svint8_t' to binary 'operator>>'} } - - sve_u1 + gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\+'} } - sve_u1 - gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator-'} } - sve_u1 * gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\*'} } - sve_u1 / gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator/'} } - sve_u1 % gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator%'} } - sve_u1 & gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\&'} } - sve_u1 | gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\|'} } - sve_u1 ^ gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator\^'} } - sve_u1 == gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator=='} } - sve_u1 != gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator!='} } - sve_u1 <= gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<='} } - sve_u1 < gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<'} } - sve_u1 > gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator>'} } - sve_u1 >= gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator>='} } - sve_u1 <=> gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<=>'} } - sve_u1 << gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator<<'} } - sve_u1 >> gnu_s1; // { dg-error {invalid operands of types 'svuint8_t' and 'gnu_int8_t'[^\n]* to binary 'operator>>'} } - - gnu_u1 + sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\+'} } - gnu_u1 - sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator-'} } - gnu_u1 * sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\*'} } - gnu_u1 / sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator/'} } - gnu_u1 % sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator%'} } - gnu_u1 & sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\&'} } - gnu_u1 | sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\|'} } - gnu_u1 ^ sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator\^'} } - gnu_u1 == sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator=='} } - gnu_u1 != sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator!='} } - gnu_u1 <= sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<='} } - gnu_u1 < sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<'} } - gnu_u1 > sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator>'} } - gnu_u1 >= sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator>='} } - gnu_u1 <=> sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<=>'} } - gnu_u1 << sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator<<'} } - gnu_u1 >> sve_s1; // { dg-error {invalid operands of types 'gnu_uint8_t'[^\n]* and 'svint8_t' to binary 'operator>>'} } + sve_u1 + sve_s1; + sve_u1 - sve_s1; + sve_u1 * sve_s1; + sve_u1 / sve_s1; + sve_u1 % sve_s1; + sve_u1 & sve_s1; + sve_u1 | sve_s1; + sve_u1 ^ sve_s1; + sve_u1 == sve_s1; + sve_u1 != sve_s1; + sve_u1 <= sve_s1; + sve_u1 < sve_s1; + sve_u1 > sve_s1; + sve_u1 >= sve_s1; + sve_u1 <=> sve_s1; // { dg-message {three-way comparison of vectors} } + sve_u1 << sve_s1; + sve_u1 >> sve_s1; + + sve_u1 + gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 - gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 * gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 / gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 % gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 & gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 | gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 ^ gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 == gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 != gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <= gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 < gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 > gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >= gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 <=> gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 << gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + sve_u1 >> gnu_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + + gnu_u1 + sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 - sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 * sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 / sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 % sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 & sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 | sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 ^ sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 == sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 != sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <= sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 < sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 > sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >= sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 <=> sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 << sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gnu_u1 >> sve_s1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } gnu_u1 + gnu_s1; gnu_u1 - gnu_s1; @@ -438,35 +438,35 @@ f (svuint8_t sve_u1, svint8_t sve_s1, uc ? sve_u1 : gnu_u1; // { dg-error {operands to '\?:' have different types 'svuint8_t' and 'gnu_uint8_t'} } uc ? gnu_u1 : gnu_u1; - sve_u1 ? sve_u1 : sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? gnu_u1 : sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? sve_u1 : gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? gnu_u1 : gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? sve_u1 : uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? uc : sve_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? gnu_u1 : uc; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } - sve_u1 ? uc : gnu_u1; // { dg-error {could not convert 'sve_u1' from 'svuint8_t' to 'bool'} } + sve_u1 ? sve_u1 : sve_u1; + sve_u1 ? gnu_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} } + sve_u1 ? sve_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} } + sve_u1 ? gnu_u1 : gnu_u1; + sve_u1 ? sve_u1 : uc; + sve_u1 ? uc : sve_u1; + sve_u1 ? gnu_u1 : uc; + sve_u1 ? uc : gnu_u1; - gnu_u1 ? sve_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} } + gnu_u1 ? sve_u1 : sve_u1; gnu_u1 ? gnu_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} } gnu_u1 ? sve_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} } gnu_u1 ? gnu_u1 : gnu_u1; - gnu_u1 ? sve_u1 : uc; // { dg-error {incompatible vector types in conditional expression} } - gnu_u1 ? uc : sve_u1; // { dg-error {incompatible vector types in conditional expression} } + gnu_u1 ? sve_u1 : uc; + gnu_u1 ? uc : sve_u1; gnu_u1 ? gnu_u1 : uc; gnu_u1 ? uc : gnu_u1; // Vector built-ins. - __builtin_shuffle (sve_u1, sve_u1, sve_u1); // { dg-error {'__builtin_shuffle' last argument must be an integer vector} } - __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); // { dg-error {'__builtin_shuffle' arguments must be vectors} } - __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); // { dg-error {'__builtin_shuffle' arguments must be vectors} } - __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); // { dg-error {'__builtin_shuffle' last argument must be an integer vector} } + __builtin_shuffle (sve_u1, sve_u1, sve_u1); + __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } + __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } + __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); __builtin_shuffle (gnu_u1, gnu_u1, gnu_u1); - __builtin_convertvector (sve_u1, svuint8_t); // { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } - __builtin_convertvector (gnu_u1, svuint8_t); // { dg-error {'__builtin_convertvector' second argument must be an integer or floating vector type} } - __builtin_convertvector (sve_u1, gnu_uint8_t); // { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } + __builtin_convertvector (sve_u1, svuint8_t); + __builtin_convertvector (gnu_u1, svuint8_t); + __builtin_convertvector (sve_u1, gnu_uint8_t); __builtin_convertvector (gnu_u1, gnu_uint8_t); // Type queries. diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c index 9db9535831a..7a7eb42f57b 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c @@ -13,13 +13,14 @@ f (svuint8_t sve_u1, svint8_t sve_s1, svuint8_t init_sve_u1 = 0; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'int'} } */ svuint8_t init_sve_u2 = {}; - svuint8_t init_sve_u3 = { sve_u1 }; - svuint8_t init_sve_u4 = { gnu_u1 }; - svuint8_t init_sve_u5 = { sve_s1 }; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'svint8_t'} } */ - svuint8_t init_sve_u6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'svuint8_t'} } */ - svuint8_t init_sve_u7 = { 0 }; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'int'} } */ - svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; /* { dg-warning {excess elements in scalar initializer} } */ - svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; /* { dg-warning {excess elements in scalar initializer} } */ + svuint8_t init_sve_u3 = { sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u4 = { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u5 = { sve_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u7 = { 0 }; + + svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ gnu_uint8_t init_gnu_u1 = 0; /* { dg-error {incompatible types when initializing type 'gnu_uint8_t'[^\n]* using type 'int'} } */ gnu_uint8_t init_gnu_u2 = {}; @@ -32,11 +33,11 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Compound literals. */ (svuint8_t) {}; - (svuint8_t) { 0 }; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'int'} } */ - (svuint8_t) { sve_u1 }; - (svuint8_t) { gnu_u1 }; - (svuint8_t) { sve_s1 }; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'svint8_t'} } */ - (svuint8_t) { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'svuint8_t'} } */ + (svuint8_t) { 0 }; + (svuint8_t) { sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + (svuint8_t) { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + (svuint8_t) { sve_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + (svuint8_t) { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ (gnu_uint8_t) {}; (gnu_uint8_t) { 0 }; @@ -62,9 +63,9 @@ f (svuint8_t sve_u1, svint8_t sve_s1, (void) sve_u1; (svuint8_t) sve_u1; (svuint8_t) gnu_u1; - (svuint8_t) 0; /* { dg-error {conversion to non-scalar type requested} } */ - (svuint8_t) n; /* { dg-error {conversion to non-scalar type requested} } */ - (svint8_t) sve_u1; /* { dg-error {conversion to non-scalar type requested} } */ + (svuint8_t) 0; /* { dg-error {cannot convert a value of type 'int' to vector type '[^']*' which has different size} } */ + (svuint8_t) n; /* { dg-error {cannot convert a value of type 'int' to vector type '[^']*' which has different size} } */ + (svint8_t) sve_u1; (svint8_t) gnu_u1; (void) gnu_u1; @@ -77,7 +78,7 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector indexing. */ - sve_u1[0]; /* { dg-error {subscripted value is neither array nor pointer} } */ + sve_u1[0]; &sve_u1[0]; /* { dg-error {subscripted value is neither array nor pointer} } */ gnu_u1[0]; @@ -85,17 +86,17 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Unary operators. */ - +sve_u1; /* { dg-error {wrong type argument to unary plus} } */ - -sve_u1; /* { dg-error {wrong type argument to unary minus} } */ - ~sve_u1; /* { dg-error {wrong type argument to bit-complement} } */ + +sve_u1; + -sve_u1; + ~sve_u1; !sve_u1; /* { dg-error {wrong type argument to unary exclamation mark} } */ *sve_u1; /* { dg-error {invalid type argument of unary '\*'} } */ __real sve_u1; /* { dg-error {wrong type argument to __real} } */ __imag sve_u1; /* { dg-error {wrong type argument to __imag} } */ - ++sve_u1; /* { dg-error {wrong type argument to increment} } */ - --sve_u1; /* { dg-error {wrong type argument to decrement} } */ - sve_u1++; /* { dg-error {wrong type argument to increment} } */ - sve_u1--; /* { dg-error {wrong type argument to decrement} } */ + ++sve_u1; + --sve_u1; + sve_u1++; + sve_u1--; +gnu_u1; -gnu_u1; @@ -111,60 +112,60 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector-vector binary arithmetic. */ - sve_u1 + sve_u1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - sve_u1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * sve_u1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / sve_u1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % sve_u1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & sve_u1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | sve_u1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ sve_u1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == sve_u1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != sve_u1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= sve_u1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < sve_u1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > sve_u1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= sve_u1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << sve_u1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> sve_u1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + sve_u1; + sve_u1 - sve_u1; + sve_u1 * sve_u1; + sve_u1 / sve_u1; + sve_u1 % sve_u1; + sve_u1 & sve_u1; + sve_u1 | sve_u1; + sve_u1 ^ sve_u1; + sve_u1 == sve_u1; + sve_u1 != sve_u1; + sve_u1 <= sve_u1; + sve_u1 < sve_u1; + sve_u1 > sve_u1; + sve_u1 >= sve_u1; + sve_u1 << sve_u1; + sve_u1 >> sve_u1; sve_u1 && sve_u1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || sve_u1; /* { dg-error {used vector type where scalar is required} } */ - sve_u1 + gnu_u1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - gnu_u1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * gnu_u1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / gnu_u1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % gnu_u1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & gnu_u1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | gnu_u1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ gnu_u1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == gnu_u1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != gnu_u1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= gnu_u1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < gnu_u1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > gnu_u1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= gnu_u1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << gnu_u1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> gnu_u1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 - gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 * gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 / gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 % gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 & gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 | gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 ^ gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 == gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 != gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 <= gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 < gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 > gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >= gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 << gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >> gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ sve_u1 && gnu_u1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || gnu_u1; /* { dg-error {used vector type where scalar is required} } */ - gnu_u1 + sve_u1; /* { dg-error {invalid operands to binary \+} } */ - gnu_u1 - sve_u1; /* { dg-error {invalid operands to binary -} } */ - gnu_u1 * sve_u1; /* { dg-error {invalid operands to binary \*} } */ - gnu_u1 / sve_u1; /* { dg-error {invalid operands to binary /} } */ - gnu_u1 % sve_u1; /* { dg-error {invalid operands to binary %} } */ - gnu_u1 & sve_u1; /* { dg-error {invalid operands to binary \&} } */ - gnu_u1 | sve_u1; /* { dg-error {invalid operands to binary \|} } */ - gnu_u1 ^ sve_u1; /* { dg-error {invalid operands to binary \^} } */ - gnu_u1 == sve_u1; /* { dg-error {invalid operands to binary ==} } */ - gnu_u1 != sve_u1; /* { dg-error {invalid operands to binary !=} } */ - gnu_u1 <= sve_u1; /* { dg-error {invalid operands to binary <=} } */ - gnu_u1 < sve_u1; /* { dg-error {invalid operands to binary <} } */ - gnu_u1 > sve_u1; /* { dg-error {invalid operands to binary >} } */ - gnu_u1 >= sve_u1; /* { dg-error {invalid operands to binary >=} } */ - gnu_u1 << sve_u1; /* { dg-error {invalid operands to binary <<} } */ - gnu_u1 >> sve_u1; /* { dg-error {invalid operands to binary >>} } */ + gnu_u1 + sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 - sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 * sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 / sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 % sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 & sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 | sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 ^ sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 == sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 != sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 <= sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 < sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 > sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >= sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 << sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >> sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ gnu_u1 && sve_u1; /* { dg-error {used vector type where scalar is required} } */ gnu_u1 || sve_u1; /* { dg-error {used vector type where scalar is required} } */ @@ -189,41 +190,41 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector-scalar binary arithmetic. */ - sve_u1 + 2; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - 2; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * 2; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / 2; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % 2; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & 2; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | 2; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ 2; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == 2; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != 2; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= 2; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < 2; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > 2; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= 2; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << 2; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> 2; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + 2; + sve_u1 - 2; + sve_u1 * 2; + sve_u1 / 2; + sve_u1 % 2; + sve_u1 & 2; + sve_u1 | 2; + sve_u1 ^ 2; + sve_u1 == 2; + sve_u1 != 2; + sve_u1 <= 2; + sve_u1 < 2; + sve_u1 > 2; + sve_u1 >= 2; + sve_u1 << 2; + sve_u1 >> 2; sve_u1 && 2; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || 2; /* { dg-error {used vector type where scalar is required} } */ - sve_u1 + uc; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - uc; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * uc; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / uc; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % uc; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & uc; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | uc; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ uc; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == uc; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != uc; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= uc; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < uc; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > uc; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= uc; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << uc; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> uc; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + uc; + sve_u1 - uc; + sve_u1 * uc; + sve_u1 / uc; + sve_u1 % uc; + sve_u1 & uc; + sve_u1 | uc; + sve_u1 ^ uc; + sve_u1 == uc; + sve_u1 != uc; + sve_u1 <= uc; + sve_u1 < uc; + sve_u1 > uc; + sve_u1 >= uc; + sve_u1 << uc; + sve_u1 >> uc; sve_u1 && uc; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || uc; /* { dg-error {used vector type where scalar is required} } */ @@ -267,22 +268,22 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Scalar-vector binary arithmetic. */ - 3 + sve_u1; /* { dg-error {invalid operands to binary \+} } */ - 3 - sve_u1; /* { dg-error {invalid operands to binary -} } */ - 3 * sve_u1; /* { dg-error {invalid operands to binary \*} } */ - 3 / sve_u1; /* { dg-error {invalid operands to binary /} } */ - 3 % sve_u1; /* { dg-error {invalid operands to binary %} } */ - 3 & sve_u1; /* { dg-error {invalid operands to binary \&} } */ - 3 | sve_u1; /* { dg-error {invalid operands to binary \|} } */ - 3 ^ sve_u1; /* { dg-error {invalid operands to binary \^} } */ - 3 == sve_u1; /* { dg-error {invalid operands to binary ==} } */ - 3 != sve_u1; /* { dg-error {invalid operands to binary !=} } */ - 3 <= sve_u1; /* { dg-error {invalid operands to binary <=} } */ - 3 < sve_u1; /* { dg-error {invalid operands to binary <} } */ - 3 > sve_u1; /* { dg-error {invalid operands to binary >} } */ - 3 >= sve_u1; /* { dg-error {invalid operands to binary >=} } */ - 3 << sve_u1; /* { dg-error {invalid operands to binary <<} } */ - 3 >> sve_u1; /* { dg-error {invalid operands to binary >>} } */ + 3 + sve_u1; + 3 - sve_u1; + 3 * sve_u1; + 3 / sve_u1; + 3 % sve_u1; + 3 & sve_u1; + 3 | sve_u1; + 3 ^ sve_u1; + 3 == sve_u1; + 3 != sve_u1; + 3 <= sve_u1; + 3 < sve_u1; + 3 > sve_u1; + 3 >= sve_u1; + 3 << sve_u1; + 3 >> sve_u1; 3 && sve_u1; /* { dg-error {invalid operands to binary \&\&} } */ 3 || sve_u1; /* { dg-error {invalid operands to binary \|\|} } */ @@ -307,60 +308,60 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Mismatched types. */ - sve_u1 + sve_s1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - sve_s1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * sve_s1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / sve_s1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % sve_s1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & sve_s1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | sve_s1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ sve_s1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == sve_s1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != sve_s1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= sve_s1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < sve_s1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > sve_s1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= sve_s1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << sve_s1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> sve_s1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + sve_s1; + sve_u1 - sve_s1; + sve_u1 * sve_s1; + sve_u1 / sve_s1; + sve_u1 % sve_s1; + sve_u1 & sve_s1; + sve_u1 | sve_s1; + sve_u1 ^ sve_s1; + sve_u1 == sve_s1; + sve_u1 != sve_s1; + sve_u1 <= sve_s1; + sve_u1 < sve_s1; + sve_u1 > sve_s1; + sve_u1 >= sve_s1; + sve_u1 << sve_s1; + sve_u1 >> sve_s1; sve_u1 && sve_s1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || sve_s1; /* { dg-error {used vector type where scalar is required} } */ - sve_u1 + gnu_s1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - gnu_s1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * gnu_s1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / gnu_s1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % gnu_s1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & gnu_s1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | gnu_s1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ gnu_s1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == gnu_s1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != gnu_s1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= gnu_s1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < gnu_s1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > gnu_s1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= gnu_s1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << gnu_s1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> gnu_s1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 - gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 * gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 / gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 % gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 & gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 | gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 ^ gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 == gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 != gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 <= gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 < gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 > gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >= gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 << gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >> gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ sve_u1 && gnu_s1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || gnu_s1; /* { dg-error {used vector type where scalar is required} } */ - gnu_u1 + sve_s1; /* { dg-error {invalid operands to binary \+} } */ - gnu_u1 - sve_s1; /* { dg-error {invalid operands to binary -} } */ - gnu_u1 * sve_s1; /* { dg-error {invalid operands to binary \*} } */ - gnu_u1 / sve_s1; /* { dg-error {invalid operands to binary /} } */ - gnu_u1 % sve_s1; /* { dg-error {invalid operands to binary %} } */ - gnu_u1 & sve_s1; /* { dg-error {invalid operands to binary \&} } */ - gnu_u1 | sve_s1; /* { dg-error {invalid operands to binary \|} } */ - gnu_u1 ^ sve_s1; /* { dg-error {invalid operands to binary \^} } */ - gnu_u1 == sve_s1; /* { dg-error {invalid operands to binary ==} } */ - gnu_u1 != sve_s1; /* { dg-error {invalid operands to binary !=} } */ - gnu_u1 <= sve_s1; /* { dg-error {invalid operands to binary <=} } */ - gnu_u1 < sve_s1; /* { dg-error {invalid operands to binary <} } */ - gnu_u1 > sve_s1; /* { dg-error {invalid operands to binary >} } */ - gnu_u1 >= sve_s1; /* { dg-error {invalid operands to binary >=} } */ - gnu_u1 << sve_s1; /* { dg-error {invalid operands to binary <<} } */ - gnu_u1 >> sve_s1; /* { dg-error {invalid operands to binary >>} } */ + gnu_u1 + sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 - sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 * sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 / sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 % sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 & sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 | sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 ^ sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 == sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 != sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 <= sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 < sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 > sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >= sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 << sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >> sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ gnu_u1 && sve_s1; /* { dg-error {used vector type where scalar is required} } */ gnu_u1 || sve_s1; /* { dg-error {used vector type where scalar is required} } */ @@ -402,14 +403,14 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector built-ins. */ - __builtin_shuffle (sve_u1, sve_u1, sve_u1); /* { dg-error {'__builtin_shuffle' last argument must be an integer vector} } */ - __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' arguments must be vectors} } */ - __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' arguments must be vectors} } */ - __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); /* { dg-error {'__builtin_shuffle' last argument must be an integer vector} } */ + __builtin_shuffle (sve_u1, sve_u1, sve_u1); + __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */ + __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */ + __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); __builtin_shuffle (gnu_u1, gnu_u1, gnu_u1); - __builtin_convertvector (sve_u1, svuint8_t); /* { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } */ - __builtin_convertvector (gnu_u1, svuint8_t); /* { dg-error {'__builtin_convertvector' second argument must be an integer or floating vector type} } */ - __builtin_convertvector (sve_u1, gnu_uint8_t); /* { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } */ + __builtin_convertvector (sve_u1, svuint8_t); + __builtin_convertvector (gnu_u1, svuint8_t); + __builtin_convertvector (sve_u1, gnu_uint8_t); __builtin_convertvector (gnu_u1, gnu_uint8_t); } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c index c05b16406a4..2e92b0dd766 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c @@ -13,13 +13,13 @@ f (svuint8_t sve_u1, svint8_t sve_s1, svuint8_t init_sve_u1 = 0; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'int'} } */ svuint8_t init_sve_u2 = {}; - svuint8_t init_sve_u3 = { sve_u1 }; - svuint8_t init_sve_u4 = { gnu_u1 }; - svuint8_t init_sve_u5 = { sve_s1 }; - svuint8_t init_sve_u6 = { gnu_s1 }; - svuint8_t init_sve_u7 = { 0 }; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'int'} } */ - svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; /* { dg-warning {excess elements in scalar initializer} } */ - svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; /* { dg-warning {excess elements in scalar initializer} } */ + svuint8_t init_sve_u3 = { sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u4 = { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u5 = { sve_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u7 = { 0 }; + svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ gnu_uint8_t init_gnu_u1 = 0; /* { dg-error {incompatible types when initializing type 'gnu_uint8_t'[^\n]* using type 'int'} } */ gnu_uint8_t init_gnu_u2 = {}; @@ -32,11 +32,11 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Compound literals. */ (svuint8_t) {}; - (svuint8_t) { 0 }; /* { dg-error {incompatible types when initializing type 'svuint8_t' using type 'int'} } */ - (svuint8_t) { sve_u1 }; - (svuint8_t) { gnu_u1 }; - (svuint8_t) { sve_s1 }; - (svuint8_t) { gnu_s1 }; + (svuint8_t) { 0 }; + (svuint8_t) { sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + (svuint8_t) { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + (svuint8_t) { sve_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ + (svuint8_t) { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */ (gnu_uint8_t) {}; (gnu_uint8_t) { 0 }; @@ -62,8 +62,8 @@ f (svuint8_t sve_u1, svint8_t sve_s1, (void) sve_u1; (svuint8_t) sve_u1; (svuint8_t) gnu_u1; - (svuint8_t) 0; /* { dg-error {conversion to non-scalar type requested} } */ - (svuint8_t) n; /* { dg-error {conversion to non-scalar type requested} } */ + (svuint8_t) 0; /* { dg-error {cannot convert a value of type 'int' to vector type '__SVUint8_t' which has different size} } */ + (svuint8_t) n; /* { dg-error {cannot convert a value of type 'int' to vector type '__SVUint8_t' which has different size} } */ (svint8_t) sve_u1; (svint8_t) gnu_u1; @@ -77,7 +77,7 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector indexing. */ - sve_u1[0]; /* { dg-error {subscripted value is neither array nor pointer} } */ + sve_u1[0]; &sve_u1[0]; /* { dg-error {subscripted value is neither array nor pointer} } */ gnu_u1[0]; @@ -85,17 +85,17 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Unary operators. */ - +sve_u1; /* { dg-error {wrong type argument to unary plus} } */ - -sve_u1; /* { dg-error {wrong type argument to unary minus} } */ - ~sve_u1; /* { dg-error {wrong type argument to bit-complement} } */ + +sve_u1; + -sve_u1; + ~sve_u1; !sve_u1; /* { dg-error {wrong type argument to unary exclamation mark} } */ *sve_u1; /* { dg-error {invalid type argument of unary '\*'} } */ __real sve_u1; /* { dg-error {wrong type argument to __real} } */ __imag sve_u1; /* { dg-error {wrong type argument to __imag} } */ - ++sve_u1; /* { dg-error {wrong type argument to increment} } */ - --sve_u1; /* { dg-error {wrong type argument to decrement} } */ - sve_u1++; /* { dg-error {wrong type argument to increment} } */ - sve_u1--; /* { dg-error {wrong type argument to decrement} } */ + ++sve_u1; + --sve_u1; + sve_u1++; + sve_u1--; +gnu_u1; -gnu_u1; @@ -111,60 +111,60 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector-vector binary arithmetic. */ - sve_u1 + sve_u1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - sve_u1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * sve_u1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / sve_u1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % sve_u1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & sve_u1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | sve_u1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ sve_u1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == sve_u1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != sve_u1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= sve_u1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < sve_u1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > sve_u1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= sve_u1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << sve_u1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> sve_u1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + sve_u1; + sve_u1 - sve_u1; + sve_u1 * sve_u1; + sve_u1 / sve_u1; + sve_u1 % sve_u1; + sve_u1 & sve_u1; + sve_u1 | sve_u1; + sve_u1 ^ sve_u1; + sve_u1 == sve_u1; + sve_u1 != sve_u1; + sve_u1 <= sve_u1; + sve_u1 < sve_u1; + sve_u1 > sve_u1; + sve_u1 >= sve_u1; + sve_u1 << sve_u1; + sve_u1 >> sve_u1; sve_u1 && sve_u1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || sve_u1; /* { dg-error {used vector type where scalar is required} } */ - sve_u1 + gnu_u1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - gnu_u1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * gnu_u1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / gnu_u1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % gnu_u1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & gnu_u1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | gnu_u1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ gnu_u1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == gnu_u1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != gnu_u1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= gnu_u1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < gnu_u1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > gnu_u1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= gnu_u1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << gnu_u1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> gnu_u1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 - gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 * gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 / gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 % gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 & gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 | gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 ^ gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 == gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 != gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 <= gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 < gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 > gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >= gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 << gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >> gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ sve_u1 && gnu_u1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || gnu_u1; /* { dg-error {used vector type where scalar is required} } */ - gnu_u1 + sve_u1; /* { dg-error {invalid operands to binary \+} } */ - gnu_u1 - sve_u1; /* { dg-error {invalid operands to binary -} } */ - gnu_u1 * sve_u1; /* { dg-error {invalid operands to binary \*} } */ - gnu_u1 / sve_u1; /* { dg-error {invalid operands to binary /} } */ - gnu_u1 % sve_u1; /* { dg-error {invalid operands to binary %} } */ - gnu_u1 & sve_u1; /* { dg-error {invalid operands to binary \&} } */ - gnu_u1 | sve_u1; /* { dg-error {invalid operands to binary \|} } */ - gnu_u1 ^ sve_u1; /* { dg-error {invalid operands to binary \^} } */ - gnu_u1 == sve_u1; /* { dg-error {invalid operands to binary ==} } */ - gnu_u1 != sve_u1; /* { dg-error {invalid operands to binary !=} } */ - gnu_u1 <= sve_u1; /* { dg-error {invalid operands to binary <=} } */ - gnu_u1 < sve_u1; /* { dg-error {invalid operands to binary <} } */ - gnu_u1 > sve_u1; /* { dg-error {invalid operands to binary >} } */ - gnu_u1 >= sve_u1; /* { dg-error {invalid operands to binary >=} } */ - gnu_u1 << sve_u1; /* { dg-error {invalid operands to binary <<} } */ - gnu_u1 >> sve_u1; /* { dg-error {invalid operands to binary >>} } */ + gnu_u1 + sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 - sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 * sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 / sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 % sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 & sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 | sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 ^ sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 == sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 != sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 <= sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 < sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 > sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >= sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 << sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >> sve_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ gnu_u1 && sve_u1; /* { dg-error {used vector type where scalar is required} } */ gnu_u1 || sve_u1; /* { dg-error {used vector type where scalar is required} } */ @@ -189,41 +189,41 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector-scalar binary arithmetic. */ - sve_u1 + 2; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - 2; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * 2; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / 2; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % 2; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & 2; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | 2; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ 2; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == 2; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != 2; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= 2; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < 2; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > 2; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= 2; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << 2; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> 2; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + 2; + sve_u1 - 2; + sve_u1 * 2; + sve_u1 / 2; + sve_u1 % 2; + sve_u1 & 2; + sve_u1 | 2; + sve_u1 ^ 2; + sve_u1 == 2; + sve_u1 != 2; + sve_u1 <= 2; + sve_u1 < 2; + sve_u1 > 2; + sve_u1 >= 2; + sve_u1 << 2; + sve_u1 >> 2; sve_u1 && 2; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || 2; /* { dg-error {used vector type where scalar is required} } */ - sve_u1 + uc; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - uc; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * uc; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / uc; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % uc; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & uc; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | uc; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ uc; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == uc; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != uc; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= uc; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < uc; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > uc; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= uc; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << uc; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> uc; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + uc; + sve_u1 - uc; + sve_u1 * uc; + sve_u1 / uc; + sve_u1 % uc; + sve_u1 & uc; + sve_u1 | uc; + sve_u1 ^ uc; + sve_u1 == uc; + sve_u1 != uc; + sve_u1 <= uc; + sve_u1 < uc; + sve_u1 > uc; + sve_u1 >= uc; + sve_u1 << uc; + sve_u1 >> uc; sve_u1 && uc; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || uc; /* { dg-error {used vector type where scalar is required} } */ @@ -267,22 +267,22 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Scalar-vector binary arithmetic. */ - 3 + sve_u1; /* { dg-error {invalid operands to binary \+} } */ - 3 - sve_u1; /* { dg-error {invalid operands to binary -} } */ - 3 * sve_u1; /* { dg-error {invalid operands to binary \*} } */ - 3 / sve_u1; /* { dg-error {invalid operands to binary /} } */ - 3 % sve_u1; /* { dg-error {invalid operands to binary %} } */ - 3 & sve_u1; /* { dg-error {invalid operands to binary \&} } */ - 3 | sve_u1; /* { dg-error {invalid operands to binary \|} } */ - 3 ^ sve_u1; /* { dg-error {invalid operands to binary \^} } */ - 3 == sve_u1; /* { dg-error {invalid operands to binary ==} } */ - 3 != sve_u1; /* { dg-error {invalid operands to binary !=} } */ - 3 <= sve_u1; /* { dg-error {invalid operands to binary <=} } */ - 3 < sve_u1; /* { dg-error {invalid operands to binary <} } */ - 3 > sve_u1; /* { dg-error {invalid operands to binary >} } */ - 3 >= sve_u1; /* { dg-error {invalid operands to binary >=} } */ - 3 << sve_u1; /* { dg-error {invalid operands to binary <<} } */ - 3 >> sve_u1; /* { dg-error {invalid operands to binary >>} } */ + 3 + sve_u1; + 3 - sve_u1; + 3 * sve_u1; + 3 / sve_u1; + 3 % sve_u1; + 3 & sve_u1; + 3 | sve_u1; + 3 ^ sve_u1; + 3 == sve_u1; + 3 != sve_u1; + 3 <= sve_u1; + 3 < sve_u1; + 3 > sve_u1; + 3 >= sve_u1; + 3 << sve_u1; + 3 >> sve_u1; 3 && sve_u1; /* { dg-error {invalid operands to binary \&\&} } */ 3 || sve_u1; /* { dg-error {invalid operands to binary \|\|} } */ @@ -307,60 +307,60 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Mismatched types. */ - sve_u1 + sve_s1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - sve_s1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * sve_s1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / sve_s1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % sve_s1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & sve_s1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | sve_s1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ sve_s1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == sve_s1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != sve_s1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= sve_s1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < sve_s1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > sve_s1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= sve_s1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << sve_s1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> sve_s1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + sve_s1; + sve_u1 - sve_s1; + sve_u1 * sve_s1; + sve_u1 / sve_s1; + sve_u1 % sve_s1; + sve_u1 & sve_s1; + sve_u1 | sve_s1; + sve_u1 ^ sve_s1; + sve_u1 == sve_s1; + sve_u1 != sve_s1; + sve_u1 <= sve_s1; + sve_u1 < sve_s1; + sve_u1 > sve_s1; + sve_u1 >= sve_s1; + sve_u1 << sve_s1; + sve_u1 >> sve_s1; sve_u1 && sve_s1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || sve_s1; /* { dg-error {used vector type where scalar is required} } */ - sve_u1 + gnu_s1; /* { dg-error {invalid operands to binary \+} } */ - sve_u1 - gnu_s1; /* { dg-error {invalid operands to binary -} } */ - sve_u1 * gnu_s1; /* { dg-error {invalid operands to binary \*} } */ - sve_u1 / gnu_s1; /* { dg-error {invalid operands to binary /} } */ - sve_u1 % gnu_s1; /* { dg-error {invalid operands to binary %} } */ - sve_u1 & gnu_s1; /* { dg-error {invalid operands to binary \&} } */ - sve_u1 | gnu_s1; /* { dg-error {invalid operands to binary \|} } */ - sve_u1 ^ gnu_s1; /* { dg-error {invalid operands to binary \^} } */ - sve_u1 == gnu_s1; /* { dg-error {invalid operands to binary ==} } */ - sve_u1 != gnu_s1; /* { dg-error {invalid operands to binary !=} } */ - sve_u1 <= gnu_s1; /* { dg-error {invalid operands to binary <=} } */ - sve_u1 < gnu_s1; /* { dg-error {invalid operands to binary <} } */ - sve_u1 > gnu_s1; /* { dg-error {invalid operands to binary >} } */ - sve_u1 >= gnu_s1; /* { dg-error {invalid operands to binary >=} } */ - sve_u1 << gnu_s1; /* { dg-error {invalid operands to binary <<} } */ - sve_u1 >> gnu_s1; /* { dg-error {invalid operands to binary >>} } */ + sve_u1 + gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 - gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 * gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 / gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 % gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 & gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 | gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 ^ gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 == gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 != gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 <= gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 < gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 > gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >= gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 << gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + sve_u1 >> gnu_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ sve_u1 && gnu_s1; /* { dg-error {used vector type where scalar is required} } */ sve_u1 || gnu_s1; /* { dg-error {used vector type where scalar is required} } */ - gnu_u1 + sve_s1; /* { dg-error {invalid operands to binary \+} } */ - gnu_u1 - sve_s1; /* { dg-error {invalid operands to binary -} } */ - gnu_u1 * sve_s1; /* { dg-error {invalid operands to binary \*} } */ - gnu_u1 / sve_s1; /* { dg-error {invalid operands to binary /} } */ - gnu_u1 % sve_s1; /* { dg-error {invalid operands to binary %} } */ - gnu_u1 & sve_s1; /* { dg-error {invalid operands to binary \&} } */ - gnu_u1 | sve_s1; /* { dg-error {invalid operands to binary \|} } */ - gnu_u1 ^ sve_s1; /* { dg-error {invalid operands to binary \^} } */ - gnu_u1 == sve_s1; /* { dg-error {invalid operands to binary ==} } */ - gnu_u1 != sve_s1; /* { dg-error {invalid operands to binary !=} } */ - gnu_u1 <= sve_s1; /* { dg-error {invalid operands to binary <=} } */ - gnu_u1 < sve_s1; /* { dg-error {invalid operands to binary <} } */ - gnu_u1 > sve_s1; /* { dg-error {invalid operands to binary >} } */ - gnu_u1 >= sve_s1; /* { dg-error {invalid operands to binary >=} } */ - gnu_u1 << sve_s1; /* { dg-error {invalid operands to binary <<} } */ - gnu_u1 >> sve_s1; /* { dg-error {invalid operands to binary >>} } */ + gnu_u1 + sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 - sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 * sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 / sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 % sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 & sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 | sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 ^ sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 == sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 != sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 <= sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 < sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 > sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >= sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 << sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gnu_u1 >> sve_s1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ gnu_u1 && sve_s1; /* { dg-error {used vector type where scalar is required} } */ gnu_u1 || sve_s1; /* { dg-error {used vector type where scalar is required} } */ @@ -402,14 +402,14 @@ f (svuint8_t sve_u1, svint8_t sve_s1, /* Vector built-ins. */ - __builtin_shuffle (sve_u1, sve_u1, sve_u1); /* { dg-error {'__builtin_shuffle' last argument must be an integer vector} } */ - __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' arguments must be vectors} } */ - __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' arguments must be vectors} } */ - __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); /* { dg-error {'__builtin_shuffle' last argument must be an integer vector} } */ + __builtin_shuffle (sve_u1, sve_u1, sve_u1); + __builtin_shuffle (sve_u1, gnu_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */ + __builtin_shuffle (gnu_u1, sve_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */ + __builtin_shuffle (gnu_u1, gnu_u1, sve_u1); __builtin_shuffle (gnu_u1, gnu_u1, gnu_u1); - __builtin_convertvector (sve_u1, svuint8_t); /* { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } */ - __builtin_convertvector (gnu_u1, svuint8_t); /* { dg-error {'__builtin_convertvector' second argument must be an integer or floating vector type} } */ - __builtin_convertvector (sve_u1, gnu_uint8_t); /* { dg-error {'__builtin_convertvector' first argument must be an integer or floating vector} } */ + __builtin_convertvector (sve_u1, svuint8_t); + __builtin_convertvector (gnu_u1, svuint8_t); + __builtin_convertvector (sve_u1, gnu_uint8_t); __builtin_convertvector (gnu_u1, gnu_uint8_t); } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c index b0389fa00a8..f6823a498ab 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c @@ -73,7 +73,7 @@ statements (int n) /* Compound literals. */ (svint8_t) {}; - (svint8_t) { sve_sc1 }; + (svint8_t) { sve_sc1 }; /* { dg-error {incompatible types when initializing type 'signed char' using type 'svint8_t'} } */ (int) { sve_sc1 }; /* { dg-error {incompatible types when initializing type 'int' using type 'svint8_t'} } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c index d16f40b5f2a..63a2d7130e1 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c @@ -73,7 +73,7 @@ statements (int n) /* Compound literals. */ (svint8_t) {}; - (svint8_t) { sve_sc1 }; + (svint8_t) { sve_sc1 }; /* { dg-error {incompatible types when initializing type 'signed char' using type 'svint8_t'} } */ (int) { sve_sc1 }; /* { dg-error {incompatible types when initializing type 'int' using type 'svint8_t'} } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_7.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_7.c index edfadb8da38..7df9aaf45c6 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_7.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_7.c @@ -47,25 +47,25 @@ f (int c) svbool_t sb; fixed_bool_t fb; - ss8 = ss8 + ss8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - ss8 = ss8 + fs8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - ss8 = ss8 + gs8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - ss8 += ss8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - ss8 += fs8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - ss8 += gs8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - - fs8 = fs8 + ss8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } + ss8 = ss8 + ss8; + ss8 = ss8 + fs8; + ss8 = ss8 + gs8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + ss8 += ss8; + ss8 += fs8; + ss8 += gs8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + + fs8 = fs8 + ss8; fs8 = fs8 + fs8; - fs8 = fs8 + gs8; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } - fs8 += ss8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } + fs8 = fs8 + gs8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + fs8 += ss8; fs8 += fs8; - fs8 += gs8; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + fs8 += gs8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ - gs8 = gs8 + ss8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - gs8 = gs8 + fs8; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gs8 = gs8 + ss8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gs8 = gs8 + fs8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ gs8 = gs8 + gs8; - gs8 += ss8; // { dg-error {invalid operands [^\n]* binary[^\n]*\+} } - gs8 += fs8; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} } + gs8 += ss8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ + gs8 += fs8; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */ gs8 += gs8; fs8 = ss8; -- 2.25.1