Skip to content

[RISCV] Add a couple of more compress patterns for QC_E_ADDI #139734

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 14, 2025

Conversation

svs-quic
Copy link
Contributor

Compress QC_E_ADDI to C_MV/C_ADDI16SP when possible.

Compress QC_E_ADDI to C_MV/C_ADDI16SP when possible.
@llvmbot llvmbot added backend:RISC-V mc Machine (object) code labels May 13, 2025
@svs-quic svs-quic requested review from lenary, pgodeq and hchandel May 13, 2025 13:58
@llvmbot
Copy link
Member

llvmbot commented May 13, 2025

@llvm/pr-subscribers-mc

Author: Sudharsan Veeravalli (svs-quic)

Changes

Compress QC_E_ADDI to C_MV/C_ADDI16SP when possible.


Full diff: https://github.com/llvm/llvm-project/pull/139734.diff

2 Files Affected:

  • (modified) llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td (+4)
  • (modified) llvm/test/MC/RISCV/xqcilia-valid.s (+10)
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td b/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
index 49c2922fdbcff..57c1e999ac366 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
@@ -1436,4 +1436,8 @@ def : CompressPat<(QC_E_ADDI GPRNoX0:$rs1, GPRNoX0:$rs1, simm6nonzero:$imm),
                   (C_ADDI GPRNoX0:$rs1, simm6nonzero:$imm)>;
 def : CompressPat<(QC_E_ANDI GPRC:$rs1, GPRC:$rs1, simm6:$imm),
                   (C_ANDI GPRC:$rs1, simm6:$imm)>;
+def : CompressPat<(QC_E_ADDI GPRNoX0:$rs1, GPRNoX0:$rs2, 0),
+                  (C_MV GPRNoX0:$rs1, GPRNoX0:$rs2)>;
+def : CompressPat<(QC_E_ADDI X2, X2, simm10_lsb0000nonzero:$imm),
+                  (C_ADDI16SP X2, simm10_lsb0000nonzero:$imm)>;
 } // let isCompressOnly = true, Predicates = [HasVendorXqcilia, IsRV32]
diff --git a/llvm/test/MC/RISCV/xqcilia-valid.s b/llvm/test/MC/RISCV/xqcilia-valid.s
index 1e4f855cb2b47..169edc42da697 100644
--- a/llvm/test/MC/RISCV/xqcilia-valid.s
+++ b/llvm/test/MC/RISCV/xqcilia-valid.s
@@ -92,3 +92,13 @@ qc.e.addi x5, x5, 20
 # CHECK-NOALIAS: c.andi s1, -10
 # CHECK-ENC: encoding: [0xd9,0x98]
 qc.e.andi x9, x9, -10
+
+# CHECK-ALIAS: mv t0, t1
+# CHECK-NOALIAS: c.mv t0, t1
+# CHECK-ENC: encoding: [0x9a,0x82]
+qc.e.addi x5, x6, 0
+
+# CHECK-ALIAS: addi sp, sp, 48
+# CHECK-NOALIAS: c.addi16sp sp, 48
+# CHECK-ENC: encoding: [0x45,0x61]
+qc.e.addi x2, x2, 48

@llvmbot
Copy link
Member

llvmbot commented May 13, 2025

@llvm/pr-subscribers-backend-risc-v

Author: Sudharsan Veeravalli (svs-quic)

Changes

Compress QC_E_ADDI to C_MV/C_ADDI16SP when possible.


Full diff: https://github.com/llvm/llvm-project/pull/139734.diff

2 Files Affected:

  • (modified) llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td (+4)
  • (modified) llvm/test/MC/RISCV/xqcilia-valid.s (+10)
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td b/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
index 49c2922fdbcff..57c1e999ac366 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
@@ -1436,4 +1436,8 @@ def : CompressPat<(QC_E_ADDI GPRNoX0:$rs1, GPRNoX0:$rs1, simm6nonzero:$imm),
                   (C_ADDI GPRNoX0:$rs1, simm6nonzero:$imm)>;
 def : CompressPat<(QC_E_ANDI GPRC:$rs1, GPRC:$rs1, simm6:$imm),
                   (C_ANDI GPRC:$rs1, simm6:$imm)>;
+def : CompressPat<(QC_E_ADDI GPRNoX0:$rs1, GPRNoX0:$rs2, 0),
+                  (C_MV GPRNoX0:$rs1, GPRNoX0:$rs2)>;
+def : CompressPat<(QC_E_ADDI X2, X2, simm10_lsb0000nonzero:$imm),
+                  (C_ADDI16SP X2, simm10_lsb0000nonzero:$imm)>;
 } // let isCompressOnly = true, Predicates = [HasVendorXqcilia, IsRV32]
diff --git a/llvm/test/MC/RISCV/xqcilia-valid.s b/llvm/test/MC/RISCV/xqcilia-valid.s
index 1e4f855cb2b47..169edc42da697 100644
--- a/llvm/test/MC/RISCV/xqcilia-valid.s
+++ b/llvm/test/MC/RISCV/xqcilia-valid.s
@@ -92,3 +92,13 @@ qc.e.addi x5, x5, 20
 # CHECK-NOALIAS: c.andi s1, -10
 # CHECK-ENC: encoding: [0xd9,0x98]
 qc.e.andi x9, x9, -10
+
+# CHECK-ALIAS: mv t0, t1
+# CHECK-NOALIAS: c.mv t0, t1
+# CHECK-ENC: encoding: [0x9a,0x82]
+qc.e.addi x5, x6, 0
+
+# CHECK-ALIAS: addi sp, sp, 48
+# CHECK-NOALIAS: c.addi16sp sp, 48
+# CHECK-ENC: encoding: [0x45,0x61]
+qc.e.addi x2, x2, 48

@svs-quic svs-quic merged commit 62a6218 into llvm:main May 14, 2025
14 checks passed
@svs-quic svs-quic deleted the qcaddi_comp branch May 14, 2025 03:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:RISC-V mc Machine (object) code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants