@@ -5640,10 +5640,10 @@ def VBITq : N3VX<1, 0, 0b10, 0b0001, 1, 1,
56405640// VABD : Vector Absolute Difference
56415641defm VABDs : N3VInt_QHS<0, 0, 0b0111, 0, N3RegFrm,
56425642 IIC_VSUBi4D, IIC_VSUBi4D, IIC_VSUBi4Q, IIC_VSUBi4Q,
5643- "vabd", "s", int_arm_neon_vabds , 1>;
5643+ "vabd", "s", abds , 1>;
56445644defm VABDu : N3VInt_QHS<1, 0, 0b0111, 0, N3RegFrm,
56455645 IIC_VSUBi4D, IIC_VSUBi4D, IIC_VSUBi4Q, IIC_VSUBi4Q,
5646- "vabd", "u", int_arm_neon_vabdu , 1>;
5646+ "vabd", "u", abdu , 1>;
56475647def VABDfd : N3VDInt<1, 0, 0b10, 0b1101, 0, N3RegFrm, IIC_VBIND,
56485648 "vabd", "f32", v2f32, v2f32, int_arm_neon_vabds, 1>;
56495649def VABDfq : N3VQInt<1, 0, 0b10, 0b1101, 0, N3RegFrm, IIC_VBINQ,
@@ -5657,20 +5657,22 @@ def VABDhq : N3VQInt<1, 0, 0b11, 0b1101, 0, N3RegFrm, IIC_VBINQ,
56575657
56585658// VABDL : Vector Absolute Difference Long (Q = | D - D |)
56595659defm VABDLs : N3VLIntExt_QHS<0,1,0b0111,0, IIC_VSUBi4Q,
5660- "vabdl", "s", int_arm_neon_vabds , zext, 1>;
5660+ "vabdl", "s", abds , zext, 1>;
56615661defm VABDLu : N3VLIntExt_QHS<1,1,0b0111,0, IIC_VSUBi4Q,
5662- "vabdl", "u", int_arm_neon_vabdu , zext, 1>;
5662+ "vabdl", "u", abdu , zext, 1>;
56635663
56645664let Predicates = [HasNEON] in {
5665- def : Pat<(v8i16 (abs (sub (zext ( v8i8 DPR:$opA)) , (zext ( v8i8 DPR:$opB) )))),
5665+ def : Pat<(v8i16 (zext (abdu ( v8i8 DPR:$opA), (v8i8 DPR:$opB)))),
56665666 (VABDLuv8i16 DPR:$opA, DPR:$opB)>;
5667- def : Pat<(v4i32 (abs (sub (zext ( v4i16 DPR:$opA)) , (zext ( v4i16 DPR:$opB) )))),
5667+ def : Pat<(v4i32 (zext (abdu ( v4i16 DPR:$opA), (v4i16 DPR:$opB)))),
56685668 (VABDLuv4i32 DPR:$opA, DPR:$opB)>;
5669+ def : Pat<(v2i64 (zext (abdu (v2i32 DPR:$opA), (v2i32 DPR:$opB)))),
5670+ (VABDLuv2i64 DPR:$opA, DPR:$opB)>;
56695671}
56705672
56715673// ISD::ABS is not legal for v2i64, so VABDL needs to be matched from the
56725674// shift/xor pattern for ABS.
5673-
5675+ // TODO: Remove me.
56745676def abd_shr :
56755677 PatFrag<(ops node:$in1, node:$in2, node:$shift),
56765678 (ARMvshrsImm (sub (zext node:$in1),
@@ -5686,15 +5688,15 @@ def : Pat<(xor (v2i64 (abd_shr (v2i32 DPR:$opA), (v2i32 DPR:$opB), 63)),
56865688
56875689// VABA : Vector Absolute Difference and Accumulate
56885690defm VABAs : N3VIntOp_QHS<0,0,0b0111,1, IIC_VABAD, IIC_VABAQ,
5689- "vaba", "s", int_arm_neon_vabds , add>;
5691+ "vaba", "s", abds , add>;
56905692defm VABAu : N3VIntOp_QHS<1,0,0b0111,1, IIC_VABAD, IIC_VABAQ,
5691- "vaba", "u", int_arm_neon_vabdu , add>;
5693+ "vaba", "u", abdu , add>;
56925694
56935695// VABAL : Vector Absolute Difference and Accumulate Long (Q += | D - D |)
56945696defm VABALs : N3VLIntExtOp_QHS<0,1,0b0101,0, IIC_VABAD,
5695- "vabal", "s", int_arm_neon_vabds , zext, add>;
5697+ "vabal", "s", abds , zext, add>;
56965698defm VABALu : N3VLIntExtOp_QHS<1,1,0b0101,0, IIC_VABAD,
5697- "vabal", "u", int_arm_neon_vabdu , zext, add>;
5699+ "vabal", "u", abdu , zext, add>;
56985700
56995701// Vector Maximum and Minimum.
57005702
0 commit comments