diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
--- a/clang/include/clang/Sema/Sema.h
+++ b/clang/include/clang/Sema/Sema.h
@@ -11942,7 +11942,8 @@
 
   // type checking for sizeless vector binary operators.
   QualType CheckSizelessVectorOperands(ExprResult &LHS, ExprResult &RHS,
-                                       SourceLocation Loc);
+                                       SourceLocation Loc,
+                                       ArithConvKind OperationKind);
 
   /// Type checking for matrix binary operators.
   QualType CheckMatrixElementwiseOperands(ExprResult &LHS, ExprResult &RHS,
diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp
--- a/clang/lib/AST/Type.cpp
+++ b/clang/lib/AST/Type.cpp
@@ -1899,8 +1899,14 @@
 bool Type::hasIntegerRepresentation() const {
   if (const auto *VT = dyn_cast<VectorType>(CanonicalType))
     return VT->getElementType()->isIntegerType();
-  else
-    return isIntegerType();
+  if (CanonicalType->isVLSTBuiltinType()) {
+    const auto *VT = cast<BuiltinType>(CanonicalType);
+    return VT->getKind() == BuiltinType::SveBool ||
+           (VT->getKind() >= BuiltinType::SveInt8 &&
+            VT->getKind() <= BuiltinType::SveUint64);
+  }
+
+  return isIntegerType();
 }
 
 /// Determine whether this type is an integral type.
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -10448,7 +10448,8 @@
 }
 
 QualType Sema::CheckSizelessVectorOperands(ExprResult &LHS, ExprResult &RHS,
-                                           SourceLocation Loc) {
+                                           SourceLocation Loc,
+                                           ArithConvKind OperationKind) {
   QualType LHSType = LHS.get()->getType().getUnqualifiedType();
   QualType RHSType = RHS.get()->getType().getUnqualifiedType();
 
@@ -10456,7 +10457,8 @@
   const BuiltinType *RHSVecType = RHSType->getAs<BuiltinType>();
 
   unsigned DiagID = diag::err_typecheck_invalid_operands;
-  if (LHSVecType->isSVEBool() || RHSVecType->isSVEBool()) {
+  if ((OperationKind == ACK_Arithmetic) &&
+      (LHSVecType->isSVEBool() || RHSVecType->isSVEBool())) {
     Diag(Loc, DiagID) << LHSType << RHSType << LHS.get()->getSourceRange()
                       << RHS.get()->getSourceRange();
     return QualType();
@@ -10582,7 +10584,7 @@
                                /*AllowBothBool*/ getLangOpts().AltiVec,
                                /*AllowBoolConversions*/ false);
   if (LHSTy->isVLSTBuiltinType() || RHSTy->isVLSTBuiltinType())
-    return CheckSizelessVectorOperands(LHS, RHS, Loc);
+    return CheckSizelessVectorOperands(LHS, RHS, Loc, ACK_Arithmetic);
   if (!IsDiv &&
       (LHSTy->isConstantMatrixType() || RHSTy->isConstantMatrixType()))
     return CheckMatrixMultiplyOperands(LHS, RHS, Loc, IsCompAssign);
@@ -10630,7 +10632,7 @@
             ->getType()
             ->getSveEltType(Context)
             ->hasIntegerRepresentation())
-      return CheckSizelessVectorOperands(LHS, RHS, Loc);
+      return CheckSizelessVectorOperands(LHS, RHS, Loc, ACK_Arithmetic);
 
     return InvalidOperands(Loc, LHS, RHS);
   }
@@ -10942,7 +10944,8 @@
 
   if (LHS.get()->getType()->isVLSTBuiltinType() ||
       RHS.get()->getType()->isVLSTBuiltinType()) {
-    QualType compType = CheckSizelessVectorOperands(LHS, RHS, Loc);
+    QualType compType =
+        CheckSizelessVectorOperands(LHS, RHS, Loc, ACK_Arithmetic);
     if (CompLHSTy)
       *CompLHSTy = compType;
     return compType;
@@ -11054,7 +11057,8 @@
 
   if (LHS.get()->getType()->isVLSTBuiltinType() ||
       RHS.get()->getType()->isVLSTBuiltinType()) {
-    QualType compType = CheckSizelessVectorOperands(LHS, RHS, Loc);
+    QualType compType =
+        CheckSizelessVectorOperands(LHS, RHS, Loc, ACK_Arithmetic);
     if (CompLHSTy)
       *CompLHSTy = compType;
     return compType;
@@ -11384,6 +11388,10 @@
     return checkVectorShift(*this, LHS, RHS, Loc, IsCompAssign);
   }
 
+  if (LHS.get()->getType()->isVLSTBuiltinType() ||
+      RHS.get()->getType()->isVLSTBuiltinType())
+    return InvalidOperands(Loc, LHS, RHS);
+
   // Shifts don't perform usual arithmetic conversions, they just do integer
   // promotions on each operand. C99 6.5.7p3
 
@@ -12827,6 +12835,14 @@
     return InvalidOperands(Loc, LHS, RHS);
   }
 
