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

Dan Gohman djg at cray.com
Wed Jun 13 08:12:30 PDT 2007



Changes in directory llvm/include/llvm/CodeGen:

SelectionDAGNodes.h updated: 1.191 -> 1.192
---
Log message:

Introduce new SelectionDAG node opcodes VEXTRACT_SUBVECTOR and
VCONCAT_VECTORS. Use these for CopyToReg and CopyFromReg legalizing in
the case that the full register is to be split into subvectors instead
of scalars. This replaces uses of VBIT_CONVERT to present values as
vector-of-vector types in order to make whole subvectors accessible via
BUILD_VECTOR and EXTRACT_VECTOR_ELT.

This is in preparation for adding extended ValueType values, where
having vector-of-vector types is undesirable.


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

 SelectionDAGNodes.h |   13 +++++++++++++
 1 files changed, 13 insertions(+)


Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h
diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.191 llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.192
--- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.191	Thu May 24 09:36:03 2007
+++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h	Wed Jun 13 10:12:02 2007
@@ -267,6 +267,19 @@
     /// element number IDX.
     EXTRACT_VECTOR_ELT,
     
+    /// VCONCAT_VECTORS(VECTOR0, VECTOR1, ..., COUNT,TYPE) - Given a number of
+    /// values of MVT::Vector type with the same length and element type, this
+    /// produces a concatenated MVT::Vector result value, with length equal to
+    /// the sum of the input vectors.  This can only be used before
+    /// legalization.
+    VCONCAT_VECTORS,
+    
+    /// VEXTRACT_SUBVECTOR(VECTOR, IDX) - Returns a subvector from VECTOR (an
+    /// MVT::Vector value) starting with the (potentially variable)
+    /// element number IDX, which must be a multiple of the result vector
+    /// length.  This can only be used before legalization.
+    VEXTRACT_SUBVECTOR,
+    
     /// VVECTOR_SHUFFLE(VEC1, VEC2, SHUFFLEVEC, COUNT,TYPE) - Returns a vector,
     /// of the same type as VEC1/VEC2.  SHUFFLEVEC is a VBUILD_VECTOR of
     /// constant int values that indicate which value each result element will






More information about the llvm-commits mailing list