diff options
Diffstat (limited to 'llvm/lib/Target/SystemZ/SystemZSubtarget.cpp')
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZSubtarget.cpp | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp index d24e264b03a5..bfcdee270f29 100644 --- a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp +++ b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp @@ -45,11 +45,24 @@ SystemZSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) { HasVectorEnhancements2 = false; HasVectorPackedDecimal = false; HasVectorPackedDecimalEnhancement = false; + HasVectorPackedDecimalEnhancement2 = false; } return *this; } +SystemZCallingConventionRegisters * +SystemZSubtarget::initializeSpecialRegisters() { + if (isTargetXPLINK64()) + return new SystemZXPLINK64Registers; + else if (isTargetELF()) + return new SystemZELFRegisters; + else { + llvm_unreachable("Invalid Calling Convention. Cannot initialize Special " + "Call Registers!"); + } +} + SystemZSubtarget::SystemZSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS, const TargetMachine &TM) @@ -61,20 +74,24 @@ SystemZSubtarget::SystemZSubtarget(const Triple &TT, const std::string &CPU, HasInterlockedAccess1(false), HasMiscellaneousExtensions(false), HasExecutionHint(false), HasLoadAndTrap(false), HasTransactionalExecution(false), HasProcessorAssist(false), - HasDFPZonedConversion(false), HasEnhancedDAT2(false), - HasVector(false), HasLoadStoreOnCond2(false), - HasLoadAndZeroRightmostByte(false), HasMessageSecurityAssist5(false), - HasDFPPackedConversion(false), + HasDFPZonedConversion(false), HasEnhancedDAT2(false), HasVector(false), + HasLoadStoreOnCond2(false), HasLoadAndZeroRightmostByte(false), + HasMessageSecurityAssist5(false), HasDFPPackedConversion(false), HasMiscellaneousExtensions2(false), HasGuardedStorage(false), HasMessageSecurityAssist7(false), HasMessageSecurityAssist8(false), HasVectorEnhancements1(false), HasVectorPackedDecimal(false), - HasInsertReferenceBitsMultiple(false), - HasMiscellaneousExtensions3(false), HasMessageSecurityAssist9(false), - HasVectorEnhancements2(false), HasVectorPackedDecimalEnhancement(false), - HasEnhancedSort(false), HasDeflateConversion(false), HasSoftFloat(false), - TargetTriple(TT), InstrInfo(initializeSubtargetDependencies(CPU, FS)), - TLInfo(TM, *this), TSInfo(), FrameLowering() {} + HasInsertReferenceBitsMultiple(false), HasMiscellaneousExtensions3(false), + HasMessageSecurityAssist9(false), HasVectorEnhancements2(false), + HasVectorPackedDecimalEnhancement(false), HasEnhancedSort(false), + HasDeflateConversion(false), HasVectorPackedDecimalEnhancement2(false), + HasNNPAssist(false), HasBEAREnhancement(false), + HasResetDATProtection(false), HasProcessorActivityInstrumentation(false), + HasSoftFloat(false), TargetTriple(TT), + SpecialRegisters(initializeSpecialRegisters()), + InstrInfo(initializeSubtargetDependencies(CPU, FS)), TLInfo(TM, *this), + TSInfo(), FrameLowering() {} +SystemZSubtarget::~SystemZSubtarget() { delete getSpecialRegisters(); } bool SystemZSubtarget::enableSubRegLiveness() const { return UseSubRegLiveness; |
