Observe -soft-float.
authorEvan Cheng <evan.cheng@apple.com>
Wed, 31 Jan 2007 08:40:13 +0000 (08:40 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 31 Jan 2007 08:40:13 +0000 (08:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33699 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp

index 0b1c3ac62959986d4e849109005d6009c9235f94..5cbf29601412e6fec6a7bf71f290fc6f321db135 100644 (file)
@@ -28,6 +28,7 @@
 #include "llvm/CodeGen/MachineInstrBuilder.h"
 #include "llvm/CodeGen/SelectionDAG.h"
 #include "llvm/CodeGen/SSARegMap.h"
+#include "llvm/Target/TargetOptions.h"
 #include "llvm/ADT/VectorExtras.h"
 using namespace llvm;
 
@@ -36,7 +37,7 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
   Subtarget = &TM.getSubtarget<ARMSubtarget>();
 
   // Uses VFP for Thumb libfuncs if available.
-  if (Subtarget->isThumb() && Subtarget->hasVFP2()) {
+  if (!UseSoftFloat && Subtarget->isThumb() && Subtarget->hasVFP2()) {
     // Single-precision floating-point arithmetic.
     setLibcallName(RTLIB::ADD_F32, "__addsf3vfp");
     setLibcallName(RTLIB::SUB_F32, "__subsf3vfp");
@@ -91,7 +92,7 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
   }
 
   addRegisterClass(MVT::i32, ARM::GPRRegisterClass);
-  if (Subtarget->hasVFP2() && !Subtarget->isThumb()) {
+  if (!UseSoftFloat && Subtarget->hasVFP2() && !Subtarget->isThumb()) {
     addRegisterClass(MVT::f32, ARM::SPRRegisterClass);
     addRegisterClass(MVT::f64, ARM::DPRRegisterClass);
   }
@@ -173,7 +174,7 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
   }
   setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i1, Expand);
 
-  if (Subtarget->hasVFP2() && !Subtarget->isThumb())
+  if (!UseSoftFloat && Subtarget->hasVFP2() && !Subtarget->isThumb())
     // Turn f64->i64 into FMRRD iff target supports vfp2.
     setOperationAction(ISD::BIT_CONVERT, MVT::i64, Custom);