[llvm-commits] CVS: llvm/lib/Target/X86/X86RegisterInfo.cpp

Chris Lattner lattner at cs.uiuc.edu
Thu Feb 2 12:00:53 PST 2006



Changes in directory llvm/lib/Target/X86:

X86RegisterInfo.cpp updated: 1.118 -> 1.119
---
Log message:

implement isStoreToStackSlot


---
Diffs of the changes:  (+23 -0)

 X86RegisterInfo.cpp |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+)


Index: llvm/lib/Target/X86/X86RegisterInfo.cpp
diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.118 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.119
--- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.118	Wed Feb  1 17:02:25 2006
+++ llvm/lib/Target/X86/X86RegisterInfo.cpp	Thu Feb  2 14:00:41 2006
@@ -139,6 +139,29 @@
   return 0;
 }
 
+unsigned X86RegisterInfo::isStoreToStackSlot(MachineInstr *MI, 
+                                             int &FrameIndex) const {
+  switch (MI->getOpcode()) {
+  default: break;
+  case X86::MOV8mr:
+  case X86::MOV16mr:
+  case X86::MOV32mr:
+  case X86::FpSTP64m:
+  case X86::MOVSSmr:
+  case X86::MOVSDmr:
+    if (MI->getOperand(0).isFrameIndex() && MI->getOperand(1).isImmediate() &&
+        MI->getOperand(2).isRegister() && MI->getOperand(3).isImmediate() &&
+        MI->getOperand(3).getImmedValue() == 1 &&
+        MI->getOperand(4).getReg() == 0 &&
+        MI->getOperand(5).getImmedValue() == 0) {
+      FrameIndex = MI->getOperand(1).getFrameIndex();
+      return MI->getOperand(4).getReg();
+    }
+    break;
+  }
+  return 0;
+}
+
 
 static MachineInstr *MakeMInst(unsigned Opcode, unsigned FrameIndex,
                                MachineInstr *MI) {






More information about the llvm-commits mailing list