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

Chris Lattner lattner at cs.uiuc.edu
Fri Sep 9 17:20:34 PDT 2005



Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.185 -> 1.186
---
Log message:

Allow targets to say they don't support truncstore i1 (which includes a mask
when storing to an 8-bit memory location), as most don't.


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

 LegalizeDAG.cpp |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.185 llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.186
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.185	Fri Sep  2 15:32:45 2005
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp	Fri Sep  9 19:20:18 2005
@@ -1043,10 +1043,23 @@
     switch (getTypeAction(Node->getOperand(1).getValueType())) {
     case Legal:
       Tmp2 = LegalizeOp(Node->getOperand(1));
-      if (Tmp1 != Node->getOperand(0) || Tmp2 != Node->getOperand(1) ||
-          Tmp3 != Node->getOperand(2))
+      
+      // The only promote case we handle is TRUNCSTORE:i1 X into
+      //   -> TRUNCSTORE:i8 (and X, 1)
+      if (cast<VTSDNode>(Node->getOperand(4))->getVT() == MVT::i1 &&
+          TLI.getOperationAction(ISD::TRUNCSTORE, MVT::i1) == 
+                TargetLowering::Promote) {
+        // Promote the bool to a mask then store.
+        Tmp2 = DAG.getNode(ISD::AND, Tmp2.getValueType(), Tmp2,
+                           DAG.getConstant(1, Tmp2.getValueType()));
+        Result = DAG.getNode(ISD::TRUNCSTORE, MVT::Other, Tmp1, Tmp2, Tmp3,
+                             Node->getOperand(3), DAG.getValueType(MVT::i8));
+
+      } else if (Tmp1 != Node->getOperand(0) || Tmp2 != Node->getOperand(1) ||
+                 Tmp3 != Node->getOperand(2)) {
         Result = DAG.getNode(ISD::TRUNCSTORE, MVT::Other, Tmp1, Tmp2, Tmp3,
                              Node->getOperand(3), Node->getOperand(4));
+      }
       break;
     case Promote:
     case Expand:






More information about the llvm-commits mailing list