@@ -1305,44 +1305,44 @@ class QCScaledStPat<PatFrag StoreOp, RVInst Inst>
13051305          (Inst GPR:$rd, GPRMem:$rs1, GPRNoX0:$rs2, uimm3:$shamt)>;
13061306
13071307class QCIMVCCPat<CondCode Cond, QCIMVCC Inst>
1308-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rs1), (XLenVT  GPRNoX0:$rs2), Cond)), (XLenVT  GPRNoX0:$rs3), (XLenVT  GPRNoX0:$rd)),
1308+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rs1), (i32  GPRNoX0:$rs2), Cond)), (i32  GPRNoX0:$rs3), (i32  GPRNoX0:$rd)),
13091309          (Inst GPRNoX0:$rd, GPRNoX0:$rs1, GPRNoX0:$rs2, GPRNoX0:$rs3)>;
13101310
13111311class QCIMVCCIPat<CondCode Cond, QCIMVCCI Inst, DAGOperand InTyImm>
1312-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rs1), InTyImm:$imm, Cond)), (XLenVT  GPRNoX0:$rs3), (XLenVT  GPRNoX0:$rd)),
1312+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rs1), InTyImm:$imm, Cond)), (i32  GPRNoX0:$rs3), (i32  GPRNoX0:$rd)),
13131313          (Inst GPRNoX0:$rd, GPRNoX0:$rs1, InTyImm:$imm, GPRNoX0:$rs3)>;
13141314
13151315class QCISELECTCCIPat<CondCode Cond, QCISELECTCCI Inst>
1316-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rd), simm5:$imm, Cond)), (XLenVT  GPRNoX0:$rs2), (XLenVT  GPRNoX0:$rs3)),
1316+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rd), simm5:$imm, Cond)), (i32  GPRNoX0:$rs2), (i32  GPRNoX0:$rs3)),
13171317          (Inst GPRNoX0:$rd, simm5:$imm, GPRNoX0:$rs2, GPRNoX0:$rs3)>;
13181318
13191319class QCISELECTICCIPat<CondCode Cond, QCISELECTICCI Inst>
1320-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rd), simm5:$imm, Cond)), (XLenVT  GPRNoX0:$rs2), simm5:$simm2),
1320+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rd), simm5:$imm, Cond)), (i32  GPRNoX0:$rs2), simm5:$simm2),
13211321          (Inst GPRNoX0:$rd, simm5:$imm, GPRNoX0:$rs2, simm5:$simm2)>;
13221322
13231323class QCISELECTICCIPatInv<CondCode Cond, QCISELECTICCI Inst>
1324-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rd), simm5:$imm, Cond)), simm5:$simm2, (XLenVT  GPRNoX0:$rs2)),
1324+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rd), simm5:$imm, Cond)), simm5:$simm2, (i32  GPRNoX0:$rs2)),
13251325          (Inst GPRNoX0:$rd, simm5:$imm, GPRNoX0:$rs2, simm5:$simm2)>;
13261326
13271327class QCISELECTICCPat<CondCode Cond, QCISELECTICC Inst>
1328-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rd), (XLenVT  GPRNoX0:$rs1), Cond)), (XLenVT  GPRNoX0:$rs2), simm5:$simm2),
1328+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rd), (i32  GPRNoX0:$rs1), Cond)), (i32  GPRNoX0:$rs2), simm5:$simm2),
13291329          (Inst GPRNoX0:$rd, GPRNoX0:$rs1, GPRNoX0:$rs2, simm5:$simm2)>;
13301330
13311331class QCISELECTICCPatInv<CondCode Cond, QCISELECTICC Inst>
1332-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rd), (XLenVT  GPRNoX0:$rs1), Cond)), simm5:$simm2, (XLenVT  GPRNoX0:$rs2)),
1332+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rd), (i32  GPRNoX0:$rs1), Cond)), simm5:$simm2, (i32  GPRNoX0:$rs2)),
13331333          (Inst GPRNoX0:$rd, GPRNoX0:$rs1, GPRNoX0:$rs2, simm5:$simm2)>;
13341334
13351335class QCISELECTIICCPat<CondCode Cond, QCISELECTIICC Inst>
1336-     : Pat<(select (XLenVT  (setcc (XLenVT  GPRNoX0:$rd), (XLenVT  GPRNoX0:$rs1), Cond)), simm5:$simm1, simm5:$simm2),
1336+     : Pat<(select (i32  (setcc (i32  GPRNoX0:$rd), (i32  GPRNoX0:$rs1), Cond)), simm5:$simm1, simm5:$simm2),
13371337          (Inst GPRNoX0:$rd, GPRNoX0:$rs1, simm5:$simm1, simm5:$simm2)>;
13381338
13391339// Match `riscv_brcc` and lower to the appropriate XQCIBI branch instruction.
13401340class BcciPat<CondCode Cond, QCIBranchInst_rii Inst, DAGOperand InTyImm>
1341-     : Pat<(riscv_brcc (XLenVT  GPRNoX0:$rs1), InTyImm:$rs2, Cond, bb:$imm12),
1341+     : Pat<(riscv_brcc (i32  GPRNoX0:$rs1), InTyImm:$rs2, Cond, bb:$imm12),
13421342          (Inst GPRNoX0:$rs1, InTyImm:$rs2, bare_simm13_lsb0_bb:$imm12)>;
13431343
13441344class Bcci48Pat<CondCode Cond, QCIBranchInst48_rii Inst, DAGOperand InTyImm>
1345-     : Pat<(riscv_brcc (XLenVT  GPRNoX0:$rs1), InTyImm:$rs2, Cond, bb:$imm12),
1345+     : Pat<(riscv_brcc (i32  GPRNoX0:$rs1), InTyImm:$rs2, Cond, bb:$imm12),
13461346          (Inst GPRNoX0:$rs1, InTyImm:$rs2, bare_simm13_lsb0_bb:$imm12)>;
13471347
13481348defm CC_SImm5NonZero_QC  : SelectCC_GPR_riirr<GPRNoX0, simm5nonzero>;
@@ -1357,7 +1357,7 @@ class SelectQCbi<CondCode Cond, DAGOperand InTyImm, Pseudo OpNode >
13571357           (IntCCtoRISCVCC $cc), GPRNoX0:$truev, GPRNoX0:$falsev)>;
13581358
13591359let Predicates = [HasVendorXqciac, IsRV32] in {
1360- def : Pat<(XLenVT  (add GPRNoX0:$rd, (mul GPRNoX0:$rs1, simm12:$imm12))),
1360+ def : Pat<(i32  (add GPRNoX0:$rd, (mul GPRNoX0:$rs1, simm12:$imm12))),
13611361          (QC_MULIADD GPRNoX0:$rd, GPRNoX0:$rs1, simm12:$imm12)>;
13621362} // Predicates = [HasVendorXqciac, IsRV32]
13631363
@@ -1476,8 +1476,8 @@ let Predicates = [HasVendorXqciint, IsRV32] in
14761476def : Pat<(riscv_mileaveret_glue), (QC_C_MILEAVERET)>;
14771477
14781478let Predicates = [HasVendorXqcicm, IsRV32] in {
1479- def : Pat<(select (XLenVT  GPRNoX0:$rs1), (XLenVT  GPRNoX0:$rd),(XLenVT  GPRNoX0:$rs3)),
1480-           (QC_MVEQI GPRNoX0:$rd, GPRNoX0:$rs1, (XLenVT  0), GPRNoX0:$rs3)>;
1479+ def : Pat<(select (i32  GPRNoX0:$rs1), (i32  GPRNoX0:$rd),(i32  GPRNoX0:$rs3)),
1480+           (QC_MVEQI GPRNoX0:$rd, GPRNoX0:$rs1, (i32  0), GPRNoX0:$rs3)>;
14811481
14821482def : QCIMVCCPat <SETEQ,  QC_MVEQ>;
14831483def : QCIMVCCPat <SETNE,  QC_MVNE>;
@@ -1491,12 +1491,12 @@ def : QCIMVCCIPat <SETULT, QC_MVLTUI, uimm5>;
14911491}
14921492
14931493let Predicates = [HasVendorXqcics, IsRV32] in {
1494- def : Pat<(select (XLenVT  GPRNoX0:$rd), (XLenVT  GPRNoX0:$rs2),(XLenVT  GPRNoX0:$rs3)),
1495-           (QC_SELECTNEI GPRNoX0:$rd, (XLenVT  0), GPRNoX0:$rs2, GPRNoX0:$rs3)>;
1496- def : Pat<(select (XLenVT  GPRNoX0:$rd), (XLenVT  GPRNoX0:$rs2), simm5:$simm2),
1497-           (QC_SELECTINEI GPRNoX0:$rd, (XLenVT  0), GPRNoX0:$rs2, simm5:$simm2)>;
1498- def : Pat<(select (XLenVT  GPRNoX0:$rd), simm5:$simm2,(XLenVT  GPRNoX0:$rs2)),
1499-           (QC_SELECTIEQI GPRNoX0:$rd, (XLenVT  0), GPRNoX0:$rs2, simm5:$simm2)>;
1494+ def : Pat<(select (i32  GPRNoX0:$rd), (i32  GPRNoX0:$rs2),(i32  GPRNoX0:$rs3)),
1495+           (QC_SELECTNEI GPRNoX0:$rd, (i32  0), GPRNoX0:$rs2, GPRNoX0:$rs3)>;
1496+ def : Pat<(select (i32  GPRNoX0:$rd), (i32  GPRNoX0:$rs2), simm5:$simm2),
1497+           (QC_SELECTINEI GPRNoX0:$rd, (i32  0), GPRNoX0:$rs2, simm5:$simm2)>;
1498+ def : Pat<(select (i32  GPRNoX0:$rd), simm5:$simm2,(i32  GPRNoX0:$rs2)),
1499+           (QC_SELECTIEQI GPRNoX0:$rd, (i32  0), GPRNoX0:$rs2, simm5:$simm2)>;
15001500
15011501// Below AddedComplexity is added to prefer these conditional select instructions over
15021502// conditional move instructions
0 commit comments