Skip to content

Commit c7d2307

Browse files
committed
make ABDS/ABDU legal for lsx/lasx
1 parent ff0c2fb commit c7d2307

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
@@ -1817,6 +1817,10 @@ def : Pat<(vt (concat_vectors LSX128:$vd, LSX128:$vj)),
18171817
(XVPERMI_Q (SUBREG_TO_REG (i64 0), LSX128:$vd, sub_128),
18181818
(SUBREG_TO_REG (i64 0), LSX128:$vj, sub_128), 2)>;
18191819

1820+
// XVABSD_{B/H/W/D}[U]
1821+
defm : PatXrXr<abds, "XVABSD">;
1822+
defm : PatXrXrU<abdu, "XVABSD">;
1823+
18201824
} // Predicates = [HasExtLASX]
18211825

18221826
/// Intrinsic pattern

llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td

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

1976+
// VABSD_{B/H/W/D}[U]
1977+
defm : PatVrVr<abds, "VABSD">;
1978+
defm : PatVrVrU<abdu, "VABSD">;
1979+
19761980
} // Predicates = [HasExtLSX]
19771981

19781982
/// Intrinsic pattern

0 commit comments

Comments
 (0)