Make FGR64RegisterClass available if target is Mips64.
authorAkira Hatanaka <ahatanak@gmail.com>
Fri, 23 Sep 2011 18:28:39 +0000 (18:28 +0000)
committerAkira Hatanaka <ahatanak@gmail.com>
Fri, 23 Sep 2011 18:28:39 +0000 (18:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140397 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsISelLowering.cpp

index fbd2f4b84608db7eb51654bb0900fa828dc11ab1..0c0b9abdd3f78328f25ca5bbab959ea5ab9f39c3 100644 (file)
@@ -84,6 +84,7 @@ MipsTargetLowering::
 MipsTargetLowering(MipsTargetMachine &TM)
   : TargetLowering(TM, new MipsTargetObjectFile()) {
   Subtarget = &TM.getSubtarget<MipsSubtarget>();
+  bool HasMips64 = Subtarget->hasMips64();
 
   // Mips does not have i1 type, so use i32 for
   // setcc operations results (slt, sgt, ...).
@@ -95,8 +96,12 @@ MipsTargetLowering(MipsTargetMachine &TM)
   addRegisterClass(MVT::f32, Mips::FGR32RegisterClass);
 
   // When dealing with single precision only, use libcalls
-  if (!Subtarget->isSingleFloat())
+  if (!Subtarget->isSingleFloat()) {
+    if (HasMips64)
+      addRegisterClass(MVT::f64, Mips::FGR64RegisterClass);
+    else
       addRegisterClass(MVT::f64, Mips::AFGR64RegisterClass);
+  }
 
   // Load extented operations for i1 types must be promoted
   setLoadExtAction(ISD::EXTLOAD,  MVT::i1,  Promote);