[PATCH] D45583: [RISCV] Add c.mv rs1, rs2 pattern for addi rs1, rs2, 0
Sameer AbuAsal via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 12 11:28:06 PDT 2018
sabuasal created this revision.
sabuasal added reviewers: asb, apazos, zzheng, mgrang, shiva0217.
Herald added subscribers: llvm-commits, kito-cheng, niosHD, jordy.potman.lists, simoncook, johnrusso, rbar.
GCC compresses the pseudo instruction "mv rd, rs", which is an alias of
"addi rd, rs, 0", to "c.mv rd, rs".
In LLVM we rely on the canonical MC instruction (MCInst) to do our compression
checks and since there is no rule to compress "addi rd, rs, 0" --> "c.mv
rd, rs" we lose this compression opportunity to gcc.
In this patch we fix that by adding an addi to c.mv compression pattern, the
instruction "mv rd, rs" will be compressed to "c.mv rd, rs" just like
gcc does.
Repository:
rL LLVM
https://reviews.llvm.org/D45583
Files:
lib/Target/RISCV/RISCVInstrInfoC.td
test/MC/RISCV/compress-rv32i.s
Index: test/MC/RISCV/compress-rv32i.s
===================================================================
--- test/MC/RISCV/compress-rv32i.s
+++ test/MC/RISCV/compress-rv32i.s
@@ -20,6 +20,12 @@
# RUN: | llvm-objdump -triple riscv64 -mattr=+c -d -riscv-no-aliases - \
# RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-INST %s
+# CHECK-BYTES: 2e 85
+# CHECK-ALIAS: add a0, zero, a1
+# CHECK-INST: c.mv a0, a1
+# CHECK: # encoding: [0x2e,0x85]
+addi a0, a1, 0
+
# CHECK-BYTES: e0 1f
# CHECK-ALIAS: addi s0, sp, 1020
# CHECK-INST: c.addi4spn s0, sp, 1020
Index: lib/Target/RISCV/RISCVInstrInfoC.td
===================================================================
--- lib/Target/RISCV/RISCVInstrInfoC.td
+++ lib/Target/RISCV/RISCVInstrInfoC.td
@@ -675,6 +675,8 @@
(C_MV GPRNoX0:$rs1, GPRNoX0:$rs2)>;
def : CompressPat<(ADD GPRNoX0:$rs1, GPRNoX0:$rs2, X0),
(C_MV GPRNoX0:$rs1, GPRNoX0:$rs2)>;
+def : CompressPat<(ADDI GPRNoX0:$rs1, GPRNoX0:$rs2, 0),
+ (C_MV GPRNoX0:$rs1, GPRNoX0:$rs2)>;
def : CompressPat<(EBREAK), (C_EBREAK)>;
def : CompressPat<(JALR X1, GPRNoX0:$rs1, 0),
(C_JALR GPRNoX0:$rs1)>;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45583.142224.patch
Type: text/x-patch
Size: 1186 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180412/771c8511/attachment.bin>
More information about the llvm-commits
mailing list