diff options
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.h')
| -rw-r--r-- | llvm/utils/TableGen/CodeGenDAGPatterns.h | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.h b/llvm/utils/TableGen/CodeGenDAGPatterns.h index c0812cf0553..9ce3cdfd7bc 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.h +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.h @@ -136,10 +136,18 @@ namespace EEVT {      /// whose element is VT.      bool EnforceVectorEltTypeIs(EEVT::TypeSet &VT, TreePattern &TP); +    /// EnforceVectorEltTypeIs - 'this' is now constrainted to be a vector type +    /// whose element is VT. +    bool EnforceVectorEltTypeIs(MVT::SimpleValueType VT, TreePattern &TP); +      /// EnforceVectorSubVectorTypeIs - 'this' is now constrainted to      /// be a vector type VT.      bool EnforceVectorSubVectorTypeIs(EEVT::TypeSet &VT, TreePattern &TP); +    /// EnforceVectorSameNumElts - 'this' is now constrainted to +    /// be a vector with same num elements as VT. +    bool EnforceVectorSameNumElts(EEVT::TypeSet &VT, TreePattern &TP); +      bool operator!=(const TypeSet &RHS) const { return TypeVec != RHS.TypeVec; }      bool operator==(const TypeSet &RHS) const { return TypeVec == RHS.TypeVec; } @@ -165,7 +173,7 @@ struct SDTypeConstraint {    enum {      SDTCisVT, SDTCisPtrTy, SDTCisInt, SDTCisFP, SDTCisVec, SDTCisSameAs,      SDTCisVTSmallerThanOp, SDTCisOpSmallerThanOp, SDTCisEltOfVec, -    SDTCisSubVecOfVec +    SDTCisSubVecOfVec, SDTCVecEltisVT, SDTCisSameNumEltsAs    } ConstraintType;    union {   // The discriminated union. @@ -187,6 +195,12 @@ struct SDTypeConstraint {      struct {        unsigned OtherOperandNum;      } SDTCisSubVecOfVec_Info; +    struct { +      MVT::SimpleValueType VT; +    } SDTCVecEltisVT_Info; +    struct { +      unsigned OtherOperandNum; +    } SDTCisSameNumEltsAs_Info;    } x;    /// ApplyTypeConstraint - Given a node in a pattern, apply this type  | 

