[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaInstrInfo.cpp AlphaInstrInfo.h AlphaInstrInfo.td

Andrew Lenharth alenhar2 at cs.uiuc.edu
Thu Feb 2 19:07:49 PST 2006



Changes in directory llvm/lib/Target/Alpha:

AlphaInstrInfo.cpp updated: 1.7 -> 1.8
AlphaInstrInfo.h updated: 1.4 -> 1.5
AlphaInstrInfo.td updated: 1.112 -> 1.113
---
Log message:

isStoreToStackSlot

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

 AlphaInstrInfo.cpp |   18 ++++++++++++++++++
 AlphaInstrInfo.h   |    1 +
 AlphaInstrInfo.td  |    4 +---
 3 files changed, 20 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/Alpha/AlphaInstrInfo.cpp
diff -u llvm/lib/Target/Alpha/AlphaInstrInfo.cpp:1.7 llvm/lib/Target/Alpha/AlphaInstrInfo.cpp:1.8
--- llvm/lib/Target/Alpha/AlphaInstrInfo.cpp:1.7	Thu Feb  2 14:12:32 2006
+++ llvm/lib/Target/Alpha/AlphaInstrInfo.cpp	Thu Feb  2 21:07:37 2006
@@ -61,3 +61,21 @@
   return 0;
 }
 
+unsigned 
+AlphaInstrInfo::isStoreToStackSlot(MachineInstr *MI, int &FrameIndex) const {
+  switch (MI->getOpcode()) {
+  case Alpha::STL:
+  case Alpha::STQ:
+  case Alpha::STB:
+  case Alpha::STW:
+  case Alpha::STS:
+  case Alpha::STT:
+    if (MI->getOperand(1).isFrameIndex()) {
+      FrameIndex = MI->getOperand(1).getFrameIndex();
+      return MI->getOperand(0).getReg();
+    }
+    break;
+  }
+  return 0;
+}
+


Index: llvm/lib/Target/Alpha/AlphaInstrInfo.h
diff -u llvm/lib/Target/Alpha/AlphaInstrInfo.h:1.4 llvm/lib/Target/Alpha/AlphaInstrInfo.h:1.5
--- llvm/lib/Target/Alpha/AlphaInstrInfo.h:1.4	Thu Feb  2 14:12:32 2006
+++ llvm/lib/Target/Alpha/AlphaInstrInfo.h	Thu Feb  2 21:07:37 2006
@@ -37,6 +37,7 @@
                            unsigned &SrcReg, unsigned &DstReg) const;
   
   virtual unsigned isLoadFromStackSlot(MachineInstr *MI, int &FrameIndex) const;
+  virtual unsigned isStoreToStackSlot(MachineInstr *MI, int &FrameIndex) const;
 };
 
 }


Index: llvm/lib/Target/Alpha/AlphaInstrInfo.td
diff -u llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.112 llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.113
--- llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.112	Wed Feb  1 13:37:33 2006
+++ llvm/lib/Target/Alpha/AlphaInstrInfo.td	Thu Feb  2 21:07:37 2006
@@ -177,9 +177,7 @@
                 [(set GPRC:$RDEST, (select (xor GPRC:$RCOND, 1), GPRC:$RFALSE, immUExt8:$RTRUE))]>;
 
 
-//FIXME: fold setcc with select for all cases.  clearly I need patterns for inverted conditions
-//       and constants (which require inverted conditions as legalize puts the constant in the
-//       wrong field for the instruction definition
+//General pattern for cmov
 def : Pat<(select GPRC:$which, GPRC:$src1, GPRC:$src2),
       (CMOVNE GPRC:$src2, GPRC:$src1, GPRC:$which)>;
 def : Pat<(select GPRC:$which, GPRC:$src1, immUExt8:$src2),






More information about the llvm-commits mailing list