18#define DEBUG_TYPE "aarch64-post-coalescer-pass"
35 return "AArch64 Post Coalescer pass";
45char AArch64PostCoalescer::ID = 0;
50 "AArch64 Post Coalescer Pass",
false,
false)
56 if (skipFunction(MF.getFunction()))
63 MRI = &MF.getRegInfo();
64 LIS = &getAnalysis<LiveIntervalsWrapperPass>().getLIS();
69 switch (
MI.getOpcode()) {
72 case AArch64::COALESCER_BARRIER_FPR16:
73 case AArch64::COALESCER_BARRIER_FPR32:
74 case AArch64::COALESCER_BARRIER_FPR64:
75 case AArch64::COALESCER_BARRIER_FPR128: {
79 MRI->replaceRegWith(Dst, Src);
83 LIS->RemoveMachineInstrFromMaps(
MI);
86 LIS->removeInterval(Src);
87 LIS->createAndComputeVirtRegInterval(Src);
100 return new AArch64PostCoalescer();
unsigned const MachineRegisterInfo * MRI
aarch64 post coalescer pass
#define INITIALIZE_PASS_DEPENDENCY(depName)
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
register Register Coalescer
AArch64FunctionInfo - This class is derived from MachineFunctionInfo and contains private AArch64-spe...
bool hasStreamingModeChanges() const
Represent the analysis usage information of a pass.
AnalysisUsage & addRequired()
void setPreservesAll()
Set by analyses that do not transform their input at all.
FunctionPass class - This class is used to implement most global optimizations.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
virtual bool runOnMachineFunction(MachineFunction &MF)=0
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
Representation of each machine instruction.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
Pass interface - Implemented by all 'passes'.
virtual StringRef getPassName() const
getPassName - Return a nice clean name for a pass.
Wrapper class representing virtual and physical registers.
StringRef - Represent a constant reference to a string, i.e.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
void initializeAArch64PostCoalescerPass(PassRegistry &)
FunctionPass * createAArch64PostCoalescerPass()
iterator_range< early_inc_iterator_impl< detail::IterOfRange< RangeT > > > make_early_inc_range(RangeT &&Range)
Make a range that does early increment to allow mutation of the underlying range without disrupting i...