]> granicus.if.org Git - llvm/commitdiff
[RISCV] Allow fp as an alias of s0
authorAlex Bradbury <asb@lowrisc.org>
Mon, 11 Mar 2019 21:35:26 +0000 (21:35 +0000)
committerAlex Bradbury <asb@lowrisc.org>
Mon, 11 Mar 2019 21:35:26 +0000 (21:35 +0000)
The RISC-V Assembly Programmer's Manual defines fp as another alias of x8.
However, our tablegen rules only recognise s0. This patch adds fp as another
alias of x8. GCC also accepts fp.

Differential Revision: https://reviews.llvm.org/D59209
Patch by Ferran Pallarès Roca.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355867 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/RISCV/RISCVRegisterInfo.td
test/MC/RISCV/rvi-alternate-abi-names.s [new file with mode: 0644]

index 9f6c0908138c5305a6b7fb7e839af0a8648bc4f3..79f8ab12f6c0a74e05f64b8cbd3749629212088c 100644 (file)
@@ -55,7 +55,7 @@ let RegAltNameIndices = [ABIRegAltName] in {
   def X6  : RISCVReg<6, "x6", ["t1"]>, DwarfRegNum<[6]>;
   def X7  : RISCVReg<7, "x7", ["t2"]>, DwarfRegNum<[7]>;
   }
-  def X8  : RISCVReg<8, "x8", ["s0"]>, DwarfRegNum<[8]>;
+  def X8  : RISCVReg<8, "x8", ["s0", "fp"]>, DwarfRegNum<[8]>;
   def X9  : RISCVReg<9, "x9", ["s1"]>, DwarfRegNum<[9]>;
   def X10 : RISCVReg<10,"x10", ["a0"]>, DwarfRegNum<[10]>;
   def X11 : RISCVReg<11,"x11", ["a1"]>, DwarfRegNum<[11]>;
diff --git a/test/MC/RISCV/rvi-alternate-abi-names.s b/test/MC/RISCV/rvi-alternate-abi-names.s
new file mode 100644 (file)
index 0000000..04ce18f
--- /dev/null
@@ -0,0 +1,16 @@
+# RUN: llvm-mc %s -triple=riscv32 \
+# RUN:     | FileCheck %s
+# RUN: llvm-mc %s -triple=riscv64 \
+# RUN:     | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \
+# RUN:     | llvm-objdump -d -r - \
+# RUN:     | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple riscv64 < %s \
+# RUN:     | llvm-objdump -d -r - \
+# RUN:     | FileCheck %s
+
+# 'fp' is an alternate ABI name for 's0' and it should be accepted in input.
+# However, 's0' should be printed in preference.
+
+# CHECK: addi s0, s0, -4
+addi fp, fp, -4