[SystemZ][NFC] Simplify SystemZSubtarget

The flags, initialization of the flags, and the getter methods for
features defined in SystemZFeatures.td can be generated by TableGen.

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D139738
This commit is contained in:
Kai Nacke 2022-12-09 15:26:17 -05:00
parent 20cd3153f3
commit 4c3357ad56
2 changed files with 9 additions and 211 deletions

View File

@ -68,27 +68,7 @@ SystemZSubtarget::SystemZSubtarget(const Triple &TT, const std::string &CPU,
const std::string &TuneCPU,
const std::string &FS,
const TargetMachine &TM)
: SystemZGenSubtargetInfo(TT, CPU, TuneCPU, FS),
HasDistinctOps(false), HasLoadStoreOnCond(false), HasHighWord(false),
HasFPExtension(false), HasPopulationCount(false),
HasMessageSecurityAssist3(false), HasMessageSecurityAssist4(false),
HasResetReferenceBitsMultiple(false), HasFastSerialization(false),
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),
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), HasVectorPackedDecimalEnhancement2(false),
HasNNPAssist(false), HasBEAREnhancement(false),
HasResetDATProtection(false), HasProcessorActivityInstrumentation(false),
HasSoftFloat(false), TargetTriple(TT),
: SystemZGenSubtargetInfo(TT, CPU, TuneCPU, FS), TargetTriple(TT),
SpecialRegisters(initializeSpecialRegisters()),
InstrInfo(initializeSubtargetDependencies(CPU, TuneCPU, FS)),
TLInfo(TM, *this), FrameLowering(SystemZFrameLowering::create(*this)) {}

View File

