diff options
author | Craig Topper <craig.topper@gmail.com> | 2015-11-26 07:02:18 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2015-11-26 07:02:18 +0000 |
commit | 9a44b3fa588113201f0615d11b2b0882743551bf (patch) | |
tree | 899749fd16f42e304f5bd03bc1116e5ac582c45d /llvm/utils/TableGen/CodeGenDAGPatterns.h | |
parent | a193510da2af9a1f2d2e8f9f2f9a0f6bde513123 (diff) | |
download | llvm-9a44b3fa588113201f0615d11b2b0882743551bf.zip llvm-9a44b3fa588113201f0615d11b2b0882743551bf.tar.gz llvm-9a44b3fa588113201f0615d11b2b0882743551bf.tar.bz2 |
[SelectionDAG] Add a SDTCisSameSizeAs type constraint that can be used to ensure vector widths match even if the element size and count don't.
llvm-svn: 254138
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.h')
-rw-r--r-- | llvm/utils/TableGen/CodeGenDAGPatterns.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.h b/llvm/utils/TableGen/CodeGenDAGPatterns.h index f330e55..76c9cef 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.h +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.h @@ -148,6 +148,9 @@ namespace EEVT { /// be a vector with same num elements as VT. bool EnforceVectorSameNumElts(EEVT::TypeSet &VT, TreePattern &TP); + /// EnforceSameSize - 'this' is now constrained to be the same size as VT. + bool EnforceSameSize(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; } @@ -173,7 +176,7 @@ struct SDTypeConstraint { enum { SDTCisVT, SDTCisPtrTy, SDTCisInt, SDTCisFP, SDTCisVec, SDTCisSameAs, SDTCisVTSmallerThanOp, SDTCisOpSmallerThanOp, SDTCisEltOfVec, - SDTCisSubVecOfVec, SDTCVecEltisVT, SDTCisSameNumEltsAs + SDTCisSubVecOfVec, SDTCVecEltisVT, SDTCisSameNumEltsAs, SDTCisSameSizeAs } ConstraintType; union { // The discriminated union. @@ -201,6 +204,9 @@ struct SDTypeConstraint { struct { unsigned OtherOperandNum; } SDTCisSameNumEltsAs_Info; + struct { + unsigned OtherOperandNum; + } SDTCisSameSizeAs_Info; } x; /// ApplyTypeConstraint - Given a node in a pattern, apply this type |