[llvm] 3b8a1d5 - NFC: Migrate SpeculativeExecution to work on InstructionCost
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 1 04:13:38 PST 2021
Author: Sander de Smalen
Date: 2021-02-01T12:13:23Z
New Revision: 3b8a1d581e6e1623d046b8b8da577ec4d42a544c
URL: https://github.com/llvm/llvm-project/commit/3b8a1d581e6e1623d046b8b8da577ec4d42a544c
DIFF: https://github.com/llvm/llvm-project/commit/3b8a1d581e6e1623d046b8b8da577ec4d42a544c.diff
LOG: NFC: Migrate SpeculativeExecution to work on InstructionCost
This patch migrates cost values and arithmetic to work on InstructionCost.
When the interfaces to TargetTransformInfo are changed, any InstructionCost
state will propagate naturally.
See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D95356
Added:
Modified:
llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp b/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
index c78185f2a6ad..ff9132206231 100644
--- a/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
+++ b/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
@@ -210,8 +210,8 @@ bool SpeculativeExecutionPass::runOnBasicBlock(BasicBlock &B) {
return false;
}
-static unsigned ComputeSpeculationCost(const Instruction *I,
- const TargetTransformInfo &TTI) {
+static InstructionCost ComputeSpeculationCost(const Instruction *I,
+ const TargetTransformInfo &TTI) {
switch (Operator::getOpcode(I)) {
case Instruction::GetElementPtr:
case Instruction::Add:
@@ -255,7 +255,8 @@ static unsigned ComputeSpeculationCost(const Instruction *I,
return TTI.getUserCost(I, TargetTransformInfo::TCK_SizeAndLatency);
default:
- return UINT_MAX; // Disallow anything not explicitly listed.
+ return InstructionCost::getInvalid(); // Disallow anything not explicitly
+ // listed.
}
}
@@ -288,11 +289,11 @@ bool SpeculativeExecutionPass::considerHoistingFromTo(
return true;
};
- unsigned TotalSpeculationCost = 0;
+ InstructionCost TotalSpeculationCost = 0;
unsigned NotHoistedInstCount = 0;
for (const auto &I : FromBlock) {
- const unsigned Cost = ComputeSpeculationCost(&I, *TTI);
- if (Cost != UINT_MAX && isSafeToSpeculativelyExecute(&I) &&
+ const InstructionCost Cost = ComputeSpeculationCost(&I, *TTI);
+ if (Cost.isValid() && isSafeToSpeculativelyExecute(&I) &&
AllPrecedingUsesFromBlockHoisted(&I)) {
TotalSpeculationCost += Cost;
if (TotalSpeculationCost > SpecExecMaxSpeculationCost)
More information about the llvm-commits
mailing list