Go to the documentation of this file.
26 #define DEBUG_TYPE "ve"
38 std::string
Ret =
"e";
59 Ret +=
"-v1024:64:64";
60 Ret +=
"-v2048:64:64";
61 Ret +=
"-v4096:64:64";
62 Ret +=
"-v8192:64:64";
63 Ret +=
"-v16384:64:64";
76 InitializeELF(
TM.Options.UseInitArray);
81 static std::unique_ptr<TargetLoweringObjectFile>
createTLOF() {
82 return std::make_unique<VEELFTargetObjectFile>();
89 std::optional<Reloc::Model>
RM,
90 std::optional<CodeModel::Model> CM,
110 return VEMachineFunctionInfo::create<VEMachineFunctionInfo>(
Allocator,
F,
122 return getTM<VETargetMachine>();
125 void addIRPasses()
override;
126 bool addInstSelector()
override;
127 void addPreEmitPass()
override;
132 return new VEPassConfig(*
this, PM);
135 void VEPassConfig::addIRPasses() {
141 bool VEPassConfig::addInstSelector() {
146 void VEPassConfig::addPreEmitPass() {
MachineFunctionInfo * createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override
Create the target's instance of MachineFunctionInfo.
This is an optimization pass for GlobalISel generic memory operations.
std::unique_ptr< const MCSubtargetInfo > STI
Context object for machine code objects.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
void initializeVEDAGToDAGISelPass(PassRegistry &)
Target & getTheVETarget()
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
FunctionPass * createAtomicExpandPass()
AtomicExpandPass - At IR level this pass replace atomic instructions with __atomic_* library calls,...
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
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
Target-Independent Code Generator Pass Configuration Options.
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeVETarget()
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.
FunctionPass * createLVLGenPass()
virtual void addIRPasses()
Add common target configurable passes that perform LLVM IR to IR transforms following machine indepen...
Primary interface to the complete machine description for the target machine.
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
TargetTransformInfo getTargetTransformInfo(const Function &F) const override
Get a TargetTransformInfo implementation for the target.
FunctionPass * createVEISelDag(VETargetMachine &TM)
createVEISelDag - This pass converts a legalized DAG into a VE-specific DAG, ready for instruction sc...
TargetSubtargetInfo - Generic base class for all target subtargets.
~VETargetMachine() override
void Initialize(MCContext &Ctx, const TargetMachine &TM) override
This method must be called before any actual lowering is done.
This class describes a target machine that is implemented with the LLVM target-independent code gener...
TargetPassConfig * createPassConfig(PassManagerBase &PM) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
static std::string computeDataLayout(const Triple &T)
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.
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
VETargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CM, CodeGenOpt::Level OL, bool JIT)
Create an Aurora VE architecture model.
static std::unique_ptr< TargetLoweringObjectFile > createTLOF()