forked from OSchip/llvm-project
NFC: Migrate LoopIdiomRecognize 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
This commit is contained in:
parent
0f435a544a
commit
79a6cfc29e
|
@ -90,6 +90,7 @@
|
|||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/InstructionCost.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils/BuildLibCalls.h"
|
||||
|
@ -1597,7 +1598,7 @@ bool LoopIdiomRecognize::recognizeAndInsertFFS() {
|
|||
std::distance(InstWithoutDebugIt.begin(), InstWithoutDebugIt.end());
|
||||
|
||||
IntrinsicCostAttributes Attrs(IntrinID, InitX->getType(), Args);
|
||||
int Cost =
|
||||
InstructionCost Cost =
|
||||
TTI->getIntrinsicInstrCost(Attrs, TargetTransformInfo::TCK_SizeAndLatency);
|
||||
if (HeaderSize != IdiomCanonicalSize &&
|
||||
Cost > TargetTransformInfo::TCC_Basic)
|
||||
|
@ -2148,7 +2149,7 @@ bool LoopIdiomRecognize::recognizeShiftUntilBitTest() {
|
|||
// making the loop countable, even if nothing else changes.
|
||||
IntrinsicCostAttributes Attrs(
|
||||
IntrID, Ty, {UndefValue::get(Ty), /*is_zero_undef=*/Builder.getTrue()});
|
||||
int Cost = TTI->getIntrinsicInstrCost(Attrs, CostKind);
|
||||
InstructionCost Cost = TTI->getIntrinsicInstrCost(Attrs, CostKind);
|
||||
if (Cost > TargetTransformInfo::TCC_Basic) {
|
||||
LLVM_DEBUG(dbgs() << DEBUG_TYPE
|
||||
" Intrinsic is too costly, not beneficial\n");
|
||||
|
|
Loading…
Reference in New Issue