24 #define DEBUG_TYPE "aarch64-prelegalizer-combiner" 27 using namespace MIPatternMatch;
30 class AArch64PreLegalizerCombinerInfo :
public CombinerInfo {
32 AArch64PreLegalizerCombinerInfo()
47 case TargetOpcode::G_LOAD:
48 case TargetOpcode::G_SEXTLOAD:
49 case TargetOpcode::G_ZEXTLOAD:
63 AArch64PreLegalizerCombiner();
65 StringRef getPassName()
const override {
return "AArch64PreLegalizerCombiner"; }
73 void AArch64PreLegalizerCombiner::getAnalysisUsage(
AnalysisUsage &AU)
const {
84 bool AArch64PreLegalizerCombiner::runOnMachineFunction(
MachineFunction &MF) {
88 auto *TPC = &getAnalysis<TargetPassConfig>();
89 AArch64PreLegalizerCombinerInfo PCInfo;
96 "Combine AArch64 machine instrs before legalization",
106 return new AArch64PreLegalizerCombiner();
Combine AArch64 machine instrs before legalization
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
This class represents lattice values for constants.
void getSelectionDAGFallbackAnalysisUsage(AnalysisUsage &AU)
Modify analysis usage so it preserves passes required for the SelectionDAG fallback.
const MachineFunctionProperties & getProperties() const
Get the function properties.
AnalysisUsage & addRequired()
#define INITIALIZE_PASS_DEPENDENCY(depName)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
unsigned getOpcode() const
Returns the opcode of this MachineInstr.
Target-Independent Code Generator Pass Configuration Options.
Abstract class that contains various methods for clients to notify about changes. ...
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
Helper class to build MachineInstr.
Represent the analysis usage information of a pass.
bool tryCombineExtendingLoads(MachineInstr &MI)
If MI is extend that consumes the result of a load, try to combine it.
FunctionPass class - This class is used to implement most global optimizations.
bool combineMachineInstrs(MachineFunction &MF, GISelCSEInfo *CSEInfo)
If CSEInfo is not null, then the Combiner will setup observer for CSEInfo and instantiate a CSEMIRBui...
INITIALIZE_PASS_END(RegBankSelect, DEBUG_TYPE, "Assign register bank of generic virtual registers", false, false) RegBankSelect
INITIALIZE_PASS_BEGIN(AArch64PreLegalizerCombiner, DEBUG_TYPE, "Combine AArch64 machine instrs before legalization", false, false) INITIALIZE_PASS_END(AArch64PreLegalizerCombiner
void setPreservesCFG()
This function should be called by the pass, iff they do not:
void initializeAArch64PreLegalizerCombinerPass(PassRegistry &)
Representation of each machine instruction.
FunctionPass * createAArch64PreLegalizeCombiner()
bool hasProperty(Property P) const
StringRef - Represent a constant reference to a string, i.e.