25 #define DEBUG_TYPE "si-fix-cf-live-intervals"
40 StringRef getPassName()
const override {
return "SI Fix CF Live Intervals"; }
52 "SI Fix CF Live Intervals",
false,
false)
57 char SIFixControlFlowLiveIntervals::
ID = 0;
62 return new SIFixControlFlowLiveIntervals();
65 bool SIFixControlFlowLiveIntervals::runOnMachineFunction(
MachineFunction &MF) {
70 switch (
MI.getOpcode()) {
73 case AMDGPU::SI_BREAK:
74 case AMDGPU::SI_IF_BREAK:
75 case AMDGPU::SI_ELSE_BREAK:
76 case AMDGPU::SI_END_CF: {
77 unsigned Reg =
MI.getOperand(0).getReg();
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
AnalysisUsage & addRequired()
#define INITIALIZE_PASS_DEPENDENCY(depName)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
Reg
All possible values of the reg field in the ModR/M byte.
char & SIFixControlFlowLiveIntervalsID
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
Represent the analysis usage information of a pass.
INITIALIZE_PASS_END(RegBankSelect, DEBUG_TYPE,"Assign register bank of generic virtual registers", false, false) RegBankSelect
FunctionPass class - This class is used to implement most global optimizations.
INITIALIZE_PASS_BEGIN(SIFixControlFlowLiveIntervals, DEBUG_TYPE,"SI Fix CF Live Intervals", false, false) INITIALIZE_PASS_END(SIFixControlFlowLiveIntervals
void markNotSpillable()
markNotSpillable - Mark interval as not spillable
LiveInterval & getInterval(unsigned Reg)
void setPreservesAll()
Set by analyses that do not transform their input at all.
Representation of each machine instruction.
Interface definition for SIInstrInfo.
void initializeSIFixControlFlowLiveIntervalsPass(PassRegistry &)
FunctionPass * createSIFixControlFlowLiveIntervalsPass()
StringRef - Represent a constant reference to a string, i.e.