diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-02-11 12:38:04 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-02-11 12:38:11 +0000 |
commit | e3b557809604d036af6e00c60f012c2025b59a5e (patch) | |
tree | 8a11ba2269a3b669601e2fd41145b174008f4da8 /llvm/utils/TableGen/CodeGenDAGPatterns.cpp | |
parent | 08e8dd7b9db7bb4a9de26d44c1cbfd24e869c014 (diff) |
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenDAGPatterns.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp index c15728ac7d23..dd04778e2dbe 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp @@ -544,9 +544,9 @@ bool TypeInfer::EnforceSmallerThan(TypeSetByHwMode &Small, TypeSetByHwMode &Big, // Always treat non-scalable MVTs as smaller than scalable MVTs for the // purposes of ordering. auto ASize = std::make_tuple(A.isScalableVector(), A.getScalarSizeInBits(), - A.getSizeInBits().getKnownMinSize()); + A.getSizeInBits().getKnownMinValue()); auto BSize = std::make_tuple(B.isScalableVector(), B.getScalarSizeInBits(), - B.getSizeInBits().getKnownMinSize()); + B.getSizeInBits().getKnownMinValue()); return ASize < BSize; }; auto SameKindLE = [](MVT A, MVT B) -> bool { @@ -558,9 +558,9 @@ bool TypeInfer::EnforceSmallerThan(TypeSetByHwMode &Small, TypeSetByHwMode &Big, return false; return std::make_tuple(A.getScalarSizeInBits(), - A.getSizeInBits().getKnownMinSize()) <= + A.getSizeInBits().getKnownMinValue()) <= std::make_tuple(B.getScalarSizeInBits(), - B.getSizeInBits().getKnownMinSize()); + B.getSizeInBits().getKnownMinValue()); }; for (unsigned M : Modes) { @@ -740,7 +740,7 @@ bool TypeInfer::EnforceSameNumElts(TypeSetByHwMode &V, TypeSetByHwMode &W) { auto NoLength = [](const SmallDenseSet<ElementCount> &Lengths, MVT T) -> bool { return !Lengths.count(T.isVector() ? T.getVectorElementCount() - : ElementCount::getNull()); + : ElementCount()); }; SmallVector<unsigned, 4> Modes; @@ -751,11 +751,9 @@ bool TypeInfer::EnforceSameNumElts(TypeSetByHwMode &V, TypeSetByHwMode &W) { SmallDenseSet<ElementCount> VN, WN; for (MVT T : VS) - VN.insert(T.isVector() ? T.getVectorElementCount() - : ElementCount::getNull()); + VN.insert(T.isVector() ? T.getVectorElementCount() : ElementCount()); for (MVT T : WS) - WN.insert(T.isVector() ? T.getVectorElementCount() - : ElementCount::getNull()); + WN.insert(T.isVector() ? T.getVectorElementCount() : ElementCount()); Changed |= berase_if(VS, std::bind(NoLength, WN, std::placeholders::_1)); Changed |= berase_if(WS, std::bind(NoLength, VN, std::placeholders::_1)); @@ -2998,7 +2996,7 @@ TreePatternNodePtr TreePattern::ParseTreePattern(Init *TheInit, // chain. if (Int.IS.RetVTs.empty()) Operator = getDAGPatterns().get_intrinsic_void_sdnode(); - else if (Int.ModRef != CodeGenIntrinsic::NoMem || Int.hasSideEffects) + else if (!Int.ME.doesNotAccessMemory() || Int.hasSideEffects) // Has side-effects, requires chain. Operator = getDAGPatterns().get_intrinsic_w_chain_sdnode(); else // Otherwise, no chain. @@ -3637,16 +3635,17 @@ public: if (N->NodeHasProperty(SDNPHasChain, CDP)) hasChain = true; if (const CodeGenIntrinsic *IntInfo = N->getIntrinsicInfo(CDP)) { + ModRefInfo MR = IntInfo->ME.getModRef(); // If this is an intrinsic, analyze it. - if (IntInfo->ModRef & CodeGenIntrinsic::MR_Ref) - mayLoad = true;// These may load memory. + if (isRefSet(MR)) + mayLoad = true; // These may load memory. - if (IntInfo->ModRef & CodeGenIntrinsic::MR_Mod) - mayStore = true;// Intrinsics that can write to memory are 'mayStore'. + if (isModSet(MR)) + mayStore = true; // Intrinsics that can write to memory are 'mayStore'. - if (IntInfo->ModRef >= CodeGenIntrinsic::ReadWriteMem || - IntInfo->hasSideEffects) - // ReadWriteMem intrinsics can have other strange effects. + // Consider intrinsics that don't specify any restrictions on memory + // effects as having a side-effect. + if (IntInfo->ME == MemoryEffects::unknown() || IntInfo->hasSideEffects) hasSideEffects = true; } } |