[PATCH] D44815: [AArch64]: Add support for parsing rN registers.

Manoj Gupta via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 22 21:10:42 PDT 2018


manojgupta updated this revision to Diff 139556.
manojgupta added a comment.

Indenting and a minor fix.


Repository:
  rC Clang

https://reviews.llvm.org/D44815

Files:
  lib/Basic/Targets/AArch64.cpp
  test/CodeGen/aarch64-inline-asm.c


Index: test/CodeGen/aarch64-inline-asm.c
===================================================================
--- test/CodeGen/aarch64-inline-asm.c
+++ test/CodeGen/aarch64-inline-asm.c
@@ -54,3 +54,15 @@
     asm("ldxr %0, %1" : "=r"(val) : "Q"(var));
 // CHECK: call i32 asm "ldxr $0, $1", "=r,*Q"(i64* @var)
 }
+
+void test_r_registers(void) {
+    register unsigned long reg0 asm("r0") = 0;
+    register unsigned long reg1 asm("r1") = 1;
+    register unsigned int  reg29 asm("r29") = 2;
+    register unsigned int  reg30 asm("r30") = 3;
+
+    asm volatile("hvc #0" : : "r" (reg0), "r" (reg1));
+    asm volatile("hvc #0" : : "r" (reg29), "r" (reg30));
+    // CHECK: call void asm sideeffect "hvc #0", "{x0},{x1}"
+    // CHECK: call void asm sideeffect "hvc #0", "{fp},{lr}"
+}
Index: lib/Basic/Targets/AArch64.cpp
===================================================================
--- lib/Basic/Targets/AArch64.cpp
+++ lib/Basic/Targets/AArch64.cpp
@@ -309,6 +309,15 @@
 
 const TargetInfo::GCCRegAlias AArch64TargetInfo::GCCRegAliases[] = {
     {{"w31"}, "wsp"}, {{"x29"}, "fp"}, {{"x30"}, "lr"}, {{"x31"}, "sp"},
+    // GCC rN registers are aliases of xN registers.
+    {{"r0"}, "x0"},   {{"r1"}, "x1"},   {{"r2"}, "x2"},   {{"r3"}, "x3"},
+    {{"r4"}, "x4"},   {{"r5"}, "x5"},   {{"r6"}, "x6"},   {{"r7"}, "x7"},
+    {{"r8"}, "x8"},   {{"r9"}, "x9"},   {{"r10"}, "x10"}, {{"r11"}, "x11"},
+    {{"r12"}, "x12"}, {{"r13"}, "x13"}, {{"r14"}, "x14"}, {{"r15"}, "x15"},
+    {{"r16"}, "x16"}, {{"r17"}, "x17"}, {{"r18"}, "x18"}, {{"r19"}, "x19"},
+    {{"r20"}, "x20"}, {{"r21"}, "x21"}, {{"r22"}, "x22"}, {{"r23"}, "x23"},
+    {{"r24"}, "x24"}, {{"r25"}, "x25"}, {{"r26"}, "x26"}, {{"r27"}, "x27"},
+    {{"r28"}, "x28"}, {{"r29"}, "fp"},  {{"r30"}, "lr"},
     // The S/D/Q and W/X registers overlap, but aren't really aliases; we
     // don't want to substitute one of these for a different-sized one.
 };


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44815.139556.patch
Type: text/x-patch
Size: 1924 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180323/e30781e5/attachment.bin>


More information about the cfe-commits mailing list