}
multiclass VectorVectorArithmetic<string operation, dag extraArgs = (?),
- int wantXVariant = 1> {
+ bit wantXVariant = 1> {
defm "" : IntrinsicMX<
Vector, (args Vector:$a, Vector:$b, Predicate:$pred),
!con((IRInt<operation, [Vector, Predicate]> $a, $b),
multiclass VectorScalarArithmetic<string operation, string basename,
dag extraArgs = (?),
- int wantXVariant = 1> {
+ bit wantXVariant = 1> {
defm "" : IntrinsicMXNameOverride<
Vector, (args Vector:$a, unpromoted<Scalar>:$b, Predicate:$pred),
!con((IRInt<operation, [Vector, Predicate]> $a, (splat $b)),
}
multiclass DblVectorVectorArithmetic<string operation, dag extraArgs = (?),
- int wantXVariant = 1> {
+ bit wantXVariant = 1> {
defm "" : IntrinsicMX<
DblVector, (args Vector:$a, Vector:$b, DblPredicate:$pred),
!con((IRInt<operation, [DblVector, Vector, DblPredicate]> $a, $b),
multiclass DblVectorScalarArithmetic<string operation, string basename,
dag extraArgs = (?),
- int wantXVariant = 1> {
+ bit wantXVariant = 1> {
defm "" : IntrinsicMXNameOverride<
DblVector, (args Vector:$a, unpromoted<Scalar>:$b, DblPredicate:$pred),
!con((IRInt<operation, [DblVector, Vector, DblPredicate]> $a, (splat $b)),
// polymorph differently (typically because the type of the inactive
// parameter can be used as a disambiguator if it's present).
multiclass IntrinsicMX<Type rettype, dag arguments, dag cg,
- int wantXVariant = 1,
+ bit wantXVariant = 1,
string nameSuffix = "",
PolymorphicNameType pnt_m = PNT_Type,
PolymorphicNameType pnt_x = PNT_Type> {
let pnt = pnt_m;
}
- foreach unusedVar = !if(!eq(wantXVariant, 1), [1], []<int>) in {
+ if wantXVariant then {
// The _x variant leaves off that parameter, and simply uses an
// undef value of the same type.
// Same as above, but with an additional parameter 'basename' which overrides
// the C intrinsic base name
multiclass IntrinsicMXNameOverride<Type rettype, dag arguments, dag cg,
- string basename, int wantXVariant = 1,
+ string basename, bit wantXVariant = 1,
string nameSuffix = "",
PolymorphicNameType pnt_m = PNT_Type,
PolymorphicNameType pnt_x = PNT_Type> {
let pnt = pnt_m;
}
- foreach unusedVar = !if(!eq(wantXVariant, 1), [1], []<int>) in {
+ if wantXVariant then {
def "_x" # nameSuffix:
Intrinsic<rettype, arguments, (seq (undef rettype):$inactive, cg)>,
NameOverride<basename # "_x" # nameSuffix> {