Go to the documentation of this file.
28 "Machine Cycle Info Analysis",
true,
true)
46 OS <<
"MachineCycleInfo for function: " << F->
getName() <<
"\n";
63 "Print Machine Cycle Info Analysis",
true,
true)
75 auto &CI = getAnalysis<MachineCycleInfoWrapperPass>();
107 !
TII->isIgnorableUse(MO))
111 }
else if (!MO.isDead()) {
116 return Block->isLiveIn(Reg);
bool runOnMachineFunction(MachineFunction &F) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
This is an optimization pass for GlobalISel generic memory operations.
MachineCycleInfo::CycleT MachineCycle
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
void initializeMachineCycleInfoWrapperPassPass(PassRegistry &)
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
Reg
All possible values of the reg field in the ModR/M byte.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
raw_fd_ostream & errs()
This returns a reference to a raw_ostream for standard error.
MachineCycleInfoWrapperPass()
unsigned const TargetRegisterInfo * TRI
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
MachineRegisterInfo & getRegInfo()
getRegInfo - Return information about the registers currently in use.
TargetInstrInfo - Interface to description of machine instruction set.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
static bool isPhysicalRegister(unsigned Reg)
Return true if the specified register number is in the physical register namespace.
Represent the analysis usage information of a pass.
bool isCycleInvariant(const MachineCycle *Cycle, MachineInstr &I)
const HexagonInstrInfo * TII
MachineOperand class - Representation of each machine instruction operand.
A possibly irreducible generalization of a Loop.
This class implements an extremely fast bulk output stream that can only output to a stream.
Analysis containing CSE Info
MachineInstr * getVRegDef(Register Reg) const
getVRegDef - Return the machine instr that defines the specified virtual register or null if none is ...
virtual bool isCallerPreservedPhysReg(MCRegister PhysReg, const MachineFunction &MF) const
Physical registers that may be modified within a function but are guaranteed to be restored before an...
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
bool runOnMachineFunction(MachineFunction &F) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
void compute(FunctionT &F)
Compute the cycle info for a function.
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
Representation of each machine instruction.
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
const SmallVectorImpl< BlockT * > & getEntries() const
StringRef getName() const
getName - Return the name of the corresponding LLVM function.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
void print(raw_ostream &OS, const Module *M=nullptr) const override
print - Print out the internal state of the pass.
A Module instance is used to store all the information related to an LLVM module.
Cycle information for a function.
bool any_of(R &&range, UnaryPredicate P)
Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly.
MachineCycleInfoPrinterPass()
const MachineBasicBlock * getParent() const
TargetSubtargetInfo - Generic base class for all target subtargets.
unsigned const MachineRegisterInfo * MRI
Wrapper class representing virtual and physical registers.
bool isConstantPhysReg(MCRegister PhysReg) const
Returns true if PhysReg is unallocatable and constant throughout the function.
void print(raw_ostream &Out) const
Print the cycle info.
void clear()
Reset the object to its initial state.
Legacy analysis pass which computes a MachineCycleInfo.
COFF::MachineTypes Machine
void initializeMachineCycleInfoPrinterPassPass(PassRegistry &)
machine Machine Cycle Info true
bool contains(const BlockT *Block) const
Return whether Block is contained in the cycle.
INITIALIZE_PASS_BEGIN(MachineCycleInfoWrapperPass, "machine-cycles", "Machine Cycle Info Analysis", true, true) INITIALIZE_PASS_END(MachineCycleInfoWrapperPass