29 bool VectorABI =
true;
30 if (CPU.
empty() || CPU ==
"generic" ||
31 CPU ==
"z10" || CPU ==
"z196" || CPU ==
"zEC12")
35 FS.
split(Features,
",", -1,
false );
36 for (
auto &Feature : Features) {
37 if (Feature ==
"vector" || Feature ==
"+vector")
39 if (Feature ==
"-vector")
60 Ret +=
"-i1:8:16-i8:8:16";
89 Subtarget(TT, CPU, FS, *this) {
103 return getTM<SystemZTargetMachine>();
106 void addIRPasses()
override;
107 bool addInstSelector()
override;
108 void addPreSched2()
override;
109 void addPreEmitPass()
override;
113 void SystemZPassConfig::addIRPasses() {
117 bool SystemZPassConfig::addInstSelector() {
126 void SystemZPassConfig::addPreSched2() {
128 getSystemZTargetMachine().getSubtargetImpl()->hasLoadStoreOnCond())
132 void SystemZPassConfig::addPreEmitPass() {
164 return new SystemZPassConfig(
this, PM);
virtual void addIRPasses()
Add common target configurable passes that perform LLVM IR to IR transforms following machine indepen...
std::pair< StringRef, StringRef > split(char Separator) const
Split into two substrings around the first occurrence of a separator character.
const FeatureBitset Features
Analysis pass providing the TargetTransformInfo.
static const char * getManglingComponent(const Triple &T)
~SystemZTargetMachine() override
TargetIRAnalysis getTargetIRAnalysis() override
Get a TargetIRAnalysis implementation for the target.
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.
FunctionPass * createSystemZShortenInstPass(SystemZTargetMachine &TM)
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...
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 ...
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang","erlang-compatible garbage collector")
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.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
FunctionPass * createSystemZLongBranchPass(SystemZTargetMachine &TM)
void LLVMInitializeSystemZTarget()
Target - Wrapper for Target specific information.
SystemZTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
FunctionPass * createSystemZLDCleanupPass(SystemZTargetMachine &TM)
char & IfConverterID
IfConverter - This pass performs machine code if conversion.
FunctionPass * createSystemZElimComparePass(SystemZTargetMachine &TM)
RegisterTargetMachine - Helper template for registering a target machine implementation, for use in the target machine initialization function.
StringRef - Represent a constant reference to a string, i.e.
bool empty() const
empty - Check if the string is empty.