LLVM 23.0.0git
LanaiTargetMachine.h
Go to the documentation of this file.
1//===-- LanaiTargetMachine.h - Define TargetMachine for Lanai --- C++ ---===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file declares the Lanai specific subclass of TargetMachine.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
14#define LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
15
16#include "LanaiISelLowering.h"
17#include "LanaiInstrInfo.h"
19#include "LanaiSubtarget.h"
21#include <optional>
22
23namespace llvm {
24
26 LanaiSubtarget Subtarget;
27 std::unique_ptr<TargetLoweringObjectFile> TLOF;
28
29public:
31 StringRef Cpu, StringRef FeatureString,
33 std::optional<Reloc::Model> RM,
34 std::optional<CodeModel::Model> CodeModel,
35 CodeGenOptLevel OptLevel, bool JIT);
36
37 const LanaiSubtarget *
38 getSubtargetImpl(const llvm::Function & /*Fn*/) const override {
39 return &Subtarget;
40 }
41
43
44 // Pass Pipeline Configuration
45 TargetPassConfig *createPassConfig(PassManagerBase &pass_manager) override;
46
48 return TLOF.get();
49 }
50
53 const TargetSubtargetInfo *STI) const override;
54
56
59 CodeGenFileType FileType,
60 const CGPassBuilderOption &Opt, MCContext &Ctx,
62};
63} // namespace llvm
64
65#endif // LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
#define F(x, y, z)
Definition MD5.cpp:54
ModuleAnalysisManager MAM
PassInstrumentationCallbacks PIC
PassBuilder PB(Machine, PassOpts->PTO, std::nullopt, &PIC)
Basic Register Allocator
CodeGenTargetMachineImpl(const Target &T, StringRef DataLayoutString, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOptLevel OL)
Lightweight error class with error context and mandatory checking.
Definition Error.h:159
TargetPassConfig * createPassConfig(PassManagerBase &pass_manager) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
TargetLoweringObjectFile * getObjFileLowering() const override
const LanaiSubtarget * getSubtargetImpl(const llvm::Function &) const override
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInf...
Error buildCodeGenPipeline(ModulePassManager &MPM, ModuleAnalysisManager &MAM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, const CGPassBuilderOption &Opt, MCContext &Ctx, PassInstrumentationCallbacks *PIC) override
void registerPassBuilderCallbacks(PassBuilder &PB) override
Allow the target to modify the pass pipeline.
LanaiTargetMachine(const Target &TheTarget, const Triple &TargetTriple, StringRef Cpu, StringRef FeatureString, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CodeModel, CodeGenOptLevel OptLevel, bool JIT)
MachineFunctionInfo * createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override
Create the target's instance of MachineFunctionInfo.
TargetTransformInfo getTargetTransformInfo(const Function &F) const override
Get a TargetTransformInfo implementation for the target.
Context object for machine code objects.
Definition MCContext.h:83
This class provides access to building LLVM's passes.
This class manages callbacks registration, as well as provides a way for PassInstrumentation to pass ...
Represent a constant reference to a string, i.e.
Definition StringRef.h:56
Triple TargetTriple
Triple string, CPU name, and target feature strings the TargetMachine instance is created with.
std::unique_ptr< const MCSubtargetInfo > STI
TargetOptions Options
const Target & TheTarget
The Target that this machine was created for.
CodeGenOptLevel OptLevel
Target-Independent Code Generator Pass Configuration Options.
TargetSubtargetInfo - Generic base class for all target subtargets.
This pass provides access to the codegen interfaces that are needed for IR-level transformations.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
Definition Triple.h:47
PassManagerBase - An abstract interface to allow code to add passes to a pass manager without having ...
An abstract base class for streams implementations that also support a pwrite operation.
This is an optimization pass for GlobalISel generic memory operations.
CodeGenFileType
These enums are meant to be passed into addPassesToEmitFile to indicate what type of file to emit,...
Definition CodeGen.h:111
PassManager< Module > ModulePassManager
Convenience typedef for a pass manager over modules.
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:82
BumpPtrAllocatorImpl<> BumpPtrAllocator
The standard BumpPtrAllocator which just uses the default template parameters.
Definition Allocator.h:390
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...