Go to the documentation of this file.
81 return LanaiMachineFunctionInfo::create<LanaiMachineFunctionInfo>(
Allocator,
93 return getTM<LanaiTargetMachine>();
96 bool addInstSelector()
override;
97 void addPreSched2()
override;
98 void addPreEmitPass()
override;
108 bool LanaiPassConfig::addInstSelector() {
115 void LanaiPassConfig::addPreEmitPass() {
121 void LanaiPassConfig::addPreSched2() {
FunctionPass * createLanaiDelaySlotFillerPass(const LanaiTargetMachine &TM)
This is an optimization pass for GlobalISel generic memory operations.
TargetPassConfig * createPassConfig(PassManagerBase &pass_manager) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
std::unique_ptr< const MCSubtargetInfo > STI
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
static std::string computeDataLayout()
Common register allocation spilling lr str ldr sxth r3 ldr mla r4 can lr mov lr str ldr sxth r3 mla r4 and then merge mul and lr str ldr sxth r3 mla r4 It also increase the likelihood the store may become dead bb27 Successors according to LLVM ID Predecessors according to mbb< bb27, 0x8b0a7c0 > Note ADDri is not a two address instruction its result reg1037 is an operand of the PHI node in bb76 and its operand reg1039 is the result of the PHI node We should treat it as a two address code and make sure the ADDri is scheduled after any node that reads reg1039 Use info(i.e. register scavenger) to assign it a free register to allow reuse the collector could move the objects and invalidate the derived pointer This is bad enough in the first but safe points can crop up unpredictably **array_addr i32 n y store obj * new
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiTarget()
Target & getTheLanaiTarget()
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
void initializeLanaiDAGToDAGISelPass(PassRegistry &)
RegisterTargetMachine - Helper template for registering a target machine implementation,...
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
const char LLVMTargetMachineRef LLVMPassBuilderOptionsRef Options
TargetTransformInfo getTargetTransformInfo(const Function &F) const override
Get a TargetTransformInfo implementation for the target.
Target-Independent Code Generator Pass Configuration Options.
FunctionPass * createLanaiMemAluCombinerPass()
CodeModel::Model getEffectiveCodeModel(std::optional< CodeModel::Model > CM, CodeModel::Model Default)
Helper method for getting the code model, returning Default if CM does not have a value.
#define LLVM_EXTERNAL_VISIBILITY
Allocate memory in an ever growing pool, as if by bump-pointer.
MachineFunctionInfo * createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override
Create the target's instance of MachineFunctionInfo.
static Reloc::Model getEffectiveRelocModel(std::optional< Reloc::Model > RM)
StringRef - Represent a constant reference to a string, i.e.
Analysis the ScalarEvolution expression for r is this
void initializeLanaiMemAluCombinerPass(PassRegistry &)
FunctionPass * createLanaiISelDag(LanaiTargetMachine &TM)
TargetSubtargetInfo - Generic base class for all target subtargets.
Manages a sequence of passes over a particular unit of IR.
This class describes a target machine that is implemented with the LLVM target-independent code gener...
PassManagerBase - An abstract interface to allow code to add passes to a pass manager without having ...
const char LLVMTargetMachineRef TM
Level
Code generation optimization level.
LanaiTargetMachine(const Target &TheTarget, const Triple &TargetTriple, StringRef Cpu, StringRef FeatureString, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CodeModel, CodeGenOpt::Level OptLevel, bool JIT)
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
CodeModel::Model getCodeModel()