@@ -2131,36 +2131,31 @@ class MVE_VABD_int<string suffix, bit U, bits<2> size,
2131
2131
let validForTailPredication = 1;
2132
2132
}
2133
2133
2134
- multiclass MVE_VABD_m<MVEVectorVTInfo VTI,
2135
- Intrinsic unpred_int, Intrinsic pred_int > {
2134
+ multiclass MVE_VABD_m<MVEVectorVTInfo VTI, SDNode Op,
2135
+ Intrinsic unpred_int, Intrinsic PredInt > {
2136
2136
def "" : MVE_VABD_int<VTI.Suffix, VTI.Unsigned, VTI.Size>;
2137
2137
defvar Inst = !cast<Instruction>(NAME);
2138
2138
2139
2139
let Predicates = [HasMVEInt] in {
2140
+ defm : MVE_TwoOpPattern<VTI, Op, PredInt, (? (i32 VTI.Unsigned)),
2141
+ !cast<Instruction>(NAME)>;
2142
+
2140
2143
// Unpredicated absolute difference
2141
2144
def : Pat<(VTI.Vec (unpred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2142
2145
(i32 VTI.Unsigned))),
2143
2146
(VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
2144
-
2145
- // Predicated absolute difference
2146
- def : Pat<(VTI.Vec (pred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2147
- (i32 VTI.Unsigned), (VTI.Pred VCCR:$mask),
2148
- (VTI.Vec MQPR:$inactive))),
2149
- (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2150
- ARMVCCThen, (VTI.Pred VCCR:$mask),
2151
- (VTI.Vec MQPR:$inactive)))>;
2152
2147
}
2153
2148
}
2154
2149
2155
- multiclass MVE_VABD<MVEVectorVTInfo VTI>
2156
- : MVE_VABD_m<VTI, int_arm_mve_vabd, int_arm_mve_abd_predicated>;
2150
+ multiclass MVE_VABD<MVEVectorVTInfo VTI, SDNode Op >
2151
+ : MVE_VABD_m<VTI, Op, int_arm_mve_vabd, int_arm_mve_abd_predicated>;
2157
2152
2158
- defm MVE_VABDs8 : MVE_VABD<MVE_v16s8>;
2159
- defm MVE_VABDs16 : MVE_VABD<MVE_v8s16>;
2160
- defm MVE_VABDs32 : MVE_VABD<MVE_v4s32>;
2161
- defm MVE_VABDu8 : MVE_VABD<MVE_v16u8>;
2162
- defm MVE_VABDu16 : MVE_VABD<MVE_v8u16>;
2163
- defm MVE_VABDu32 : MVE_VABD<MVE_v4u32>;
2153
+ defm MVE_VABDs8 : MVE_VABD<MVE_v16s8, abds >;
2154
+ defm MVE_VABDs16 : MVE_VABD<MVE_v8s16, abds >;
2155
+ defm MVE_VABDs32 : MVE_VABD<MVE_v4s32, abds >;
2156
+ defm MVE_VABDu8 : MVE_VABD<MVE_v16u8, abdu >;
2157
+ defm MVE_VABDu16 : MVE_VABD<MVE_v8u16, abdu >;
2158
+ defm MVE_VABDu32 : MVE_VABD<MVE_v4u32, abdu >;
2164
2159
2165
2160
class MVE_VRHADD_Base<string suffix, bit U, bits<2> size, list<dag> pattern=[]>
2166
2161
: MVE_int<"vrhadd", suffix, size, pattern> {
0 commit comments