[llvm-commits] [llvm] r68464 - in /llvm/trunk: lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp test/CodeGen/ARM/2009-04-06-AsmModifier.ll

Bob Wilson bob.wilson at apple.com
Mon Apr 6 14:46:51 PDT 2009


Author: bwilson
Date: Mon Apr  6 16:46:51 2009
New Revision: 68464

URL: http://llvm.org/viewvc/llvm-project?rev=68464&view=rev
Log:
Handle 'a' modifier in ARM inline assembly.
Patch by Richard Pennington.

Added:
    llvm/trunk/test/CodeGen/ARM/2009-04-06-AsmModifier.ll
Modified:
    llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp

Modified: llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp?rev=68464&r1=68463&r2=68464&view=diff

==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp Mon Apr  6 16:46:51 2009
@@ -739,7 +739,10 @@
     
     switch (ExtraCode[0]) {
     default: return true;  // Unknown modifier.
+    case 'a': // Don't print "#" before a global var name or constant.
     case 'c': // Don't print "$" before a global var name or constant.
+      printOperand(MI, OpNo, "no_hash");
+      return false;
     case 'P': // Print a VFP double precision register.
       printOperand(MI, OpNo);
       return false;

Added: llvm/trunk/test/CodeGen/ARM/2009-04-06-AsmModifier.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2009-04-06-AsmModifier.ll?rev=68464&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/ARM/2009-04-06-AsmModifier.ll (added)
+++ llvm/trunk/test/CodeGen/ARM/2009-04-06-AsmModifier.ll Mon Apr  6 16:46:51 2009
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc -march=arm | grep {swi 107}
+
+define i32 @_swilseek(i32) nounwind {
+entry:
+	%ptr = alloca i32		; <i32*> [#uses=2]
+	store i32 %0, i32* %ptr
+	%retval = alloca i32		; <i32*> [#uses=2]
+	store i32 0, i32* %retval
+	%res = alloca i32		; <i32*> [#uses=0]
+	%fh = alloca i32		; <i32*> [#uses=1]
+	%1 = load i32* %fh		; <i32> [#uses=1]
+	%2 = load i32* %ptr		; <i32> [#uses=1]
+	%3 = call i32* asm "mov r0, $2; mov r1, $3; swi ${1:a}; mov $0, r0", "=r,i,r,r,~{r0},~{r1}"(i32 107, i32 %1, i32 %2) nounwind		; <i32*> [#uses=0]
+	br label %return
+
+return:		; preds = %entry
+	%4 = load i32* %retval		; <i32> [#uses=1]
+	ret i32 %4
+}





More information about the llvm-commits mailing list