[clang][AArch64][SVE] Improve diagnostics for SVE operators

This patch corrects some diagnostics for the SVE sizeless vector
operators, including correctly diagnosing when the vectors are
different sizes.

Differential Revision: https://reviews.llvm.org/D126377
This commit is contained in:
David Truby 2022-06-06 12:15:38 +01:00
parent 1fd0beaa4e
commit 133a5f22d3
5 changed files with 1376 additions and 1596 deletions

View File

@ -10578,10 +10578,13 @@ QualType Sema::CheckSizelessVectorOperands(ExprResult &LHS, ExprResult &RHS,
QualType LHSType = LHS.get()->getType().getUnqualifiedType();
QualType RHSType = RHS.get()->getType().getUnqualifiedType();
const BuiltinType *LHSBuiltinTy = LHSType->getAs<BuiltinType>();
const BuiltinType *RHSBuiltinTy = RHSType->getAs<BuiltinType>();
unsigned DiagID = diag::err_typecheck_invalid_operands;
if ((OperationKind == ACK_Arithmetic) &&
(LHSType->castAs<BuiltinType>()->isSVEBool() ||
RHSType->castAs<BuiltinType>()->isSVEBool())) {
((LHSBuiltinTy && LHSBuiltinTy->isSVEBool()) ||
(RHSBuiltinTy && RHSBuiltinTy->isSVEBool()))) {
Diag(Loc, DiagID) << LHSType << RHSType << LHS.get()->getSourceRange()
<< RHS.get()->getSourceRange();
return QualType();
@ -10610,12 +10613,33 @@ QualType Sema::CheckSizelessVectorOperands(ExprResult &LHS, ExprResult &RHS,
return DestType;
}
if (RHSType->isVLSTBuiltinType() && !LHSType->isVLSTBuiltinType()) {
auto DestType = tryScalableVectorConvert((IsCompAssign ? nullptr : &LHS),
LHSType, RHSType);
if (DestType == QualType())
return InvalidOperands(Loc, LHS, RHS);
return DestType;
if ((!LHSType->isVLSTBuiltinType() && !LHSType->isRealType()) ||
(!RHSType->isVLSTBuiltinType() && !RHSType->isRealType())) {
Diag(Loc, diag::err_typecheck_vector_not_convertable_non_scalar)
<< LHSType << RHSType << LHS.get()->getSourceRange()
<< RHS.get()->getSourceRange();
return QualType();
}
if (LHSType->isVLSTBuiltinType() && RHSType->isVLSTBuiltinType() &&
Context.getBuiltinVectorTypeInfo(LHSBuiltinTy).EC !=
Context.getBuiltinVectorTypeInfo(RHSBuiltinTy).EC) {
Diag(Loc, diag::err_typecheck_vector_lengths_not_equal)
<< LHSType << RHSType << LHS.get()->getSourceRange()
<< RHS.get()->getSourceRange();
return QualType();
}
if (LHSType->isVLSTBuiltinType() || RHSType->isVLSTBuiltinType()) {
QualType Scalar = LHSType->isVLSTBuiltinType() ? RHSType : LHSType;
QualType Vector = LHSType->isVLSTBuiltinType() ? LHSType : RHSType;
bool ScalarOrVector =
LHSType->isVLSTBuiltinType() && RHSType->isVLSTBuiltinType();
Diag(Loc, diag::err_typecheck_vector_not_convertable_implict_truncation)
<< ScalarOrVector << Scalar << Vector;
return QualType();
}
Diag(Loc, DiagID) << LHSType << RHSType << LHS.get()->getSourceRange()

File diff suppressed because it is too large Load Diff

View File

@ -8,90 +8,90 @@ 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 & b); // expected-error{{cannot convert between vector type 'svbool_t' (aka '__SVBool_t') and vector type 'svint8_t' (aka '__SVInt8_t') as implicit conversion would cause truncation}}
(void)(i8 & i16); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i8 & i32); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i8 & i64); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i8 & u16); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i8 & u32); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(i8 & u64); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 & b); // expected-error{{cannot convert between vector type 'svbool_t' (aka '__SVBool_t') and vector type 'svuint8_t' (aka '__SVUint8_t') as implicit conversion would cause truncation}}
(void)(u8 & i16); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u8 & i32); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u8 & i64); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u8 & u16); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u8 & u32); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(u8 & u64); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 & b); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i16 & i8); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i16 & i32); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i16 & i64); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i16 & u8); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i16 & u32); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(i16 & u64); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 & b); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u16 & i8); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u16 & i32); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u16 & i64); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u16 & u8); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u16 & u32); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(u16 & u64); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 & b); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i32 & i8); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i32 & i16); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i32 & i64); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i32 & u8); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i32 & u16); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i32 & u64); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 & b); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u32 & i8); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u32 & i16); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u32 & i64); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u32 & u8); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u32 & u16); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u32 & u64); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 & b); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i64 & i8); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i64 & i16); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i64 & i32); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i64 & u8); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i64 & u16); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i64 & u32); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(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 & b); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u64 & i8); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u64 & i16); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u64 & i32); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u64 & u8); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u64 & u16); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u64 & u32); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(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}}
@ -136,90 +136,90 @@ 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 | b); // expected-error{{cannot convert between vector type 'svbool_t' (aka '__SVBool_t') and vector type 'svint8_t' (aka '__SVInt8_t') as implicit conversion would cause truncation}}
(void)(i8 | i16); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i8 | i32); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i8 | i64); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i8 | u16); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i8 | u32); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(i8 | u64); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 | b); // expected-error{{cannot convert between vector type 'svbool_t' (aka '__SVBool_t') and vector type 'svuint8_t' (aka '__SVUint8_t') as implicit conversion would cause truncation}}
(void)(u8 | i16); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u8 | i32); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u8 | i64); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u8 | u16); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u8 | u32); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(u8 | u64); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 | b); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i16 | i8); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i16 | i32); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i16 | i64); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i16 | u8); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i16 | u32); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(i16 | u64); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 | b); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u16 | i8); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u16 | i32); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u16 | i64); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u16 | u8); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u16 | u32); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(u16 | u64); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 | b); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i32 | i8); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i32 | i16); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i32 | i64); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i32 | u8); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i32 | u16); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i32 | u64); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 | b); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u32 | i8); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u32 | i16); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u32 | i64); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u32 | u8); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u32 | u16); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u32 | u64); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 | b); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i64 | i8); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i64 | i16); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i64 | i32); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i64 | u8); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i64 | u16); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i64 | u32); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(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 | b); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u64 | i8); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u64 | i16); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u64 | i32); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u64 | u8); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u64 | u16); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u64 | u32); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(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}}
@ -262,90 +262,90 @@ void or (svint8_t i8, svint16_t i16, svint32_t i32, svint64_t i64,
}
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 ^ b); // expected-error{{cannot convert between vector type 'svbool_t' (aka '__SVBool_t') and vector type 'svint8_t' (aka '__SVInt8_t') as implicit conversion would cause truncation}}
(void)(i8 ^ i16); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i8 ^ i32); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i8 ^ i64); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i8 ^ u16); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i8 ^ u32); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(i8 ^ u64); // expected-error{{vector operands do not have the same number of elements ('svint8_t' (aka '__SVInt8_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 ^ b); // expected-error{{cannot convert between vector type 'svbool_t' (aka '__SVBool_t') and vector type 'svuint8_t' (aka '__SVUint8_t') as implicit conversion would cause truncation}}
(void)(u8 ^ i16); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u8 ^ i32); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u8 ^ i64); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u8 ^ u16); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u8 ^ u32); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(u8 ^ u64); // expected-error{{vector operands do not have the same number of elements ('svuint8_t' (aka '__SVUint8_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 ^ b); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i16 ^ i8); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i16 ^ i32); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i16 ^ i64); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i16 ^ u8); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i16 ^ u32); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(i16 ^ u64); // expected-error{{vector operands do not have the same number of elements ('svint16_t' (aka '__SVInt16_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 ^ b); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u16 ^ i8); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u16 ^ i32); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u16 ^ i64); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u16 ^ u8); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u16 ^ u32); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(void)(u16 ^ u64); // expected-error{{vector operands do not have the same number of elements ('svuint16_t' (aka '__SVUint16_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 ^ b); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i32 ^ i8); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i32 ^ i16); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i32 ^ i64); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(i32 ^ u8); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i32 ^ u16); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i32 ^ u64); // expected-error{{vector operands do not have the same number of elements ('svint32_t' (aka '__SVInt32_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 ^ b); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u32 ^ i8); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u32 ^ i16); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u32 ^ i64); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void)(u32 ^ u8); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u32 ^ u16); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u32 ^ u64); // expected-error{{vector operands do not have the same number of elements ('svuint32_t' (aka '__SVUint32_t') and 'svuint64_t' (aka '__SVUint64_t'))}}
(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 ^ b); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(i64 ^ i8); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(i64 ^ i16); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(i64 ^ i32); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(i64 ^ u8); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(i64 ^ u16); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(i64 ^ u32); // expected-error{{vector operands do not have the same number of elements ('svint64_t' (aka '__SVInt64_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(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 ^ b); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svbool_t' (aka '__SVBool_t'))}}
(void)(u64 ^ i8); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint8_t' (aka '__SVInt8_t'))}}
(void)(u64 ^ i16); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint16_t' (aka '__SVInt16_t'))}}
(void)(u64 ^ i32); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svint32_t' (aka '__SVInt32_t'))}}
(void)(u64 ^ u8); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint8_t' (aka '__SVUint8_t'))}}
(void)(u64 ^ u16); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint16_t' (aka '__SVUint16_t'))}}
(void)(u64 ^ u32); // expected-error{{vector operands do not have the same number of elements ('svuint64_t' (aka '__SVUint64_t') and 'svuint32_t' (aka '__SVUint32_t'))}}
(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}}

