[llvm] r191125 - Set .reorder for the stub so that gas takes care of delay slot processing.

Reed Kotler rkotler at mips.com
Fri Sep 20 18:37:53 PDT 2013


Author: rkotler
Date: Fri Sep 20 20:37:52 2013
New Revision: 191125

URL: http://llvm.org/viewvc/llvm-project?rev=191125&view=rev
Log:
Set .reorder for the stub so that gas takes care of delay slot processing.


Added:
    llvm/trunk/test/CodeGen/Mips/fptr2.ll
Modified:
    llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp

Modified: llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp?rev=191125&r1=191124&r2=191125&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp (original)
+++ llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp Fri Sep 20 20:37:52 2013
@@ -441,8 +441,10 @@ static void createFPFnStub(Function *F,
     IAH.Out(".reloc 0,R_MIPS_NONE," + Name);
     IAH.Out("la $$25," + LocalName);
   }
-  else
+  else {
+    IAH.Out(".set reorder");
     IAH.Out("la $$25, " + Name);
+  }
   swapFPIntParams(PV, M, IAH, LE, false);
   IAH.Out("jr $$25");
   IAH.Out(LocalName + " = " + Name);

Added: llvm/trunk/test/CodeGen/Mips/fptr2.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/fptr2.ll?rev=191125&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/fptr2.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/fptr2.ll Fri Sep 20 20:37:52 2013
@@ -0,0 +1,20 @@
+; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -relocation-model=static  < %s | FileCheck %s -check-prefix=static16
+
+; Function Attrs: nounwind
+define double @my_mul(double %a, double %b) #0 {
+entry:
+  %a.addr = alloca double, align 8
+  %b.addr = alloca double, align 8
+  store double %a, double* %a.addr, align 8
+  store double %b, double* %b.addr, align 8
+  %0 = load double* %a.addr, align 8
+  %1 = load double* %b.addr, align 8
+  %mul = fmul double %0, %1
+  ret double %mul
+}
+
+; static16: 	        .ent	__fn_stub_my_mul
+; static16:     	.set reorder
+; static16-NEXT:	#NO_APP
+; static16: 	        .end __fn_stub_my_mul
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="true" }





More information about the llvm-commits mailing list