60 Subtarget(TT, CPU, FS),
61 Layout(Subtarget.getDataLayout()),
66 InstrItins(&Subtarget.getInstrItineraryData()) {
88 return getTM<AMDGPUTargetMachine>();
99 virtual bool addPreISel();
100 virtual bool addInstSelector();
101 virtual bool addPreRegAlloc();
102 virtual bool addPostRegAlloc();
103 virtual bool addPreSched2();
104 virtual bool addPreEmitPass();
109 return new AMDGPUPassConfig(
this, PM);
125 AMDGPUPassConfig::addPreISel() {
140 bool AMDGPUPassConfig::addInstSelector() {
145 bool AMDGPUPassConfig::addPreRegAlloc() {
157 bool AMDGPUPassConfig::addPostRegAlloc() {
166 bool AMDGPUPassConfig::addPreSched2() {
178 bool AMDGPUPassConfig::addPreEmitPass() {
FunctionPass * createSIAnnotateControlFlowPass()
Create the annotation pass.
Interface definition for R600InstrInfo.
ImmutablePass * createAMDGPUTargetTransformInfoPass(const AMDGPUTargetMachine *TM)
Creates an AMDGPU-specific Target Transformation Info pass.
ImmutablePass * createBasicTargetTransformInfoPass(const TargetMachine *TM)
Create a basic TargetTransformInfo analysis pass.
enum Generation getGeneration() const
bool isIfCvtEnabled() const
FunctionPass * createAMDGPUCFGStructurizerPass(TargetMachine &tm)
R600 Machine Scheduler interface.
FunctionPass * createSIInsertWaits(TargetMachine &tm)
Target TheAMDGPUTarget
The target for the AMDGPU backend.
AMDGPUTargetMachine(const Target &T, StringRef TT, StringRef FS, StringRef CPU, TargetOptions Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
FunctionPass * createR600TextureIntrinsicsReplacer()
FunctionPass * createR600ExpandSpecialInstrsPass(TargetMachine &tm)
FunctionPass * createSinkingPass()
char & FinalizeMachineBundlesID
FunctionPass * createR600VectorRegMerger(TargetMachine &tm)
void LLVMInitializeR600Target()
FunctionPass * createSITypeRewriter()
FunctionPass * createR600ClauseMergePass(TargetMachine &tm)
FunctionPass * createSILowerControlFlowPass(TargetMachine &tm)
FunctionPass * createR600ControlFlowFinalizer(TargetMachine &tm)
FunctionPass * createSIFixSGPRCopiesPass(TargetMachine &tm)
FunctionPass * createFlattenCFGPass()
FunctionPass * createAMDGPUISelDag(TargetMachine &tm)
This pass converts a legalized DAG into a AMDGPU-specific.
FunctionPass * createR600EmitClauseMarkers(TargetMachine &tm)
SI DAG Lowering interface definition.
FunctionPass * createR600Packetizer(TargetMachine &tm)
The AMDGPU TargetMachine interface definition for hw codgen targets.
static ScheduleDAGInstrs * createR600MachineScheduler(MachineSchedContext *C)
virtual void addAnalysisPasses(PassManagerBase &PM)
Register R600 analysis passes with a pass manager.
Interface definition for SIInstrInfo.
bool IsIRStructurizerEnabled() const
R600 DAG Lowering interface definition.
virtual TargetPassConfig * createPassConfig(PassManagerBase &PM)
char & IfConverterID
IfConverter - This pass performs machine code if conversion.
static MachineSchedRegistry SchedCustomRegistry("r600","Run R600's custom scheduler", createR600MachineScheduler)
Pass * createStructurizeCFGPass()
Create the pass.
FunctionPass * createAMDGPUConvertToISAPass(TargetMachine &tm)
static RegisterPass< NVPTXAllocaHoisting > X("alloca-hoisting","Hoisting alloca instructions in non-entry ""blocks to the entry block")