File diff suppressed because it is too large Load Diff

View File

@ -8,15 +8,15 @@ void cond(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 < i8 ? i16 : i16; // expected-error{{invalid operands to binary expression}}
(void) i8 < i8 ? i32 : i32; // expected-error{{invalid operands to binary expression}}
(void) i8 < i8 ? i64 : i64; // expected-error{{invalid operands to binary expression}}
i8 ? i16 : i16; // expected-error{{vector condition type 'svint8_t' (aka '__SVInt8_t') and result type 'svint16_t' (aka '__SVInt16_t') do not have the same number of elements}}
i8 ? i32 : i32; // expected-error{{vector condition type 'svint8_t' (aka '__SVInt8_t') and result type 'svint32_t' (aka '__SVInt32_t') do not have the same number of elements}}
i8 ? i64 : i64; // expected-error{{vector condition type 'svint8_t' (aka '__SVInt8_t') and result type 'svint64_t' (aka '__SVInt64_t') do not have the same number of elements}}
(void) i16 < i16 ? i16 : i8; // expected-error{{invalid operands to binary expression}}
(void) i16 < i16 ? i16 : i32; // expected-error{{invalid operands to binary expression}}
(void) i16 < i16 ? i16 : i64; // expected-error{{invalid operands to binary expression}}
i16 ? i16 : i8; // expected-error{{vector operands to the vector conditional must be the same type ('svint16_t' (aka '__SVInt16_t') and 'svint8_t' (aka '__SVInt8_t'))}}
i16 ? i16 : i32; // expected-error{{vector operands to the vector conditional must be the same type ('svint16_t' (aka '__SVInt16_t') and 'svint32_t' (aka '__SVInt32_t'))}}
i16 ? i16 : i64; // expected-error{{vector operands to the vector conditional must be the same type ('svint16_t' (aka '__SVInt16_t') and 'svint64_t' (aka '__SVInt64_t'))}}
(void) i16 < i16 ? i8 : i16; // expected-error{{invalid operands to binary expression}}
(void) i16 < i16 ? i32 : i16; // expected-error{{invalid operands to binary expression}}
(void) i16 < i16 ? i64 : i16; // expected-error{{invalid operands to binary expression}}
i16 ? i8 : i16; // expected-error{{vector operands to the vector conditional must be the same type ('svint8_t' (aka '__SVInt8_t') and 'svint16_t' (aka '__SVInt16_t'))}}
i16 ? i32 : i16; // expected-error{{vector operands to the vector conditional must be the same type ('svint32_t' (aka '__SVInt32_t') and 'svint16_t' (aka '__SVInt16_t'))}}
i16 ? i64 : i16; // expected-error{{vector operands to the vector conditional must be the same type ('svint64_t' (aka '__SVInt64_t') and 'svint16_t' (aka '__SVInt16_t'))}}
}