Go to the documentation of this file.
59 Ret +=
"-i1:8:16-i8:8:16";
82 return std::make_unique<TargetLoweringObjectFileGOFF>();
86 return std::make_unique<TargetLoweringObjectFileELF>();
144 std::optional<Reloc::Model>
RM,
145 std::optional<CodeModel::Model> CM,
160 Attribute CPUAttr =
F.getFnAttribute(
"target-cpu");
161 Attribute TuneAttr =
F.getFnAttribute(
"tune-cpu");
162 Attribute FSAttr =
F.getFnAttribute(
"target-features");
166 std::string TuneCPU =
174 bool softFloat =
F.getFnAttribute(
"use-soft-float").getValueAsBool();
177 FS +=
FS.empty() ?
"+soft-float" :
",+soft-float";
179 auto &
I = SubtargetMap[CPU + TuneCPU +
FS];
201 return getTM<SystemZTargetMachine>();
207 std::make_unique<SystemZPostRASchedStrategy>(
C),
211 void addIRPasses()
override;
212 bool addInstSelector()
override;
213 bool addILPOpts()
override;
214 void addPreRegAlloc()
override;
215 void addPostRewrite()
override;
216 void addPostRegAlloc()
override;
217 void addPreSched2()
override;
218 void addPreEmitPass()
override;
223 void SystemZPassConfig::addIRPasses() {
232 bool SystemZPassConfig::addInstSelector() {
241 bool SystemZPassConfig::addILPOpts() {
246 void SystemZPassConfig::addPreRegAlloc() {
250 void SystemZPassConfig::addPostRewrite() {
254 void SystemZPassConfig::addPostRegAlloc() {
261 void SystemZPassConfig::addPreSched2() {
266 void SystemZPassConfig::addPreEmitPass() {
308 return new SystemZPassConfig(*
this, PM);
319 return SystemZMachineFunctionInfo::create<SystemZMachineFunctionInfo>(
void initializeSystemZLDCleanupPass(PassRegistry &)
FunctionPass * createSystemZLongBranchPass(SystemZTargetMachine &TM)
This is an optimization pass for GlobalISel generic memory operations.
bool isValid() const
Return true if the attribute is any kind of attribute.
std::unique_ptr< const MCSubtargetInfo > STI
Target - Wrapper for Target specific information.
FunctionPass * createSystemZISelDag(SystemZTargetMachine &TM, CodeGenOpt::Level OptLevel)
Triple - Helper class for working with autoconf configuration names.
TargetTransformInfo getTargetTransformInfo(const Function &F) const override
Get a TargetTransformInfo implementation for the target.
void initializeSystemZPostRewritePass(PassRegistry &)
static const char * getManglingComponent(const Triple &T)
~SystemZTargetMachine() override
static std::string computeDataLayout(const Triple &TT)
MachineFunctionInfo * createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override
Create the target's instance of MachineFunctionInfo.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
void initializeSystemZLongBranchPass(PassRegistry &)
void initializeSystemZDAGToDAGISelPass(PassRegistry &)
Target & getTheSystemZTarget()
(vector float) vec_cmpeq(*A, *B) C
char & EarlyIfConverterID
EarlyIfConverter - This pass performs if-conversion on SSA form by inserting cmov instructions.
FunctionPass * createSystemZShortenInstPass(SystemZTargetMachine &TM)
RegisterTargetMachine - Helper template for registering a target machine implementation,...
void report_fatal_error(Error Err, bool gen_crash_diag=true)
Report a serious error, calling any installed error handler.
const char LLVMTargetMachineRef LLVMPassBuilderOptionsRef Options
StringRef getValueAsString() const
Return the attribute's value as a string.
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
void resetTargetOptions(const Function &F) const
Reset the target options based on the function's attributes.
Target-Independent Code Generator Pass Configuration Options.
Triple TargetTriple
Triple string, CPU name, and target feature strings the TargetMachine instance is created with.
static std::unique_ptr< TargetLoweringObjectFile > createTLOF(const Triple &TT)
#define LLVM_EXTERNAL_VISIBILITY
FunctionPass * createSystemZElimComparePass(SystemZTargetMachine &TM)
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSystemZTarget()
Allocate memory in an ever growing pool, as if by bump-pointer.
MachineSchedContext provides enough context from the MachineScheduler pass for the target to instanti...
virtual void addIRPasses()
Add common target configurable passes that perform LLVM IR to IR transforms following machine indepen...
const SystemZSubtarget * getSubtargetImpl() const =delete
ScheduleDAGMI is an implementation of ScheduleDAGInstrs that simply schedules machine instructions ac...
TargetPassConfig * createPassConfig(PassManagerBase &PM) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
static Reloc::Model getEffectiveRelocModel(std::optional< Reloc::Model > RM)
StringRef - Represent a constant reference to a string, i.e.
FunctionPass * createSystemZTDCPass()
TargetSubtargetInfo - Generic base class for all target subtargets.
void initializeSystemZTDCPassPass(PassRegistry &)
SystemZTargetMachine(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)
This class describes a target machine that is implemented with the LLVM target-independent code gener...
void initializeSystemZShortenInstPass(PassRegistry &)
void initializeSystemZElimComparePass(PassRegistry &)
PassManagerBase - An abstract interface to allow code to add passes to a pass manager without having ...
std::string str() const
str - Get the contents as an std::string.
const char LLVMTargetMachineRef TM
Level
Code generation optimization level.
FunctionPass * createSystemZPostRewritePass(SystemZTargetMachine &TM)
char & PostMachineSchedulerID
PostMachineScheduler - This pass schedules machine instructions postRA.
FunctionPass * createSystemZCopyPhysRegsPass(SystemZTargetMachine &TM)
A ScheduleDAG for scheduling lists of MachineInstr.
FunctionPass * createSystemZLDCleanupPass(SystemZTargetMachine &TM)
char & IfConverterID
IfConverter - This pass performs machine code if conversion.
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
static CodeModel::Model getEffectiveSystemZCodeModel(std::optional< CodeModel::Model > CM, Reloc::Model RM, bool JIT)
FunctionPass * createLoopDataPrefetchPass()