diff --git a/clang/include/clang/Basic/arm_mve.td b/clang/include/clang/Basic/arm_mve.td --- a/clang/include/clang/Basic/arm_mve.td +++ b/clang/include/clang/Basic/arm_mve.td @@ -406,7 +406,7 @@ } multiclass VectorVectorArithmetic { + bit wantXVariant = 1> { defm "" : IntrinsicMX< Vector, (args Vector:$a, Vector:$b, Predicate:$pred), !con((IRInt $a, $b), @@ -415,7 +415,7 @@ multiclass VectorScalarArithmetic { + bit wantXVariant = 1> { defm "" : IntrinsicMXNameOverride< Vector, (args Vector:$a, unpromoted:$b, Predicate:$pred), !con((IRInt $a, (splat $b)), @@ -451,7 +451,7 @@ } multiclass DblVectorVectorArithmetic { + bit wantXVariant = 1> { defm "" : IntrinsicMX< DblVector, (args Vector:$a, Vector:$b, DblPredicate:$pred), !con((IRInt $a, $b), @@ -460,7 +460,7 @@ multiclass DblVectorScalarArithmetic { + bit wantXVariant = 1> { defm "" : IntrinsicMXNameOverride< DblVector, (args Vector:$a, unpromoted:$b, DblPredicate:$pred), !con((IRInt $a, (splat $b)), diff --git a/clang/include/clang/Basic/arm_mve_defs.td b/clang/include/clang/Basic/arm_mve_defs.td --- a/clang/include/clang/Basic/arm_mve_defs.td +++ b/clang/include/clang/Basic/arm_mve_defs.td @@ -519,7 +519,7 @@ // polymorph differently (typically because the type of the inactive // parameter can be used as a disambiguator if it's present). multiclass IntrinsicMX { @@ -532,7 +532,7 @@ let pnt = pnt_m; } - foreach unusedVar = !if(!eq(wantXVariant, 1), [1], []) in { + if wantXVariant then { // The _x variant leaves off that parameter, and simply uses an // undef value of the same type. @@ -546,7 +546,7 @@ // Same as above, but with an additional parameter 'basename' which overrides // the C intrinsic base name multiclass IntrinsicMXNameOverride { @@ -556,7 +556,7 @@ let pnt = pnt_m; } - foreach unusedVar = !if(!eq(wantXVariant, 1), [1], []) in { + if wantXVariant then { def "_x" # nameSuffix: Intrinsic, NameOverride {