Skip to content

Commit 71f2e29

Browse files
committed
refactor td code
1 parent 9232bb2 commit 71f2e29

File tree

2 files changed

+24
-45
lines changed

2 files changed

+24
-45
lines changed

llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ SDValue LoongArchTargetLowering::lowerBITREVERSE(SDValue Op,
527527

528528
/// Attempts to match a shuffle mask against the VBSLL, VBSRL, VSLLI and VSRLI
529529
/// instruction.
530-
// The funciton matches elements form one of the input vector shuffled to the
530+
// The funciton matches elements from one of the input vector shuffled to the
531531
// left or right with zeroable elements 'shifted in'. It handles both the
532532
// strictly bit-wise element shifts and the byte shfit across an entire 128-bit
533533
// lane.

llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td

Lines changed: 23 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1352,7 +1352,7 @@ multiclass PatShiftVrVr<SDPatternOperator OpNode, string Inst> {
13521352
(!cast<LAInst>(Inst#"_D") LSX128:$vj, LSX128:$vk)>;
13531353
}
13541354

1355-
multiclass PatShiftVrUimm<SDPatternOperator OpNode, string Inst> {
1355+
multiclass PatShiftVrSplatUimm<SDPatternOperator OpNode, string Inst> {
13561356
def : Pat<(OpNode (v16i8 LSX128:$vj), (v16i8 (SplatPat_uimm3 uimm3:$imm))),
13571357
(!cast<LAInst>(Inst#"_B") LSX128:$vj, uimm3:$imm)>;
13581358
def : Pat<(OpNode (v8i16 LSX128:$vj), (v8i16 (SplatPat_uimm4 uimm4:$imm))),
@@ -1363,6 +1363,17 @@ multiclass PatShiftVrUimm<SDPatternOperator OpNode, string Inst> {
13631363
(!cast<LAInst>(Inst#"_D") LSX128:$vj, uimm6:$imm)>;
13641364
}
13651365

1366+
multiclass PatShiftVrUimm<SDPatternOperator OpNode, string Inst> {
1367+
def : Pat<(OpNode(v16i8 LSX128:$vj), uimm3:$imm),
1368+
(!cast<LAInst>(Inst#"_B") LSX128:$vj, uimm3:$imm)>;
1369+
def : Pat<(OpNode(v8i16 LSX128:$vj), uimm4:$imm),
1370+
(!cast<LAInst>(Inst#"_H") LSX128:$vj, uimm4:$imm)>;
1371+
def : Pat<(OpNode(v4i32 LSX128:$vj), uimm5:$imm),
1372+
(!cast<LAInst>(Inst#"_W") LSX128:$vj, uimm5:$imm)>;
1373+
def : Pat<(OpNode(v2i64 LSX128:$vj), uimm6:$imm),
1374+
(!cast<LAInst>(Inst#"_D") LSX128:$vj, uimm6:$imm)>;
1375+
}
1376+
13661377
multiclass PatCCVrSimm5<CondCode CC, string Inst> {
13671378
def : Pat<(v16i8 (setcc (v16i8 LSX128:$vj),
13681379
(v16i8 (SplatPat_simm5 simm5:$imm)), CC)),
@@ -1501,63 +1512,31 @@ def : Pat<(xor (v16i8 LSX128:$vj), (v16i8 (SplatPat_uimm8 uimm8:$imm))),
15011512
(VXORI_B LSX128:$vj, uimm8:$imm)>;
15021513

15031514
// VBSLL_V
1504-
def : Pat<(loongarch_vbsll v16i8:$vj, uimm5:$imm), (VBSLL_V v16i8:$vj,
1505-
uimm5:$imm)>;
1506-
def : Pat<(loongarch_vbsll v8i16:$vj, uimm5:$imm), (VBSLL_V v8i16:$vj,
1507-
uimm5:$imm)>;
1508-
def : Pat<(loongarch_vbsll v4i32:$vj, uimm5:$imm), (VBSLL_V v4i32:$vj,
1509-
uimm5:$imm)>;
1510-
def : Pat<(loongarch_vbsll v2i64:$vj, uimm5:$imm), (VBSLL_V v2i64:$vj,
1511-
uimm5:$imm)>;
1512-
def : Pat<(loongarch_vbsll v4f32:$vj, uimm5:$imm), (VBSLL_V v4f32:$vj,
1513-
uimm5:$imm)>;
1514-
def : Pat<(loongarch_vbsll v2f64:$vj, uimm5:$imm), (VBSLL_V v2f64:$vj,
1515-
uimm5:$imm)>;
1515+
foreach vt = [v16i8, v8i16, v4i32, v2i64, v4f32,
1516+
v2f64] in def : Pat<(loongarch_vbsll(vt LSX128:$vj), uimm5:$imm),
1517+
(VBSLL_V LSX128:$vj, uimm5:$imm)>;
15161518

15171519
// VBSRL_V
1518-
def : Pat<(loongarch_vbsrl v16i8:$vj, uimm5:$imm), (VBSRL_V v16i8:$vj,
1519-
uimm5:$imm)>;
1520-
def : Pat<(loongarch_vbsrl v8i16:$vj, uimm5:$imm), (VBSRL_V v8i16:$vj,
1521-
uimm5:$imm)>;
1522-
def : Pat<(loongarch_vbsrl v4i32:$vj, uimm5:$imm), (VBSRL_V v4i32:$vj,
1523-
uimm5:$imm)>;
1524-
def : Pat<(loongarch_vbsrl v2i64:$vj, uimm5:$imm), (VBSRL_V v2i64:$vj,
1525-
uimm5:$imm)>;
1526-
def : Pat<(loongarch_vbsrl v4f32:$vj, uimm5:$imm), (VBSRL_V v4f32:$vj,
1527-
uimm5:$imm)>;
1528-
def : Pat<(loongarch_vbsrl v2f64:$vj, uimm5:$imm), (VBSRL_V v2f64:$vj,
1529-
uimm5:$imm)>;
1520+
foreach vt = [v16i8, v8i16, v4i32, v2i64, v4f32,
1521+
v2f64] in def : Pat<(loongarch_vbsrl(vt LSX128:$vj), uimm5:$imm),
1522+
(VBSRL_V LSX128:$vj, uimm5:$imm)>;
15301523

15311524
// VSLL[I]_{B/H/W/D}
15321525
defm : PatVrVr<shl, "VSLL">;
15331526
defm : PatShiftVrVr<shl, "VSLL">;
1534-
defm : PatShiftVrUimm<shl, "VSLLI">;
1535-
def : Pat<(loongarch_vslli v16i8:$vj, uimm3:$imm), (VSLLI_B v16i8:$vj,
1536-
uimm3:$imm)>;
1537-
def : Pat<(loongarch_vslli v8i16:$vj, uimm4:$imm), (VSLLI_H v8i16:$vj,
1538-
uimm4:$imm)>;
1539-
def : Pat<(loongarch_vslli v4i32:$vj, uimm5:$imm), (VSLLI_W v4i32:$vj,
1540-
uimm5:$imm)>;
1541-
def : Pat<(loongarch_vslli v2i64:$vj, uimm6:$imm), (VSLLI_D v2i64:$vj,
1542-
uimm6:$imm)>;
1527+
defm : PatShiftVrSplatUimm<shl, "VSLLI">;
1528+
defm : PatShiftVrUimm<loongarch_vslli, "VSLLI">;
15431529

15441530
// VSRL[I]_{B/H/W/D}
15451531
defm : PatVrVr<srl, "VSRL">;
15461532
defm : PatShiftVrVr<srl, "VSRL">;
1547-
defm : PatShiftVrUimm<srl, "VSRLI">;
1548-
def : Pat<(loongarch_vsrli v16i8:$vj, uimm3:$imm), (VSRLI_B v16i8:$vj,
1549-
uimm3:$imm)>;
1550-
def : Pat<(loongarch_vsrli v8i16:$vj, uimm4:$imm), (VSRLI_H v8i16:$vj,
1551-
uimm4:$imm)>;
1552-
def : Pat<(loongarch_vsrli v4i32:$vj, uimm5:$imm), (VSRLI_W v4i32:$vj,
1553-
uimm5:$imm)>;
1554-
def : Pat<(loongarch_vsrli v2i64:$vj, uimm6:$imm), (VSRLI_D v2i64:$vj,
1555-
uimm6:$imm)>;
1533+
defm : PatShiftVrSplatUimm<srl, "VSRLI">;
1534+
defm : PatShiftVrUimm<loongarch_vsrli, "VSRLI">;
15561535

15571536
// VSRA[I]_{B/H/W/D}
15581537
defm : PatVrVr<sra, "VSRA">;
15591538
defm : PatShiftVrVr<sra, "VSRA">;
1560-
defm : PatShiftVrUimm<sra, "VSRAI">;
1539+
defm : PatShiftVrSplatUimm<sra, "VSRAI">;
15611540

15621541
// VCLZ_{B/H/W/D}
15631542
defm : PatVr<ctlz, "VCLZ">;

0 commit comments

Comments
 (0)