Skip to content

Commit 62a6218

Browse files
authored
[RISCV] Add a couple of more compress patterns for QC_E_ADDI (llvm#139734)
Compress QC_E_ADDI to C_MV/C_ADDI16SP when possible.
1 parent c533127 commit 62a6218

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,4 +1436,8 @@ def : CompressPat<(QC_E_ADDI GPRNoX0:$rs1, GPRNoX0:$rs1, simm6nonzero:$imm),
14361436
(C_ADDI GPRNoX0:$rs1, simm6nonzero:$imm)>;
14371437
def : CompressPat<(QC_E_ANDI GPRC:$rs1, GPRC:$rs1, simm6:$imm),
14381438
(C_ANDI GPRC:$rs1, simm6:$imm)>;
1439+
def : CompressPat<(QC_E_ADDI GPRNoX0:$rs1, GPRNoX0:$rs2, 0),
1440+
(C_MV GPRNoX0:$rs1, GPRNoX0:$rs2)>;
1441+
def : CompressPat<(QC_E_ADDI X2, X2, simm10_lsb0000nonzero:$imm),
1442+
(C_ADDI16SP X2, simm10_lsb0000nonzero:$imm)>;
14391443
} // let isCompressOnly = true, Predicates = [HasVendorXqcilia, IsRV32]

llvm/test/MC/RISCV/xqcilia-valid.s

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,13 @@ qc.e.addi x5, x5, 20
9292
# CHECK-NOALIAS: c.andi s1, -10
9393
# CHECK-ENC: encoding: [0xd9,0x98]
9494
qc.e.andi x9, x9, -10
95+
96+
# CHECK-ALIAS: mv t0, t1
97+
# CHECK-NOALIAS: c.mv t0, t1
98+
# CHECK-ENC: encoding: [0x9a,0x82]
99+
qc.e.addi x5, x6, 0
100+
101+
# CHECK-ALIAS: addi sp, sp, 48
102+
# CHECK-NOALIAS: c.addi16sp sp, 48
103+
# CHECK-ENC: encoding: [0x45,0x61]
104+
qc.e.addi x2, x2, 48

0 commit comments

Comments
 (0)