add blx
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Oct 2006 16:21:43 +0000 (16:21 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Oct 2006 16:21:43 +0000 (16:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31037 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrInfo.td
test/CodeGen/ARM/call.ll

index 5392929462cf500c193999ee2c1ac1adc7cc95a9..349c358b89ea0f32bc23ad076d75bf28a99aafb6 100644 (file)
@@ -149,6 +149,7 @@ let isReturn = 1 in {
 
 let noResults = 1, Defs = [R0, R1, R2, R3, R14] in {
   def bl: InstARM<(ops i32imm:$func, variable_ops), "bl $func", []>;
+  def blx     : InstARM<(ops IntRegs:$func, variable_ops), "blx $func", [(ARMcall IntRegs:$func)]>;
 }
 
 def ldr   : InstARM<(ops IntRegs:$dst, memri:$addr),
index 316cb548bbf9d6bb68dece0680afa13ee8a42aab..b223698c65ca260d3710af01430db84a78c5fa20 100644 (file)
@@ -1,4 +1,7 @@
-; RUN: llvm-as < %s | llc -march=arm
+; RUN: llvm-as < %s | llc -march=arm &&
+; RUN: llvm-as < %s | llc -march=arm | grep bl &&
+; RUN: llvm-as < %s | llc -march=arm | grep blx
+
 void %f() {
 entry:
        call void %g( int 1, int 2, int 3, int 4 )
@@ -8,3 +11,10 @@ entry:
 
 declare void %g(int, int, int, int)
 declare fastcc void %h()
+
+void %g(void (...)* %g) {
+entry:
+       %g_c = cast void (...)* %g to void ()*
+       call void %g_c( )
+       ret void
+}