[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAG.h

Chris Lattner lattner at cs.uiuc.edu
Tue Aug 15 10:46:15 PDT 2006



Changes in directory llvm/include/llvm/CodeGen:

SelectionDAG.h updated: 1.121 -> 1.122
---
Log message:

add a new SDVTList type and new SelectionDAG::getVTList methods to streamline
the creation of canonical VTLists.


---
Diffs of the changes:  (+37 -9)

 SelectionDAG.h |   46 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 37 insertions(+), 9 deletions(-)


Index: llvm/include/llvm/CodeGen/SelectionDAG.h
diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.121 llvm/include/llvm/CodeGen/SelectionDAG.h:1.122
--- llvm/include/llvm/CodeGen/SelectionDAG.h:1.121	Mon Aug 14 18:54:24 2006
+++ llvm/include/llvm/CodeGen/SelectionDAG.h	Tue Aug 15 12:46:01 2006
@@ -30,6 +30,15 @@
   class MachineDebugInfo;
   class MachineFunction;
 
+/// SDVTList - This represents a list of ValueType's that has been intern'd by
+/// a SelectionDAG.  Instances of this simple value class are returned by
+/// SelectionDAG::getVTList(...).
+///
+struct SDVTList {
+  const MVT::ValueType *VTs;
+  unsigned short NumVTs;
+};
+  
 /// SelectionDAG class - This is used to represent a portion of an LLVM function
 /// in a low-level Data Dependence DAG representation suitable for instruction
 /// selection.  This DAG is constructed as the first step of instruction
@@ -109,7 +118,34 @@
   /// RemoveDeadNodes - This method deletes all unreachable nodes in the
   /// SelectionDAG.
   void RemoveDeadNodes();
-
+  
+  /// getVTList - Return an SDVTList that represents the list of values
+  /// specified.
+  SDVTList getVTList(MVT::ValueType VT);
+  SDVTList getVTList(MVT::ValueType VT1, MVT::ValueType VT2);
+  SDVTList getVTList(MVT::ValueType VT1, MVT::ValueType VT2,MVT::ValueType VT3);
+  SDVTList getVTList(const MVT::ValueType *VTs, unsigned NumVTs);
+  
+  /// getNodeValueTypes - These are obsolete, use getVTList instead.
+  const MVT::ValueType *getNodeValueTypes(MVT::ValueType VT) {
+    return getVTList(VT).VTs;
+  }
+  const MVT::ValueType *getNodeValueTypes(MVT::ValueType VT1, 
+                                          MVT::ValueType VT2) {
+    return getVTList(VT1, VT2).VTs;
+  }
+  const MVT::ValueType *getNodeValueTypes(MVT::ValueType VT1,MVT::ValueType VT2,
+                                          MVT::ValueType VT3) {
+    return getVTList(VT1, VT2, VT3).VTs;
+  }
+  const MVT::ValueType *getNodeValueTypes(std::vector<MVT::ValueType> &VTList) {
+    return getVTList(&VTList[0], VTList.size()).VTs;
+  }
+  
+  
+  //===----------------------------------------------------------------------===//
+  // Node creation methods.
+  //
   SDOperand getString(const std::string &Val);
   SDOperand getConstant(uint64_t Val, MVT::ValueType VT, bool isTarget = false);
   SDOperand getTargetConstant(uint64_t Val, MVT::ValueType VT) {
@@ -422,14 +458,6 @@
 
   void dump() const;
 
-  /// getNodeValueTypes - Return a pointer to an intern'd representation of the
-  /// specified valuetype list.
-  MVT::ValueType *getNodeValueTypes(MVT::ValueType VT1);
-  MVT::ValueType *getNodeValueTypes(MVT::ValueType VT1, MVT::ValueType VT2);
-  MVT::ValueType *getNodeValueTypes(MVT::ValueType VT1, MVT::ValueType VT2,
-                                    MVT::ValueType VT3);
-  MVT::ValueType *getNodeValueTypes(std::vector<MVT::ValueType> &RetVals);
-  
 private:
   void RemoveNodeFromCSEMaps(SDNode *N);
   SDNode *AddNonLeafNodeToCSEMaps(SDNode *N);






More information about the llvm-commits mailing list