@ -33,47 +33,10 @@ class StringRef;
class SystemZSubtarget : public SystemZGenSubtargetInfo {
virtual void anchor();
protected:
bool HasDistinctOps;
bool HasLoadStoreOnCond;
bool HasHighWord;
bool HasFPExtension;
bool HasPopulationCount;
bool HasMessageSecurityAssist3;
bool HasMessageSecurityAssist4;
bool HasResetReferenceBitsMultiple;
bool HasFastSerialization;
bool HasInterlockedAccess1;
bool HasMiscellaneousExtensions;
bool HasExecutionHint;
bool HasLoadAndTrap;
bool HasTransactionalExecution;
bool HasProcessorAssist;
bool HasDFPZonedConversion;
bool HasEnhancedDAT2;
bool HasVector;
bool HasLoadStoreOnCond2;
bool HasLoadAndZeroRightmostByte;
bool HasMessageSecurityAssist5;
bool HasDFPPackedConversion;
bool HasMiscellaneousExtensions2;
bool HasGuardedStorage;
bool HasMessageSecurityAssist7;
bool HasMessageSecurityAssist8;
bool HasVectorEnhancements1;
bool HasVectorPackedDecimal;
bool HasInsertReferenceBitsMultiple;
bool HasMiscellaneousExtensions3;
bool HasMessageSecurityAssist9;
bool HasVectorEnhancements2;
bool HasVectorPackedDecimalEnhancement;
bool HasEnhancedSort;
bool HasDeflateConversion;
bool HasVectorPackedDecimalEnhancement2;
bool HasNNPAssist;
bool HasBEAREnhancement;
bool HasResetDATProtection;
bool HasProcessorActivityInstrumentation;
bool HasSoftFloat;
// Bool members corresponding to the SubtargetFeatures defined in tablegen.
#define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \
bool ATTRIBUTE = DEFAULT;
#include "SystemZGenSubtargetInfo.inc"
private:
Triple TargetTriple;
@ -138,155 +101,10 @@ public:
// Automatically generated by tblgen.
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);
// Return true if the target has the distinct-operands facility.
bool hasDistinctOps() const { return HasDistinctOps; }
// Return true if the target has the load/store-on-condition facility.
bool hasLoadStoreOnCond() const { return HasLoadStoreOnCond; }
// Return true if the target has the load/store-on-condition facility 2.
bool hasLoadStoreOnCond2() const { return HasLoadStoreOnCond2; }
// Return true if the target has the high-word facility.
bool hasHighWord() const { return HasHighWord; }
// Return true if the target has the floating-point extension facility.
bool hasFPExtension() const { return HasFPExtension; }
// Return true if the target has the population-count facility.
bool hasPopulationCount() const { return HasPopulationCount; }
// Return true if the target has the message-security-assist
// extension facility 3.
bool hasMessageSecurityAssist3() const { return HasMessageSecurityAssist3; }
// Return true if the target has the message-security-assist
// extension facility 4.
bool hasMessageSecurityAssist4() const { return HasMessageSecurityAssist4; }
// Return true if the target has the reset-reference-bits-multiple facility.
bool hasResetReferenceBitsMultiple() const {
return HasResetReferenceBitsMultiple;
}
// Return true if the target has the fast-serialization facility.
bool hasFastSerialization() const { return HasFastSerialization; }
// Return true if the target has interlocked-access facility 1.
bool hasInterlockedAccess1() const { return HasInterlockedAccess1; }
// Return true if the target has the miscellaneous-extensions facility.
bool hasMiscellaneousExtensions() const {
return HasMiscellaneousExtensions;
}
// Return true if the target has the execution-hint facility.
bool hasExecutionHint() const { return HasExecutionHint; }
// Return true if the target has the load-and-trap facility.
bool hasLoadAndTrap() const { return HasLoadAndTrap; }
// Return true if the target has the transactional-execution facility.
bool hasTransactionalExecution() const { return HasTransactionalExecution; }
// Return true if the target has the processor-assist facility.
bool hasProcessorAssist() const { return HasProcessorAssist; }
// Return true if the target has the DFP zoned-conversion facility.
bool hasDFPZonedConversion() const { return HasDFPZonedConversion; }
// Return true if the target has the enhanced-DAT facility 2.
bool hasEnhancedDAT2() const { return HasEnhancedDAT2; }
// Return true if the target has the load-and-zero-rightmost-byte facility.
bool hasLoadAndZeroRightmostByte() const {
return HasLoadAndZeroRightmostByte;
}
// Return true if the target has the message-security-assist
// extension facility 5.
bool hasMessageSecurityAssist5() const { return HasMessageSecurityAssist5; }
// Return true if the target has the DFP packed-conversion facility.
bool hasDFPPackedConversion() const { return HasDFPPackedConversion; }
// Return true if the target has the vector facility.
bool hasVector() const { return HasVector; }
// Return true if the target has the miscellaneous-extensions facility 2.
bool hasMiscellaneousExtensions2() const {
return HasMiscellaneousExtensions2;
}
// Return true if the target has the guarded-storage facility.
bool hasGuardedStorage() const { return HasGuardedStorage; }
// Return true if the target has the message-security-assist
// extension facility 7.
bool hasMessageSecurityAssist7() const { return HasMessageSecurityAssist7; }
// Return true if the target has the message-security-assist
// extension facility 8.
bool hasMessageSecurityAssist8() const { return HasMessageSecurityAssist8; }
// Return true if the target has the vector-enhancements facility 1.
bool hasVectorEnhancements1() const { return HasVectorEnhancements1; }
// Return true if the target has the vector-packed-decimal facility.
bool hasVectorPackedDecimal() const { return HasVectorPackedDecimal; }
// Return true if the target has the insert-reference-bits-multiple facility.
bool hasInsertReferenceBitsMultiple() const {
return HasInsertReferenceBitsMultiple;
}
// Return true if the target has the miscellaneous-extensions facility 3.
bool hasMiscellaneousExtensions3() const {
return HasMiscellaneousExtensions3;
}
// Return true if the target has the message-security-assist
// extension facility 9.
bool hasMessageSecurityAssist9() const { return HasMessageSecurityAssist9; }
// Return true if the target has the vector-enhancements facility 2.
bool hasVectorEnhancements2() const { return HasVectorEnhancements2; }
// Return true if the target has the vector-packed-decimal
// enhancement facility.
bool hasVectorPackedDecimalEnhancement() const {
return HasVectorPackedDecimalEnhancement;
}
// Return true if the target has the enhanced-sort facility.
bool hasEnhancedSort() const { return HasEnhancedSort; }
// Return true if the target has the deflate-conversion facility.
bool hasDeflateConversion() const { return HasDeflateConversion; }
// Return true if the target has the vector-packed-decimal
// enhancement facility 2.
bool hasVectorPackedDecimalEnhancement2() const {
return HasVectorPackedDecimalEnhancement2;
}
// Return true if the target has the NNP-assist facility.
bool hasNNPAssist() const { return HasNNPAssist; }
// Return true if the target has the BEAR-enhancement facility.
bool hasBEAREnhancement() const { return HasBEAREnhancement; }
// Return true if the target has the reset-DAT-protection facility.
bool hasResetDATProtection() const { return HasResetDATProtection; }
// Return true if the target has the processor-activity-instrumentation
// facility.
bool hasProcessorActivityInstrumentation() const {
return HasProcessorActivityInstrumentation;
}
// Return true if soft float should be used.
bool hasSoftFloat() const { return HasSoftFloat; }
// Getters for SubtargetFeatures defined in tablegen.
#define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \
bool GETTER() const { return ATTRIBUTE; }
#include "SystemZGenSubtargetInfo.inc"
// Return true if GV can be accessed using LARL for reloc model RM
// and code model CM.