@@ -1571,35 +1571,42 @@ def : QCIMVCCIPat<SETUGE, QC_MVGEUI, uimm5nonzero>;
15711571}
15721572
15731573let Predicates = [HasVendorXqcicli, IsRV32] in {
1574- def : QCILICCPat<SETEQ, QC_LIEQ>;
1575- def : QCILICCPat<SETNE, QC_LINE>;
15761574def : QCILICCPat<SETLT, QC_LILT>;
15771575def : QCILICCPat<SETGE, QC_LIGE>;
15781576def : QCILICCPat<SETULT, QC_LILTU>;
15791577def : QCILICCPat<SETUGE, QC_LIGEU>;
15801578
1581- def : QCILICCIPat<SETEQ, QC_LIEQI, simm5>;
1582- def : QCILICCIPat<SETNE, QC_LINEI, simm5>;
15831579def : QCILICCIPat<SETLT, QC_LILTI, simm5>;
15841580def : QCILICCIPat<SETGE, QC_LIGEI, simm5>;
15851581def : QCILICCIPat<SETULT, QC_LILTUI, uimm5>;
15861582def : QCILICCIPat<SETUGE, QC_LIGEUI, uimm5>;
15871583
1588- def : QCILICCPatInv<SETNE, QC_LIEQ>;
1589- def : QCILICCPatInv<SETEQ, QC_LINE>;
15901584def : QCILICCPatInv<SETGE, QC_LILT>;
15911585def : QCILICCPatInv<SETLT, QC_LIGE>;
15921586def : QCILICCPatInv<SETUGE, QC_LILTU>;
15931587def : QCILICCPatInv<SETULT, QC_LIGEU>;
15941588
1595- def : QCILICCIPatInv<SETNE, QC_LIEQI, simm5>;
1596- def : QCILICCIPatInv<SETEQ, QC_LINEI, simm5>;
15971589def : QCILICCIPatInv<SETGE, QC_LILTI, simm5>;
15981590def : QCILICCIPatInv<SETLT, QC_LIGEI, simm5>;
15991591def : QCILICCIPatInv<SETUGE, QC_LILTUI, uimm5>;
16001592def : QCILICCIPatInv<SETULT, QC_LIGEUI, uimm5>;
16011593} // Predicates = [HasVendorXqcicli, IsRV32]
16021594
1595+ // Prioritize Xqcics over these patterns.
1596+ let Predicates = [HasVendorXqcicli, NoVendorXqcics, IsRV32] in {
1597+ def : QCILICCPat<SETEQ, QC_LIEQ>;
1598+ def : QCILICCPat<SETNE, QC_LINE>;
1599+
1600+ def : QCILICCIPat<SETEQ, QC_LIEQI, simm5>;
1601+ def : QCILICCIPat<SETNE, QC_LINEI, simm5>;
1602+
1603+ def : QCILICCPatInv<SETNE, QC_LIEQ>;
1604+ def : QCILICCPatInv<SETEQ, QC_LINE>;
1605+
1606+ def : QCILICCIPatInv<SETNE, QC_LIEQI, simm5>;
1607+ def : QCILICCIPatInv<SETEQ, QC_LINEI, simm5>;
1608+ } // Predicates = [HasVendorXqcicli, NoVendorXqcics, IsRV32]
1609+
16031610let Predicates = [HasVendorXqcics, IsRV32] in {
16041611// (SELECT X, Y, Z) is canonicalised to `(riscv_selectcc x, 0, NE, y, z)`.
16051612// These exist to prioritise over the `Select_GPR_Using_CC_GPR` pattern.
0 commit comments