<br><br>On Wednesday, December 18, 2013, Tim Northover  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: tnorthover<br>
Date: Wed Dec 18 03:27:33 2013<br>
New Revision: 197554<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=197554&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=197554&view=rev</a><br>
Log:<br>
ARM: set default float ABI based on triple.<br>
<br>
Clang sets the float-abi target option manually, but no longer<br>
annotates each function with its ABI. This can lead to confusing<br>
mistmatch between "clang -emit-llvm | llc" and normal clang<br>
invocations.<br>
<br>
Besides which, gnueabihf actually *is* hard-float. Defaulting to soft<br>
was just perverse.<br>
<br>
Added:<br>
    llvm/trunk/test/CodeGen/ARM/default-float-abi.ll<br>
Modified:<br>
    llvm/trunk/lib/Target/ARM/ARMSubtarget.h<br>
    llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp<br>
<br>
Modified: llvm/trunk/lib/Target/ARM/ARMSubtarget.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMSubtarget.h?rev=197554&r1=197553&r2=197554&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMSubtarget.h?rev=197554&r1=197553&r2=197554&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Target/ARM/ARMSubtarget.h (original)<br>
+++ llvm/trunk/lib/Target/ARM/ARMSubtarget.h Wed Dec 18 03:27:33 2013<br>
@@ -321,6 +321,11 @@ public:<br>
       TargetTriple.getEnvironment() == Triple::EABIHF;<br>
   }<br>
<br>
+  bool isTargetHardFloat() const {<br>
+    return TargetTriple.getEnvironment() == Triple::GNUEABIHF ||<br>
+           TargetTriple.getEnvironment() == Triple::EABIHF;<br>
+  }<br>
+<br>
   bool isAPCS_ABI() const { return TargetABI == ARM_ABI_APCS; }<br>
   bool isAAPCS_ABI() const { return TargetABI == ARM_ABI_AAPCS; }<br>
<br>
<br>
Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp?rev=197554&r1=197553&r2=197554&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp?rev=197554&r1=197553&r2=197554&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp (original)<br>
+++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp Wed Dec 18 03:27:33 2013<br>
@@ -53,7 +53,8 @@ ARMBaseTargetMachine::ARMBaseTargetMachi<br>
     InstrItins(Subtarget.getInstrItineraryData()) {<br>
   // Default to soft float ABI<br>
   if (Options.FloatABIType == FloatABI::Default)<br>
-    this->Options.FloatABIType = FloatABI::Soft;<br>
+    this->Options.FloatABIType =<br>
+        Subtarget.isTargetHardFloat() ? FloatABI::Hard : FloatABI::Soft;<br>
 }</blockquote><div><br></div><div> Update the comment just above to match the new logic, please.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

 void ARMBaseTargetMachine::addAnalysisPasses(PassManagerBase &PM) {<br>
<br>
Added: llvm/trunk/test/CodeGen/ARM/default-float-abi.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/default-float-abi.ll?rev=197554&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/default-float-abi.ll?rev=197554&view=auto</a><br>

==============================================================================<br>
--- llvm/trunk/test/CodeGen/ARM/default-float-abi.ll (added)<br>
+++ llvm/trunk/test/CodeGen/ARM/default-float-abi.ll Wed Dec 18 03:27:33 2013<br>
@@ -0,0 +1,22 @@<br>
+; RUN: llc -mtriple=armv7-linux-gnueabihf %s -o - | FileCheck %s --check-prefix=CHECK-HARD<br>
+; RUN: llc -mtriple=armv7-linux-eabihf %s -o - | FileCheck %s --check-prefix=CHECK-HARD<br>
+; RUN: llc -mtriple=armv7-linux-gnueabihf -float-abi=soft %s -o - | FileCheck %s --check-prefix=CHECK-SOFT<br>
+; RUN: llc -mtriple=armv7-linux-gnueabi %s -o - | FileCheck %s --check-prefix=CHECK-SOFT<br>
+; RUN: llc -mtriple=armv7-linux-eabi -float-abi=hard %s -o - | FileCheck %s --check-prefix=CHECK-HARD<br>
+; RUN: llc -mtriple=thumbv7-apple-ios6.0 %s -o - | FileCheck %s --check-prefix=CHECK-SOFT<br>
+<br>
+define float @test_abi(float %lhs, float %rhs) {<br>
+  %sum = fadd float %lhs, %rhs<br>
+  ret float %sum<br>
+<br>
+; CHECK-HARD-LABEL: test_abi:<br>
+; CHECK-HARD-NOT: vmov<br>
+; CHECK-HARD: vadd.f32 s0, s0, s1<br>
+; CHECK-HARD-NOT: vmov<br>
+<br>
+; CHECK-SOFT-LABEL: test_abi:<br>
+; CHECK-SOFT-DAG: vmov [[LHS:s[0-9]+]], r0<br>
+; CHECK-SOFT-DAG: vmov [[RHS:s[0-9]+]], r1<br>
+; CHECK-SOFT: vadd.f32 [[DEST:s[0-9]+]], [[LHS]], [[RHS]]<br>
+; CHECK-SOFT: vmov r0, [[DEST]]<br>
+}<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'llvm-commits@cs.uiuc.edu')">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote>