[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Chris Lattner lattner at cs.uiuc.edu
Tue Apr 12 13:30:26 PDT 2005



Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.85 -> 1.86
---
Log message:

promote extload i1 -> extload i8


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

 LegalizeDAG.cpp |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.85 llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.86
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.85	Mon Apr 11 21:19:10 2005
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp	Tue Apr 12 15:30:10 2005
@@ -448,8 +448,17 @@
 
     MVT::ValueType SrcVT = cast<MVTSDNode>(Node)->getExtraValueType();
     switch (TLI.getOperationAction(Node->getOpcode(), SrcVT)) {
-    case TargetLowering::Promote:
     default: assert(0 && "This action is not supported yet!");
+    case TargetLowering::Promote:
+      assert(SrcVT == MVT::i1 && "Can only promote EXTLOAD from i1 -> i8!");
+      Result = DAG.getNode(Node->getOpcode(), Node->getValueType(0),
+                           Tmp1, Tmp2, MVT::i8);
+      // Since loads produce two values, make sure to remember that we legalized
+      // both of them.
+      AddLegalizedOperand(SDOperand(Node, 0), Result);
+      AddLegalizedOperand(SDOperand(Node, 1), Result.getValue(1));
+      return Result.getValue(Op.ResNo);
+      
     case TargetLowering::Legal:
       if (Tmp1 != Node->getOperand(0) ||
           Tmp2 != Node->getOperand(1))
@@ -463,7 +472,6 @@
       AddLegalizedOperand(SDOperand(Node, 0), Result);
       AddLegalizedOperand(SDOperand(Node, 1), Result.getValue(1));
       return Result.getValue(Op.ResNo);
-      break;
     case TargetLowering::Expand:
       assert(Node->getOpcode() != ISD::EXTLOAD &&
              "EXTLOAD should always be supported!");






More information about the llvm-commits mailing list