[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPC32RegisterInfo.cpp

Chris Lattner lattner at cs.uiuc.edu
Fri Sep 9 14:59:55 PDT 2005



Changes in directory llvm/lib/Target/PowerPC:

PPC32RegisterInfo.cpp updated: 1.22 -> 1.23
---
Log message:

I forgot that we always spill fp values as 64-bits.  Implement spill folding
for FP as well.  This triggers a couple dozen times on 177.mesa (for example).


---
Diffs of the changes:  (+10 -3)

 PPC32RegisterInfo.cpp |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/PowerPC/PPC32RegisterInfo.cpp
diff -u llvm/lib/Target/PowerPC/PPC32RegisterInfo.cpp:1.22 llvm/lib/Target/PowerPC/PPC32RegisterInfo.cpp:1.23
--- llvm/lib/Target/PowerPC/PPC32RegisterInfo.cpp:1.22	Fri Sep  9 16:46:49 2005
+++ llvm/lib/Target/PowerPC/PPC32RegisterInfo.cpp	Fri Sep  9 16:59:44 2005
@@ -149,14 +149,21 @@
       unsigned InReg = MI->getOperand(1).getReg();
       return addFrameReference(BuildMI(PPC::STW,
                                        3).addReg(InReg), FrameIndex);
-    } else {
+    } else {           // move -> load
       unsigned OutReg = MI->getOperand(0).getReg();
       return addFrameReference(BuildMI(PPC::LWZ, 2, OutReg), FrameIndex);
     }
     
   } else if (Opc == PPC::FMR) {
-    // FIXME: We would be able to fold this, but we don't know whether to use a
-    // 32- or 64-bit load/store :(.
+    // We currently always spill FP values as doubles.  :(
+    if (OpNum == 0) {  // move -> store
+      unsigned InReg = MI->getOperand(1).getReg();
+      return addFrameReference(BuildMI(PPC::STFD,
+                                       3).addReg(InReg), FrameIndex);
+    } else {           // move -> load
+      unsigned OutReg = MI->getOperand(0).getReg();
+      return addFrameReference(BuildMI(PPC::LFD, 2, OutReg), FrameIndex);
+    }
   }
   return 0;
 }






More information about the llvm-commits mailing list