42 bool VectorABI =
true;
43 if (CPU.
empty() || CPU ==
"generic" ||
44 CPU ==
"z10" || CPU ==
"z196" || CPU ==
"zEC12")
48 FS.
split(Features,
',', -1,
false );
49 for (
auto &Feature : Features) {
50 if (Feature ==
"vector" || Feature ==
"+vector")
52 if (Feature ==
"-vector")
73 Ret +=
"-i1:8:16-i8:8:16";
158 Subtarget(TT, CPU, FS, *this) {
173 return getTM<SystemZTargetMachine>();
179 llvm::make_unique<SystemZPostRASchedStrategy>(C),
183 void addIRPasses()
override;
184 bool addInstSelector()
override;
185 bool addILPOpts()
override;
186 void addPreSched2()
override;
187 void addPreEmitPass()
override;
192 void SystemZPassConfig::addIRPasses() {
201 bool SystemZPassConfig::addInstSelector() {
210 bool SystemZPassConfig::addILPOpts() {
215 void SystemZPassConfig::addPreSched2() {
222 void SystemZPassConfig::addPreEmitPass() {
264 return new SystemZPassConfig(*
this, PM);
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
LLVM_ATTRIBUTE_NORETURN void report_fatal_error(Error Err, bool gen_crash_diag=true)
Report a serious error, calling any installed error handler.
This class represents lattice values for constants.
virtual void addIRPasses()
Add common target configurable passes that perform LLVM IR to IR transforms following machine indepen...
const FeatureBitset Features
char & EarlyIfConverterID
EarlyIfConverter - This pass performs if-conversion on SSA form by inserting cmov instructions...
std::enable_if<!std::is_array< T >::value, std::unique_ptr< T > >::type make_unique(Args &&... args)
Constructs a new T() with the given args and returns a unique_ptr<T> which owns the object...
ScheduleDAGMI is an implementation of ScheduleDAGInstrs that simply schedules machine instructions ac...
static const char * getManglingComponent(const Triple &T)
~SystemZTargetMachine() override
FunctionPass * createLoopDataPrefetchPass()
FunctionPass * createSystemZTDCPass()
FunctionPass * createSystemZISelDag(SystemZTargetMachine &TM, CodeGenOpt::Level OptLevel)
static std::string computeDataLayout(const Triple &TT, StringRef CPU, StringRef FS)
Target-Independent Code Generator Pass Configuration Options.
RegisterTargetMachine - Helper template for registering a target machine implementation, for use in the target machine initialization function.
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE bool empty() const
empty - Check if the string is empty.
FunctionPass * createSystemZShortenInstPass(SystemZTargetMachine &TM)
static CodeModel::Model getEffectiveSystemZCodeModel(Optional< CodeModel::Model > CM, Reloc::Model RM, bool JIT)
CodeGenOpt::Level getOptLevel() const
Returns the optimization level: None, Less, Default, or Aggressive.
static Reloc::Model getEffectiveRelocModel(Optional< Reloc::Model > RM)
static bool UsesVectorABI(StringRef CPU, StringRef FS)
TargetPassConfig * createPassConfig(PassManagerBase &PM) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
This class describes a target machine that is implemented with the LLVM target-independent code gener...
Triple - Helper class for working with autoconf configuration names.
SystemZTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Optional< Reloc::Model > RM, Optional< CodeModel::Model > CM, CodeGenOpt::Level OL, bool JIT)
FunctionPass * createSystemZExpandPseudoPass(SystemZTargetMachine &TM)
PassManagerBase - An abstract interface to allow code to add passes to a pass manager without having ...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
TargetTransformInfo getTargetTransformInfo(const Function &F) override
Get a TargetTransformInfo implementation for the target.
LLVM_NODISCARD std::pair< StringRef, StringRef > split(char Separator) const
Split into two substrings around the first occurrence of a separator character.
FunctionPass * createSystemZLongBranchPass(SystemZTargetMachine &TM)
void LLVMInitializeSystemZTarget()
Target - Wrapper for Target specific information.
Target & getTheSystemZTarget()
A ScheduleDAG for scheduling lists of MachineInstr.
FunctionPass * createSystemZLDCleanupPass(SystemZTargetMachine &TM)
char & PostMachineSchedulerID
PostMachineScheduler - This pass schedules machine instructions postRA.
char & IfConverterID
IfConverter - This pass performs machine code if conversion.
MachineSchedContext provides enough context from the MachineScheduler pass for the target to instanti...
FunctionPass * createSystemZElimComparePass(SystemZTargetMachine &TM)
StringRef - Represent a constant reference to a string, i.e.