[v3,7/8] aarch64: Update SVE ACLE tests

Message ID 20241129035404.3363162-8-tejas.belagod@arm.com
State New
Headers
Series aarch64: Enable C/C++ operations on SVE ACLE types. |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_gcc_build--master-arm fail Patch failed to apply

Commit Message

Tejas Belagod Nov. 29, 2024, 3:54 a.m. UTC
  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(-)
  

Patch

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 747bac464a5..9677b6535fd 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
@@ -86,7 +86,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 33cd21610ea..73828a5729f 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
@@ -85,7 +85,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;