Skip to content

Commit b785cb5

Browse files
committed
Prioritize Xqcics over Xqcicli
Change-Id: I87702585a78545470b9cfd0325a7d7efb0750396
1 parent a7016c4 commit b785cb5

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

llvm/lib/Target/RISCV/RISCVFeatures.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1520,6 +1520,8 @@ def HasVendorXqcics
15201520
: Predicate<"Subtarget->hasVendorXqcics()">,
15211521
AssemblerPredicate<(all_of FeatureVendorXqcics),
15221522
"'Xqcics' (Qualcomm uC Conditional Select Extension)">;
1523+
def NoVendorXqcics
1524+
: Predicate<"!Subtarget->hasVendorXqcics()">;
15231525

15241526
def FeatureVendorXqcicsr
15251527
: RISCVExperimentalExtension<0, 4, "Qualcomm uC CSR Extension">;

llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1571,35 +1571,42 @@ def : QCIMVCCIPat<SETUGE, QC_MVGEUI, uimm5nonzero>;
15711571
}
15721572

15731573
let Predicates = [HasVendorXqcicli, IsRV32] in {
1574-
def : QCILICCPat<SETEQ, QC_LIEQ>;
1575-
def : QCILICCPat<SETNE, QC_LINE>;
15761574
def : QCILICCPat<SETLT, QC_LILT>;
15771575
def : QCILICCPat<SETGE, QC_LIGE>;
15781576
def : QCILICCPat<SETULT, QC_LILTU>;
15791577
def : QCILICCPat<SETUGE, QC_LIGEU>;
15801578

1581-
def : QCILICCIPat<SETEQ, QC_LIEQI, simm5>;
1582-
def : QCILICCIPat<SETNE, QC_LINEI, simm5>;
15831579
def : QCILICCIPat<SETLT, QC_LILTI, simm5>;
15841580
def : QCILICCIPat<SETGE, QC_LIGEI, simm5>;
15851581
def : QCILICCIPat<SETULT, QC_LILTUI, uimm5>;
15861582
def : QCILICCIPat<SETUGE, QC_LIGEUI, uimm5>;
15871583

1588-
def : QCILICCPatInv<SETNE, QC_LIEQ>;
1589-
def : QCILICCPatInv<SETEQ, QC_LINE>;
15901584
def : QCILICCPatInv<SETGE, QC_LILT>;
15911585
def : QCILICCPatInv<SETLT, QC_LIGE>;
15921586
def : QCILICCPatInv<SETUGE, QC_LILTU>;
15931587
def : QCILICCPatInv<SETULT, QC_LIGEU>;
15941588

1595-
def : QCILICCIPatInv<SETNE, QC_LIEQI, simm5>;
1596-
def : QCILICCIPatInv<SETEQ, QC_LINEI, simm5>;
15971589
def : QCILICCIPatInv<SETGE, QC_LILTI, simm5>;
15981590
def : QCILICCIPatInv<SETLT, QC_LIGEI, simm5>;
15991591
def : QCILICCIPatInv<SETUGE, QC_LILTUI, uimm5>;
16001592
def : 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+
16031610
let 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

Comments
 (0)