Skip to content

Commit a024d13

Browse files
authored
[LoongArch] make ABDS/ABDU legal for lsx/lasx (#134190)
1 parent 71d0916 commit a024d13

File tree

5 files changed

+86
-228
lines changed

5 files changed

+86
-228
lines changed

llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,8 @@ LoongArchTargetLowering::LoongArchTargetLowering(const TargetMachine &TM,
272272
{ISD::SETNE, ISD::SETGE, ISD::SETGT, ISD::SETUGE, ISD::SETUGT}, VT,
273273
Expand);
274274
setOperationAction(ISD::SCALAR_TO_VECTOR, VT, Custom);
275+
setOperationAction(ISD::ABDS, VT, Legal);
276+
setOperationAction(ISD::ABDU, VT, Legal);
275277
}
276278
for (MVT VT : {MVT::v16i8, MVT::v8i16, MVT::v4i32})
277279
setOperationAction(ISD::BITREVERSE, VT, Custom);
@@ -336,6 +338,8 @@ LoongArchTargetLowering::LoongArchTargetLowering(const TargetMachine &TM,
336338
{ISD::SETNE, ISD::SETGE, ISD::SETGT, ISD::SETUGE, ISD::SETUGT}, VT,
337339
Expand);
338340
setOperationAction(ISD::SCALAR_TO_VECTOR, VT, Custom);
341+
setOperationAction(ISD::ABDS, VT, Legal);
342+
setOperationAction(ISD::ABDU, VT, Legal);
339343
}
340344
for (MVT VT : {MVT::v32i8, MVT::v16i16, MVT::v8i32})
341345
setOperationAction(ISD::BITREVERSE, VT, Custom);

llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1840,6 +1840,10 @@ def : Pat<(vt (concat_vectors LSX128:$vd, LSX128:$vj)),
18401840
(XVPERMI_Q (SUBREG_TO_REG (i64 0), LSX128:$vd, sub_128),
18411841
(SUBREG_TO_REG (i64 0), LSX128:$vj, sub_128), 2)>;
18421842

1843+
// XVABSD_{B/H/W/D}[U]
1844+
defm : PatXrXr<abds, "XVABSD">;
1845+
defm : PatXrXrU<abdu, "XVABSD">;
1846+
18431847
} // Predicates = [HasExtLASX]
18441848

18451849
/// Intrinsic pattern

llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2002,6 +2002,10 @@ def : Pat<(f32 f32imm_vldi:$in),
20022002
def : Pat<(f64 f64imm_vldi:$in),
20032003
(f64 (EXTRACT_SUBREG (VLDI (to_f64imm_vldi f64imm_vldi:$in)), sub_64))>;
20042004

2005+
// VABSD_{B/H/W/D}[U]
2006+
defm : PatVrVr<abds, "VABSD">;
2007+
defm : PatVrVrU<abdu, "VABSD">;
2008+
20052009
} // Predicates = [HasExtLSX]
20062010

20072011
/// Intrinsic pattern

0 commit comments

Comments
 (0)