diff options
author | Paul Walker <paul.walker@arm.com> | 2023-03-02 12:23:52 +0000 |
---|---|---|
committer | Paul Walker <paul.walker@arm.com> | 2023-03-02 13:14:07 +0000 |
commit | 62d11b2ccaeec8abc12e07aa009c922d72fd6377 (patch) | |
tree | 2b0cbf2ae047496f0bde854381c8dd3dd9080171 /llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp | |
parent | c396073a0de6bc156514c34c0ffbdd227178c11b (diff) | |
download | llvm-62d11b2ccaeec8abc12e07aa009c922d72fd6377.zip llvm-62d11b2ccaeec8abc12e07aa009c922d72fd6377.tar.gz llvm-62d11b2ccaeec8abc12e07aa009c922d72fd6377.tar.bz2 |
Revert "Revert "[SCEV] Add SCEVType to represent `vscale`.""
Relanding after fixing Polly related build error.
This reverts commit 7b26dcae9eaf8cdcba7fef032fd83d060dffd4b4.
Diffstat (limited to 'llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp b/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp index 24f1966..902eee2 100644 --- a/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp +++ b/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp @@ -680,6 +680,7 @@ const Loop *SCEVExpander::getRelevantLoop(const SCEV *S) { switch (S->getSCEVType()) { case scConstant: + case scVScale: return nullptr; // A constant has no relevant loops. case scTruncate: case scZeroExtend: @@ -1744,6 +1745,10 @@ Value *SCEVExpander::visitSequentialUMinExpr(const SCEVSequentialUMinExpr *S) { return expandMinMaxExpr(S, Intrinsic::umin, "umin", /*IsSequential*/true); } +Value *SCEVExpander::visitVScale(const SCEVVScale *S) { + return Builder.CreateVScale(ConstantInt::get(S->getType(), 1)); +} + Value *SCEVExpander::expandCodeForImpl(const SCEV *SH, Type *Ty, Instruction *IP) { setInsertPoint(IP); @@ -2124,6 +2129,7 @@ template<typename T> static InstructionCost costAndCollectOperands( llvm_unreachable("Attempt to use a SCEVCouldNotCompute object!"); case scUnknown: case scConstant: + case scVScale: return 0; case scPtrToInt: Cost = CastCost(Instruction::PtrToInt); @@ -2260,6 +2266,7 @@ bool SCEVExpander::isHighCostExpansionHelper( case scCouldNotCompute: llvm_unreachable("Attempt to use a SCEVCouldNotCompute object!"); case scUnknown: + case scVScale: // Assume to be zero-cost. return false; case scConstant: { |