+  if (LHS.get()->getType()->isVLSTBuiltinType() ||
+      RHS.get()->getType()->isVLSTBuiltinType()) {
+    if (LHS.get()->getType()->hasIntegerRepresentation() &&
+        RHS.get()->getType()->hasIntegerRepresentation())
+      return CheckSizelessVectorOperands(LHS, RHS, Loc, ACK_BitwiseOp);
+    return InvalidOperands(Loc, LHS, RHS);
+  }
+
   if (Opc == BO_And)
     diagnoseLogicalNotOnLHSofCheck(*this, LHS, RHS, Loc, Opc);
 
diff --git a/clang/test/CodeGen/aarch64-sve-vector-ops.c b/clang/test/CodeGen/aarch64-sve-vector-arith-ops.c
rename from clang/test/CodeGen/aarch64-sve-vector-ops.c
rename to clang/test/CodeGen/aarch64-sve-vector-arith-ops.c
diff --git a/clang/test/CodeGen/aarch64-sve-vector-bitwise-ops.c b/clang/test/CodeGen/aarch64-sve-vector-bitwise-ops.c
new file mode 100644
--- /dev/null
+++ b/clang/test/CodeGen/aarch64-sve-vector-bitwise-ops.c
@@ -0,0 +1,265 @@
+// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve \
+// RUN: -fallow-half-arguments-and-returns \
+// RUN:  -O1 -emit-llvm -o - %s 2>&1 | FileCheck %s
+
+#include <arm_sve.h>
+
+// AND
+
+svbool_t and_bool(svbool_t a, svbool_t b) {
+  // CHECK-LABEL: and_bool
+  // CHECK: %and = and <vscale x 16 x i1> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i1> %and
+  return a & b;
+}
+
+svint8_t and_i8(svint8_t a, svint8_t b) {
+  // CHECK-LABEL: and_i8
+  // CHECK: %and = and <vscale x 16 x i8> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i8> %and
+  return a & b;
+}
+
+svint16_t and_i16(svint16_t a, svint16_t b) {
+  // CHECK-LABEL: and_i16
+  // CHECK: %and = and <vscale x 8 x i16> %b, %a
+  // CHECK-NEXT: ret <vscale x 8 x i16> %and
+  return a & b;
+}
+
+svint32_t and_i32(svint32_t a, svint32_t b) {
+  // CHECK-LABEL: and_i32
+  // CHECK: %and = and <vscale x 4 x i32> %b, %a
+  // CHECK-NEXT: ret <vscale x 4 x i32> %and
+  return a & b;
+}
+
+svint64_t and_i64(svint64_t a, svint64_t b) {
+  // CHECK-LABEL: and_i64
+  // CHECK: %and = and <vscale x 2 x i64> %b, %a
+  // CHECK-NEXT: ret <vscale x 2 x i64> %and
+  return a & b;
+}
+
+svuint8_t and_u8(svuint8_t a, svuint8_t b) {
+  // CHECK-LABEL: and_u8
+  // CHECK: %and = and <vscale x 16 x i8> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i8> %and
+  return a & b;
+}
+
+svuint16_t and_u16(svuint16_t a, svuint16_t b) {
+  // CHECK-LABEL: and_u16
+  // CHECK: %and = and <vscale x 8 x i16> %b, %a
+  // CHECK-NEXT: ret <vscale x 8 x i16> %and
+  return a & b;
+}
+
+svuint32_t and_u32(svuint32_t a, svuint32_t b) {
+  // CHECK-LABEL: and_u32
+  // CHECK: %and = and <vscale x 4 x i32> %b, %a
+  // CHECK-NEXT: ret <vscale x 4 x i32> %and
+  return a & b;
+}
+
+svuint64_t and_u64(svuint64_t a, svuint64_t b) {
+  // CHECK-LABEL: and_u64
+  // CHECK: %and = and <vscale x 2 x i64> %b, %a
+  // CHECK-NEXT: ret <vscale x 2 x i64> %and
+  return a & b;
+}
+
+// OR
+
+svbool_t or_bool(svbool_t a, svbool_t b) {
+  // CHECK-LABEL: or_bool
+  // CHECK: %or = or <vscale x 16 x i1> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i1> %or
+  return a | b;
+}
+
+svint8_t or_i8(svint8_t a, svint8_t b) {
+  // CHECK-LABEL: or_i8
+  // CHECK: %or = or <vscale x 16 x i8> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i8> %or
+  return a | b;
+}
+
+svint16_t or_i16(svint16_t a, svint16_t b) {
+  // CHECK-LABEL: or_i16
+  // CHECK: %or = or <vscale x 8 x i16> %b, %a
+  // CHECK-NEXT: ret <vscale x 8 x i16> %or
+  return a | b;
+}
+
+svint32_t or_i32(svint32_t a, svint32_t b) {
+  // CHECK-LABEL: or_i32
+  // CHECK: %or = or <vscale x 4 x i32> %b, %a
+  // CHECK-NEXT: ret <vscale x 4 x i32> %or
+  return a | b;
+}
+
+svint64_t or_i64(svint64_t a, svint64_t b) {
+  // CHECK-LABEL: or_i64
+  // CHECK: %or = or <vscale x 2 x i64> %b, %a
+  // CHECK-NEXT: ret <vscale x 2 x i64> %or
+  return a | b;
+}
+
+svuint8_t or_u8(svuint8_t a, svuint8_t b) {
+  // CHECK-LABEL: or_u8
+  // CHECK: %or = or <vscale x 16 x i8> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i8> %or
+  return a | b;
+}
+
+svuint16_t or_u16(svuint16_t a, svuint16_t b) {
+  // CHECK-LABEL: or_u16
+  // CHECK: %or = or <vscale x 8 x i16> %b, %a
+  // CHECK-NEXT: ret <vscale x 8 x i16> %or
+  return a | b;
+}
+
+svuint32_t or_u32(svuint32_t a, svuint32_t b) {
+  // CHECK-LABEL: or_u32
+  // CHECK: %or = or <vscale x 4 x i32> %b, %a
+  // CHECK-NEXT: ret <vscale x 4 x i32> %or
+  return a | b;
+}
+
+svuint64_t or_u64(svuint64_t a, svuint64_t b) {
+  // CHECK-LABEL: or_u64
+  // CHECK: %or = or <vscale x 2 x i64> %b, %a
+  // CHECK-NEXT: ret <vscale x 2 x i64> %or
+  return a | b;
+}
+
+// XOR
+
+svbool_t xor_bool(svbool_t a, svbool_t b) {
+  // CHECK-LABEL: xor_bool
+  // CHECK: %xor = xor <vscale x 16 x i1> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i1> %xor
+  return a ^ b;
+}
+
+svint8_t xor_i8(svint8_t a, svint8_t b) {
+  // CHECK-LABEL: xor_i8
+  // CHECK: %xor = xor <vscale x 16 x i8> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i8> %xor
+  return a ^ b;
+}
+
+svint16_t xor_i16(svint16_t a, svint16_t b) {
+  // CHECK-LABEL: xor_i16
+  // CHECK: %xor = xor <vscale x 8 x i16> %b, %a
+  // CHECK-NEXT: ret <vscale x 8 x i16> %xor
+  return a ^ b;
+}
+
+svint32_t xor_i32(svint32_t a, svint32_t b) {
+  // CHECK-LABEL: xor_i32
+  // CHECK: %xor = xor <vscale x 4 x i32> %b, %a
+  // CHECK-NEXT: ret <vscale x 4 x i32> %xor
+  return a ^ b;
+}
+
+svint64_t xor_i64(svint64_t a, svint64_t b) {
+  // CHECK-LABEL: xor_i64
+  // CHECK: %xor = xor <vscale x 2 x i64> %b, %a
+  // CHECK-NEXT: ret <vscale x 2 x i64> %xor
+  return a ^ b;
+}
+
+svuint8_t xor_u8(svuint8_t a, svuint8_t b) {
+  // CHECK-LABEL: xor_u8
+  // CHECK: %xor = xor <vscale x 16 x i8> %b, %a
+  // CHECK-NEXT: ret <vscale x 16 x i8> %xor
+  return a ^ b;
+}
+
+svuint16_t xor_u16(svuint16_t a, svuint16_t b) {
+  // CHECK-LABEL: xor_u16
+  // CHECK: %xor = xor <vscale x 8 x i16> %b, %a
+  // CHECK-NEXT: ret <vscale x 8 x i16> %xor
+  return a ^ b;
+}
+
+svuint32_t xor_u32(svuint32_t a, svuint32_t b) {
+  // CHECK-LABEL: xor_u32
+  // CHECK: %xor = xor <vscale x 4 x i32> %b, %a
+  // CHECK-NEXT: ret <vscale x 4 x i32> %xor
+  return a ^ b;
+}
+
+svuint64_t xor_u64(svuint64_t a, svuint64_t b) {
+  // CHECK-LABEL: xor_u64
+  // CHECK: %xor = xor <vscale x 2 x i64> %b, %a
+  // CHECK-NEXT: ret <vscale x 2 x i64> %xor
+  return a ^ b;
+}
+
+// NEG
+
+svbool_t neg_bool(svbool_t a) {
+  // CHECK-LABEL: neg_bool
+  // CHECK: %neg = xor <vscale x 16 x i1> %a, shufflevector (<vscale x 16 x i1> insertelement (<vscale x 16 x i1> poison, i1 true, i32 0), <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 16 x i1> %neg
+  return ~a;
+}
+
+svint8_t neg_i8(svint8_t a) {
+  // CHECK-LABEL: neg_i8
+  // CHECK: %neg = xor <vscale x 16 x i8> %a, shufflevector (<vscale x 16 x i8> insertelement (<vscale x 16 x i8> poison, i8 -1, i32 0), <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 16 x i8> %neg
+  return ~a;
+}
+
+svint16_t neg_i16(svint16_t a) {
+  // CHECK-LABEL: neg_i16
+  // CHECK: %neg = xor <vscale x 8 x i16> %a, shufflevector (<vscale x 8 x i16> insertelement (<vscale x 8 x i16> poison, i16 -1, i32 0), <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 8 x i16> %neg
+  return ~a;
+}
+
+svint32_t neg_i32(svint32_t a) {
+  // CHECK-LABEL: neg_i32
+  // CHECK: %neg = xor <vscale x 4 x i32> %a, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 -1, i32 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 4 x i32> %neg
+  return ~a;
+}
+
+svint64_t neg_i64(svint64_t a) {
+  // CHECK-LABEL: neg_i64
+  // CHECK: %neg = xor <vscale x 2 x i64> %a, shufflevector (<vscale x 2 x i64> insertelement (<vscale x 2 x i64> poison, i64 -1, i32 0), <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 2 x i64> %neg
+  return ~a;
+}
+
+svuint8_t neg_u8(svuint8_t a) {
+  // CHECK-LABEL: neg_u8
+  // CHECK: %neg = xor <vscale x 16 x i8> %a, shufflevector (<vscale x 16 x i8> insertelement (<vscale x 16 x i8> poison, i8 -1, i32 0), <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 16 x i8> %neg
+  return ~a;
+}
+
+svuint16_t neg_u16(svuint16_t a) {
+  // CHECK-LABEL: neg_u16
+  // CHECK: %neg = xor <vscale x 8 x i16> %a, shufflevector (<vscale x 8 x i16> insertelement (<vscale x 8 x i16> poison, i16 -1, i32 0), <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 8 x i16> %neg
+  return ~a;
+}
+
+svuint32_t neg_u32(svuint32_t a) {
+  // CHECK-LABEL: neg_u32
+  // CHECK: %neg = xor <vscale x 4 x i32> %a, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 -1, i32 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 4 x i32> %neg
+  return ~a;
+}
+
+svuint64_t neg_u64(svuint64_t a) {
+  // CHECK-LABEL: neg_u64
+  // CHECK: %neg = xor <vscale x 2 x i64> %a, shufflevector (<vscale x 2 x i64> insertelement (<vscale x 2 x i64> poison, i64 -1, i32 0), <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer)
+  // CHECK-NEXT: ret <vscale x 2 x i64> %neg
+  return ~a;
+}
diff --git a/clang/test/Sema/aarch64-sve-vector-ops.c b/clang/test/Sema/aarch64-sve-vector-arith-ops.c
rename from clang/test/Sema/aarch64-sve-vector-ops.c
rename to clang/test/Sema/aarch64-sve-vector-arith-ops.c
diff --git a/clang/test/Sema/aarch64-sve-vector-bitwise-ops.c b/clang/test/Sema/aarch64-sve-vector-bitwise-ops.c
new file mode 100644
--- /dev/null
+++ b/clang/test/Sema/aarch64-sve-vector-bitwise-ops.c
@@ -0,0 +1,394 @@
+// RUN: %clang_cc1 -verify -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -fsyntax-only %s
+
+// REQUIRES: aarch64-registered-target || arm-registered-target
+
+#include <arm_sve.h>
+
+void and (svint8_t i8, svint16_t i16, svint32_t i32, svint64_t i64,
+          svuint8_t u8, svuint16_t u16, svuint32_t u32, svuint64_t u64,
+          svfloat16_t f16, svfloat32_t f32, svfloat64_t f64,
+          svbool_t b) {
+  (void)(i8 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u8 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i16 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u16 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i32 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u32 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i64 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u64 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f16 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f32 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & u64); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 & f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f64 & b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & u16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & u32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 & f64); // expected-error{{invalid operands to binary expression}}
+}
+
+void or (svint8_t i8, svint16_t i16, svint32_t i32, svint64_t i64,
+         svuint8_t u8, svuint16_t u16, svuint32_t u32, svuint64_t u64,
+         svfloat16_t f16, svfloat32_t f32, svfloat64_t f64,
+         svbool_t b) {
+  (void)(i8 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u8 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i16 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u16 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i32 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u32 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i64 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u64 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f16 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f32 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | u64); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 | f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f64 | b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | u16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | u32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 | f64); // expected-error{{invalid operands to binary expression}}
+}
+
+void xor (svint8_t i8, svint16_t i16, svint32_t i32, svint64_t i64, svuint8_t u8, svuint16_t u16, svuint32_t u32, svuint64_t u64, svfloat16_t f16, svfloat32_t f32, svfloat64_t f64, svbool_t b) {
+  (void)(i8 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i8 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u8 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u8 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i16 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i16 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u16 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u16 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i32 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i32 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u32 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u32 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(i64 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(i64 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(u64 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(u64 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f16 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f16 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f32 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ u64); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f32 ^ f64); // expected-error{{invalid operands to binary expression}}
+
+  (void)(f64 ^ b);   // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ i8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ i16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ i32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ i64); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ u8);  // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ u16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ u32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ f16); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ f32); // expected-error{{invalid operands to binary expression}}
+  (void)(f64 ^ f64); // expected-error{{invalid operands to binary expression}}
+}
+
+    void not(svfloat16_t f16, svfloat32_t f32, svfloat32_t f64) {
+  (void)(~f16); // expected-error{{invalid argument type}}
+  (void)(~f32); // expected-error{{invalid argument type}}
+  (void)(~f64); // expected-error{{invalid argument type}}
+}
diff --git a/clang/test/Sema/attr-arm-sve-vector-bits.c b/clang/test/Sema/attr-arm-sve-vector-bits.c
--- a/clang/test/Sema/attr-arm-sve-vector-bits.c
+++ b/clang/test/Sema/attr-arm-sve-vector-bits.c
@@ -165,13 +165,13 @@
   gs8 = gs8 == ss8; // expected-error {{cannot combine GNU and SVE vectors in expression, result is ambiguous}}
   gs8 = gs8 == fs8; // expected-error {{cannot combine GNU and SVE vectors in expression, result is ambiguous}}
 
-  ss8 = ss8 & fs8; // expected-error {{invalid operands to binary expression}}
-  ss8 = ss8 & gs8; // expected-error {{invalid operands to binary expression}}
+  ss8 = ss8 & fs8; // expected-error {{cannot combine fixed-length and sizeless SVE vectors in expression, result is ambiguous}}
+  ss8 = ss8 & gs8; // expected-error {{cannot combine GNU and SVE vectors in expression, result is ambiguous}}
 
-  fs8 = fs8 & ss8; // expected-error {{invalid operands to binary expression}}
+  fs8 = fs8 & ss8; // expected-error {{cannot combine fixed-length and sizeless SVE vectors in expression, result is ambiguous}}
   fs8 = fs8 & gs8; // expected-error {{cannot combine GNU and SVE vectors in expression, result is ambiguous}}
 
-  gs8 = gs8 & ss8; // expected-error {{invalid operands to binary expression}}
+  gs8 = gs8 & ss8; // expected-error {{cannot combine GNU and SVE vectors in expression, result is ambiguous}}
   gs8 = gs8 & fs8; // expected-error {{cannot combine GNU and SVE vectors in expression, result is ambiguous}}
 }
 
diff --git a/clang/test/Sema/sizeless-1.c b/clang/test/Sema/sizeless-1.c
--- a/clang/test/Sema/sizeless-1.c
+++ b/clang/test/Sema/sizeless-1.c
@@ -193,15 +193,11 @@
   -init_int8;       // expected-error {{invalid argument type 'svint8_t'}}
   --init_int8;      // expected-error {{cannot decrement value of type 'svint8_t'}}
   init_int8--;      // expected-error {{cannot decrement value of type 'svint8_t'}}
-  ~init_int8;       // expected-error {{invalid argument type 'svint8_t'}}
   !init_int8;       // expected-error {{invalid argument type 'svint8_t'}}
   *init_int8;       // expected-error {{indirection requires pointer operand}}
   __real init_int8; // expected-error {{invalid type 'svint8_t'}}
   __imag init_int8; // expected-error {{invalid type 'svint8_t'}}
 
-  local_int8 &init_int8;   // expected-error {{invalid operands to binary expression}}
-  local_int8 | init_int8;  // expected-error {{invalid operands to binary expression}}
-  local_int8 ^ init_int8;  // expected-error {{invalid operands to binary expression}}
   local_int8 << init_int8; // expected-error {{invalid operands to binary expression}}
   local_int8 >> init_int8; // expected-error {{invalid operands to binary expression}}
   local_int8 < init_int8;  // expected-error {{invalid operands to binary expression}}
@@ -213,9 +209,6 @@
   local_int8 &&init_int8;  // expected-error {{invalid operands to binary expression}}
   local_int8 || init_int8; // expected-error {{invalid operands to binary expression}}
 
-  local_int8 &= init_int8;  // expected-error {{invalid operands to binary expression}}
-  local_int8 |= init_int8;  // expected-error {{invalid operands to binary expression}}
-  local_int8 ^= init_int8;  // expected-error {{invalid operands to binary expression}}
   local_int8 <<= init_int8; // expected-error {{invalid operands to binary expression}}
   local_int8 >>= init_int8; // expected-error {{invalid operands to binary expression}}
 
diff --git a/clang/test/SemaCXX/sizeless-1.cpp b/clang/test/SemaCXX/sizeless-1.cpp
--- a/clang/test/SemaCXX/sizeless-1.cpp
+++ b/clang/test/SemaCXX/sizeless-1.cpp
@@ -205,15 +205,11 @@
   -init_int8;       // expected-error {{invalid argument type 'svint8_t'}}
   --init_int8;      // expected-error {{cannot decrement value of type 'svint8_t'}}
   init_int8--;      // expected-error {{cannot decrement value of type 'svint8_t'}}
-  ~init_int8;       // expected-error {{invalid argument type 'svint8_t'}}
   !init_int8;       // expected-error {{invalid argument type 'svint8_t'}}
   *init_int8;       // expected-error {{indirection requires pointer operand}}
   __real init_int8; // expected-error {{invalid type 'svint8_t'}}
   __imag init_int8; // expected-error {{invalid type 'svint8_t'}}
 
-  local_int8 &init_int8;   // expected-error {{invalid operands to binary expression}}
-  local_int8 | init_int8;  // expected-error {{invalid operands to binary expression}}
-  local_int8 ^ init_int8;  // expected-error {{invalid operands to binary expression}}
   local_int8 << init_int8; // expected-error {{invalid operands to binary expression}}
   local_int8 >> init_int8; // expected-error {{invalid operands to binary expression}}
   local_int8 < init_int8;  // expected-error {{invalid operands to binary expression}}
@@ -225,9 +221,6 @@
   local_int8 &&init_int8;  // expected-error {{invalid operands to binary expression}} expected-error {{not contextually convertible}}
   local_int8 || init_int8; // expected-error {{invalid operands to binary expression}} expected-error {{not contextually convertible}}
 
-  local_int8 &= init_int8;  // expected-error {{invalid operands to binary expression}}
-  local_int8 |= init_int8;  // expected-error {{invalid operands to binary expression}}
-  local_int8 ^= init_int8;  // expected-error {{invalid operands to binary expression}}
   local_int8 <<= init_int8; // expected-error {{invalid operands to binary expression}}
   local_int8 >>= init_int8; // expected-error {{invalid operands to binary expression}}