Index: llvm/trunk/lib/Target/AMDGPU/AMDGPU.h =================================================================== --- llvm/trunk/lib/Target/AMDGPU/AMDGPU.h +++ llvm/trunk/lib/Target/AMDGPU/AMDGPU.h @@ -49,7 +49,7 @@ FunctionPass *createSIFixSGPRCopiesPass(); FunctionPass *createSIFixSGPRLiveRangesPass(); FunctionPass *createSICodeEmitterPass(formatted_raw_ostream &OS); -FunctionPass *createSIInsertWaits(TargetMachine &tm); +FunctionPass *createSIInsertWaitsPass(); ScheduleDAGInstrs *createSIMachineScheduler(MachineSchedContext *C); @@ -92,6 +92,9 @@ void initializeSIAnnotateControlFlowPass(PassRegistry&); extern char &SIAnnotateControlFlowPassID; +void initializeSIInsertWaitsPass(PassRegistry&); +extern char &SIInsertWaitsID; + extern Target TheAMDGPUTarget; extern Target TheGCNTarget; Index: llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp =================================================================== --- llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -54,6 +54,7 @@ initializeAMDGPUAnnotateUniformValuesPass(*PR); initializeAMDGPUPromoteAllocaPass(*PR); initializeSIAnnotateControlFlowPass(*PR); + initializeSIInsertWaitsPass(*PR); } static std::unique_ptr createTLOF(const Triple &TT) { @@ -360,7 +361,7 @@ } void GCNPassConfig::addPreEmitPass() { - addPass(createSIInsertWaits(*TM), false); + addPass(createSIInsertWaitsPass(), false); addPass(createSILowerControlFlowPass(*TM), false); } Index: llvm/trunk/lib/Target/AMDGPU/SIInsertWaits.cpp =================================================================== --- llvm/trunk/lib/Target/AMDGPU/SIInsertWaits.cpp +++ llvm/trunk/lib/Target/AMDGPU/SIInsertWaits.cpp @@ -26,6 +26,8 @@ #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineRegisterInfo.h" +#define DEBUG_TYPE "si-insert-waits" + using namespace llvm; namespace { @@ -53,7 +55,6 @@ class SIInsertWaits : public MachineFunctionPass { private: - static char ID; const SIInstrInfo *TII; const SIRegisterInfo *TRI; const MachineRegisterInfo *MRI; @@ -116,7 +117,9 @@ void handleSendMsg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I); public: - SIInsertWaits(TargetMachine &tm) : + static char ID; + + SIInsertWaits() : MachineFunctionPass(ID), TII(nullptr), TRI(nullptr), @@ -136,14 +139,22 @@ } // End anonymous namespace +INITIALIZE_PASS_BEGIN(SIInsertWaits, DEBUG_TYPE, + "SI Insert Waits", false, false) +INITIALIZE_PASS_END(SIInsertWaits, DEBUG_TYPE, + "SI Insert Waits", false, false) + char SIInsertWaits::ID = 0; +char &llvm::SIInsertWaitsID = SIInsertWaits::ID; + +FunctionPass *llvm::createSIInsertWaitsPass() { + return new SIInsertWaits(); +} + const Counters SIInsertWaits::WaitCounts = { { 15, 7, 15 } }; const Counters SIInsertWaits::ZeroCounts = { { 0, 0, 0 } }; -FunctionPass *llvm::createSIInsertWaits(TargetMachine &tm) { - return new SIInsertWaits(tm); -} Counters SIInsertWaits::getHwCounts(MachineInstr &MI) { uint64_t TSFlags = MI.getDesc().TSFlags;