mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-03 16:18:37 +00:00
[multiversion] Kill FunctionTargetTransformInfo, TTI itself is now
per-function and supports the exact desired interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227743 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
26bc071088
commit
38a2e36ad9
@ -1,49 +0,0 @@
|
||||
//===- llvm/Analysis/FunctionTargetTransformInfo.h --------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This pass wraps a TargetTransformInfo in a FunctionPass so that it can
|
||||
// forward along the current Function so that we can make target specific
|
||||
// decisions based on the particular subtarget specified for each Function.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_ANALYSIS_FUNCTIONTARGETTRANSFORMINFO_H
|
||||
#define LLVM_ANALYSIS_FUNCTIONTARGETTRANSFORMINFO_H
|
||||
|
||||
#include "TargetTransformInfo.h"
|
||||
#include "llvm/Pass.h"
|
||||
|
||||
namespace llvm {
|
||||
class FunctionTargetTransformInfo final : public FunctionPass {
|
||||
private:
|
||||
const Function *Fn;
|
||||
const TargetTransformInfo *TTI;
|
||||
|
||||
FunctionTargetTransformInfo(const FunctionTargetTransformInfo &)
|
||||
LLVM_DELETED_FUNCTION;
|
||||
void operator=(const FunctionTargetTransformInfo &) LLVM_DELETED_FUNCTION;
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
FunctionTargetTransformInfo();
|
||||
|
||||
// Implementation boilerplate.
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
||||
void releaseMemory() override;
|
||||
bool runOnFunction(Function &F) override;
|
||||
|
||||
// Shimmed functions from TargetTransformInfo.
|
||||
void
|
||||
getUnrollingPreferences(Loop *L,
|
||||
TargetTransformInfo::UnrollingPreferences &UP) const {
|
||||
TTI->getUnrollingPreferences(L, UP);
|
||||
}
|
||||
};
|
||||
}
|
||||
#endif
|
@ -264,7 +264,6 @@ void initializeTailDuplicatePassPass(PassRegistry&);
|
||||
void initializeTargetPassConfigPass(PassRegistry&);
|
||||
void initializeDataLayoutPassPass(PassRegistry &);
|
||||
void initializeTargetTransformInfoWrapperPassPass(PassRegistry &);
|
||||
void initializeFunctionTargetTransformInfoPass(PassRegistry &);
|
||||
void initializeTargetLibraryInfoWrapperPassPass(PassRegistry &);
|
||||
void initializeAssumptionCacheTrackerPass(PassRegistry &);
|
||||
void initializeTwoAddressInstructionPassPass(PassRegistry&);
|
||||
|
@ -22,7 +22,6 @@ add_llvm_library(LLVMAnalysis
|
||||
DependenceAnalysis.cpp
|
||||
DomPrinter.cpp
|
||||
DominanceFrontier.cpp
|
||||
FunctionTargetTransformInfo.cpp
|
||||
IVUsers.cpp
|
||||
InstCount.cpp
|
||||
InstructionSimplify.cpp
|
||||
|
@ -1,50 +0,0 @@
|
||||
//===- llvm/Analysis/FunctionTargetTransformInfo.h --------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This pass wraps a TargetTransformInfo in a FunctionPass so that it can
|
||||
// forward along the current Function so that we can make target specific
|
||||
// decisions based on the particular subtarget specified for each Function.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Analysis/FunctionTargetTransformInfo.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#define DEBUG_TYPE "function-tti"
|
||||
static const char ftti_name[] = "Function TargetTransformInfo";
|
||||
INITIALIZE_PASS_BEGIN(FunctionTargetTransformInfo, "function_tti", ftti_name, false, true)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(FunctionTargetTransformInfo, "function_tti", ftti_name, false, true)
|
||||
char FunctionTargetTransformInfo::ID = 0;
|
||||
|
||||
namespace llvm {
|
||||
FunctionPass *createFunctionTargetTransformInfoPass() {
|
||||
return new FunctionTargetTransformInfo();
|
||||
}
|
||||
}
|
||||
|
||||
FunctionTargetTransformInfo::FunctionTargetTransformInfo()
|
||||
: FunctionPass(ID), Fn(nullptr), TTI(nullptr) {
|
||||
initializeFunctionTargetTransformInfoPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
void FunctionTargetTransformInfo::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.setPreservesAll();
|
||||
AU.addRequired<TargetTransformInfoWrapperPass>();
|
||||
}
|
||||
|
||||
void FunctionTargetTransformInfo::releaseMemory() {}
|
||||
|
||||
bool FunctionTargetTransformInfo::runOnFunction(Function &F) {
|
||||
Fn = &F;
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
return false;
|
||||
}
|
@ -15,7 +15,6 @@
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Analysis/AssumptionCache.h"
|
||||
#include "llvm/Analysis/CodeMetrics.h"
|
||||
#include "llvm/Analysis/FunctionTargetTransformInfo.h"
|
||||
#include "llvm/Analysis/LoopPass.h"
|
||||
#include "llvm/Analysis/ScalarEvolution.h"
|
||||
#include "llvm/Analysis/TargetTransformInfo.h"
|
||||
@ -114,7 +113,6 @@ namespace {
|
||||
AU.addRequired<ScalarEvolution>();
|
||||
AU.addPreserved<ScalarEvolution>();
|
||||
AU.addRequired<TargetTransformInfoWrapperPass>();
|
||||
AU.addRequired<FunctionTargetTransformInfo>();
|
||||
// FIXME: Loop unroll requires LCSSA. And LCSSA requires dom info.
|
||||
// If loop unroll does not preserve dom info then LCSSA pass on next
|
||||
// loop will receive invalid dom info.
|
||||
@ -124,7 +122,7 @@ namespace {
|
||||
|
||||
// Fill in the UnrollingPreferences parameter with values from the
|
||||
// TargetTransformationInfo.
|
||||
void getUnrollingPreferences(Loop *L, const FunctionTargetTransformInfo &FTTI,
|
||||
void getUnrollingPreferences(Loop *L, const TargetTransformInfo &TTI,
|
||||
TargetTransformInfo::UnrollingPreferences &UP) {
|
||||
UP.Threshold = CurrentThreshold;
|
||||
UP.OptSizeThreshold = OptSizeUnrollThreshold;
|
||||
@ -134,7 +132,7 @@ namespace {
|
||||
UP.MaxCount = UINT_MAX;
|
||||
UP.Partial = CurrentAllowPartial;
|
||||
UP.Runtime = CurrentRuntime;
|
||||
FTTI.getUnrollingPreferences(L, UP);
|
||||
TTI.getUnrollingPreferences(L, UP);
|
||||
}
|
||||
|
||||
// Select and return an unroll count based on parameters from
|
||||
@ -187,7 +185,6 @@ char LoopUnroll::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(LoopUnroll, "loop-unroll", "Unroll loops", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
|
||||
INITIALIZE_PASS_DEPENDENCY(FunctionTargetTransformInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopSimplify)
|
||||
INITIALIZE_PASS_DEPENDENCY(LCSSA)
|
||||
@ -352,8 +349,6 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
ScalarEvolution *SE = &getAnalysis<ScalarEvolution>();
|
||||
const TargetTransformInfo &TTI =
|
||||
getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
const FunctionTargetTransformInfo &FTTI =
|
||||
getAnalysis<FunctionTargetTransformInfo>();
|
||||
auto &AC = getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
|
||||
|
||||
BasicBlock *Header = L->getHeader();
|
||||
@ -368,7 +363,7 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
bool HasPragma = PragmaFullUnroll || PragmaCount > 0;
|
||||
|
||||
TargetTransformInfo::UnrollingPreferences UP;
|
||||
getUnrollingPreferences(L, FTTI, UP);
|
||||
getUnrollingPreferences(L, TTI, UP);
|
||||
|
||||
// Find trip count and trip multiple if count is not available
|
||||
unsigned TripCount = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user