xref: /freebsd/contrib/llvm-project/llvm/lib/Target/SystemZ/SystemZFeatures.td (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
10b57cec5SDimitry Andric//===-- SystemZ.td - SystemZ processors and features ---------*- tblgen -*-===//
20b57cec5SDimitry Andric//
30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric//
70b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric//
90b57cec5SDimitry Andric// Feature definitions.
100b57cec5SDimitry Andric//
110b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric
135ffd83dbSDimitry Andricclass SystemZFeature<string extname, string intname, dag featdag, string desc>
145ffd83dbSDimitry Andric  : Predicate<"Subtarget->has"#intname#"()">,
155ffd83dbSDimitry Andric    AssemblerPredicate<featdag, extname>,
165ffd83dbSDimitry Andric    SubtargetFeature<extname, "Has"#intname, "true", desc>;
170b57cec5SDimitry Andric
180b57cec5SDimitry Andricclass SystemZMissingFeature<string intname>
195ffd83dbSDimitry Andric  : Predicate<"!Subtarget->has"#intname#"()">;
200b57cec5SDimitry Andric
210b57cec5SDimitry Andricclass SystemZFeatureList<list<SystemZFeature> x> {
220b57cec5SDimitry Andric  list<SystemZFeature> List = x;
230b57cec5SDimitry Andric}
240b57cec5SDimitry Andric
250b57cec5SDimitry Andricclass SystemZFeatureAdd<list<SystemZFeature> x, list<SystemZFeature> y>
260b57cec5SDimitry Andric  : SystemZFeatureList<!listconcat(x, y)>;
270b57cec5SDimitry Andric
285ffd83dbSDimitry Andric// This feature is added as a subtarget feature whenever the function is
295ffd83dbSDimitry Andric// compiled to use soft-float.
305ffd83dbSDimitry Andricdef FeatureSoftFloat : SystemZFeature<
315ffd83dbSDimitry Andric  "soft-float", "SoftFloat", (all_of FeatureSoftFloat),
325ffd83dbSDimitry Andric  "Use software emulation for floating point"
335ffd83dbSDimitry Andric>;
345ffd83dbSDimitry Andric
35*5f757f3fSDimitry Andricdef FeatureBackChain : SystemZFeature<
36*5f757f3fSDimitry Andric  "backchain", "BackChain", (all_of FeatureBackChain),
37*5f757f3fSDimitry Andric  "Store the address of the caller's frame into the callee's stack frame"
38*5f757f3fSDimitry Andric>;
39*5f757f3fSDimitry Andric
400b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
410b57cec5SDimitry Andric//
420b57cec5SDimitry Andric// New features added in the Ninth Edition of the z/Architecture
430b57cec5SDimitry Andric//
440b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
450b57cec5SDimitry Andric
460b57cec5SDimitry Andricdef FeatureDistinctOps : SystemZFeature<
475ffd83dbSDimitry Andric  "distinct-ops", "DistinctOps", (all_of FeatureDistinctOps),
480b57cec5SDimitry Andric  "Assume that the distinct-operands facility is installed"
490b57cec5SDimitry Andric>;
500b57cec5SDimitry Andric
510b57cec5SDimitry Andricdef FeatureFastSerialization : SystemZFeature<
525ffd83dbSDimitry Andric  "fast-serialization", "FastSerialization", (all_of FeatureFastSerialization),
530b57cec5SDimitry Andric  "Assume that the fast-serialization facility is installed"
540b57cec5SDimitry Andric>;
550b57cec5SDimitry Andric
560b57cec5SDimitry Andricdef FeatureFPExtension : SystemZFeature<
575ffd83dbSDimitry Andric  "fp-extension", "FPExtension", (all_of FeatureFPExtension),
580b57cec5SDimitry Andric  "Assume that the floating-point extension facility is installed"
590b57cec5SDimitry Andric>;
600b57cec5SDimitry Andric
610b57cec5SDimitry Andricdef FeatureHighWord : SystemZFeature<
625ffd83dbSDimitry Andric  "high-word", "HighWord", (all_of FeatureHighWord),
630b57cec5SDimitry Andric  "Assume that the high-word facility is installed"
640b57cec5SDimitry Andric>;
650b57cec5SDimitry Andric
660b57cec5SDimitry Andricdef FeatureInterlockedAccess1 : SystemZFeature<
675ffd83dbSDimitry Andric  "interlocked-access1", "InterlockedAccess1", (all_of FeatureInterlockedAccess1),
680b57cec5SDimitry Andric  "Assume that interlocked-access facility 1 is installed"
690b57cec5SDimitry Andric>;
700b57cec5SDimitry Andricdef FeatureNoInterlockedAccess1 : SystemZMissingFeature<"InterlockedAccess1">;
710b57cec5SDimitry Andric
720b57cec5SDimitry Andricdef FeatureLoadStoreOnCond : SystemZFeature<
735ffd83dbSDimitry Andric  "load-store-on-cond", "LoadStoreOnCond", (all_of FeatureLoadStoreOnCond),
740b57cec5SDimitry Andric  "Assume that the load/store-on-condition facility is installed"
750b57cec5SDimitry Andric>;
760b57cec5SDimitry Andricdef FeatureNoLoadStoreOnCond : SystemZMissingFeature<"LoadStoreOnCond">;
770b57cec5SDimitry Andric
780b57cec5SDimitry Andricdef FeaturePopulationCount : SystemZFeature<
795ffd83dbSDimitry Andric  "population-count", "PopulationCount", (all_of FeaturePopulationCount),
800b57cec5SDimitry Andric  "Assume that the population-count facility is installed"
810b57cec5SDimitry Andric>;
820b57cec5SDimitry Andric
830b57cec5SDimitry Andricdef FeatureMessageSecurityAssist3 : SystemZFeature<
845ffd83dbSDimitry Andric  "message-security-assist-extension3", "MessageSecurityAssist3", (all_of FeatureMessageSecurityAssist3),
850b57cec5SDimitry Andric  "Assume that the message-security-assist extension facility 3 is installed"
860b57cec5SDimitry Andric>;
870b57cec5SDimitry Andric
880b57cec5SDimitry Andricdef FeatureMessageSecurityAssist4 : SystemZFeature<
895ffd83dbSDimitry Andric  "message-security-assist-extension4", "MessageSecurityAssist4", (all_of FeatureMessageSecurityAssist4),
900b57cec5SDimitry Andric  "Assume that the message-security-assist extension facility 4 is installed"
910b57cec5SDimitry Andric>;
920b57cec5SDimitry Andric
930b57cec5SDimitry Andricdef FeatureResetReferenceBitsMultiple : SystemZFeature<
945ffd83dbSDimitry Andric  "reset-reference-bits-multiple", "ResetReferenceBitsMultiple", (all_of FeatureResetReferenceBitsMultiple),
950b57cec5SDimitry Andric  "Assume that the reset-reference-bits-multiple facility is installed"
960b57cec5SDimitry Andric>;
970b57cec5SDimitry Andric
980b57cec5SDimitry Andricdef Arch9NewFeatures : SystemZFeatureList<[
990b57cec5SDimitry Andric    FeatureDistinctOps,
1000b57cec5SDimitry Andric    FeatureFastSerialization,
1010b57cec5SDimitry Andric    FeatureFPExtension,
1020b57cec5SDimitry Andric    FeatureHighWord,
1030b57cec5SDimitry Andric    FeatureInterlockedAccess1,
1040b57cec5SDimitry Andric    FeatureLoadStoreOnCond,
1050b57cec5SDimitry Andric    FeaturePopulationCount,
1060b57cec5SDimitry Andric    FeatureMessageSecurityAssist3,
1070b57cec5SDimitry Andric    FeatureMessageSecurityAssist4,
1080b57cec5SDimitry Andric    FeatureResetReferenceBitsMultiple
1090b57cec5SDimitry Andric]>;
1100b57cec5SDimitry Andric
1110b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
1120b57cec5SDimitry Andric//
1130b57cec5SDimitry Andric// New features added in the Tenth Edition of the z/Architecture
1140b57cec5SDimitry Andric//
1150b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
1160b57cec5SDimitry Andric
1170b57cec5SDimitry Andricdef FeatureExecutionHint : SystemZFeature<
1185ffd83dbSDimitry Andric  "execution-hint", "ExecutionHint", (all_of FeatureExecutionHint),
1190b57cec5SDimitry Andric  "Assume that the execution-hint facility is installed"
1200b57cec5SDimitry Andric>;
1210b57cec5SDimitry Andric
1220b57cec5SDimitry Andricdef FeatureLoadAndTrap : SystemZFeature<
1235ffd83dbSDimitry Andric  "load-and-trap", "LoadAndTrap", (all_of FeatureLoadAndTrap),
1240b57cec5SDimitry Andric  "Assume that the load-and-trap facility is installed"
1250b57cec5SDimitry Andric>;
1260b57cec5SDimitry Andric
1270b57cec5SDimitry Andricdef FeatureMiscellaneousExtensions : SystemZFeature<
1285ffd83dbSDimitry Andric  "miscellaneous-extensions", "MiscellaneousExtensions", (all_of FeatureMiscellaneousExtensions),
1290b57cec5SDimitry Andric  "Assume that the miscellaneous-extensions facility is installed"
1300b57cec5SDimitry Andric>;
1310b57cec5SDimitry Andric
1320b57cec5SDimitry Andricdef FeatureProcessorAssist : SystemZFeature<
1335ffd83dbSDimitry Andric  "processor-assist", "ProcessorAssist", (all_of FeatureProcessorAssist),
1340b57cec5SDimitry Andric  "Assume that the processor-assist facility is installed"
1350b57cec5SDimitry Andric>;
1360b57cec5SDimitry Andric
1370b57cec5SDimitry Andricdef FeatureTransactionalExecution : SystemZFeature<
1385ffd83dbSDimitry Andric  "transactional-execution", "TransactionalExecution", (all_of FeatureTransactionalExecution),
1390b57cec5SDimitry Andric  "Assume that the transactional-execution facility is installed"
1400b57cec5SDimitry Andric>;
1410b57cec5SDimitry Andric
1420b57cec5SDimitry Andricdef FeatureDFPZonedConversion : SystemZFeature<
1435ffd83dbSDimitry Andric  "dfp-zoned-conversion", "DFPZonedConversion", (all_of FeatureDFPZonedConversion),
1440b57cec5SDimitry Andric  "Assume that the DFP zoned-conversion facility is installed"
1450b57cec5SDimitry Andric>;
1460b57cec5SDimitry Andric
1470b57cec5SDimitry Andricdef FeatureEnhancedDAT2 : SystemZFeature<
1485ffd83dbSDimitry Andric  "enhanced-dat-2", "EnhancedDAT2", (all_of FeatureEnhancedDAT2),
1490b57cec5SDimitry Andric  "Assume that the enhanced-DAT facility 2 is installed"
1500b57cec5SDimitry Andric>;
1510b57cec5SDimitry Andric
1520b57cec5SDimitry Andricdef Arch10NewFeatures : SystemZFeatureList<[
1530b57cec5SDimitry Andric    FeatureExecutionHint,
1540b57cec5SDimitry Andric    FeatureLoadAndTrap,
1550b57cec5SDimitry Andric    FeatureMiscellaneousExtensions,
1560b57cec5SDimitry Andric    FeatureProcessorAssist,
1570b57cec5SDimitry Andric    FeatureTransactionalExecution,
1580b57cec5SDimitry Andric    FeatureDFPZonedConversion,
1590b57cec5SDimitry Andric    FeatureEnhancedDAT2
1600b57cec5SDimitry Andric]>;
1610b57cec5SDimitry Andric
1620b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
1630b57cec5SDimitry Andric//
1640b57cec5SDimitry Andric// New features added in the Eleventh Edition of the z/Architecture
1650b57cec5SDimitry Andric//
1660b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
1670b57cec5SDimitry Andric
1680b57cec5SDimitry Andricdef FeatureLoadAndZeroRightmostByte : SystemZFeature<
1695ffd83dbSDimitry Andric  "load-and-zero-rightmost-byte", "LoadAndZeroRightmostByte", (all_of FeatureLoadAndZeroRightmostByte),
1700b57cec5SDimitry Andric  "Assume that the load-and-zero-rightmost-byte facility is installed"
1710b57cec5SDimitry Andric>;
1720b57cec5SDimitry Andric
1730b57cec5SDimitry Andricdef FeatureLoadStoreOnCond2 : SystemZFeature<
1745ffd83dbSDimitry Andric  "load-store-on-cond-2", "LoadStoreOnCond2", (all_of FeatureLoadStoreOnCond2),
1750b57cec5SDimitry Andric  "Assume that the load/store-on-condition facility 2 is installed"
1760b57cec5SDimitry Andric>;
1770b57cec5SDimitry Andric
1780b57cec5SDimitry Andricdef FeatureMessageSecurityAssist5 : SystemZFeature<
1795ffd83dbSDimitry Andric  "message-security-assist-extension5", "MessageSecurityAssist5", (all_of FeatureMessageSecurityAssist5),
1800b57cec5SDimitry Andric  "Assume that the message-security-assist extension facility 5 is installed"
1810b57cec5SDimitry Andric>;
1820b57cec5SDimitry Andric
1830b57cec5SDimitry Andricdef FeatureDFPPackedConversion : SystemZFeature<
1845ffd83dbSDimitry Andric  "dfp-packed-conversion", "DFPPackedConversion", (all_of FeatureDFPPackedConversion),
1850b57cec5SDimitry Andric  "Assume that the DFP packed-conversion facility is installed"
1860b57cec5SDimitry Andric>;
1870b57cec5SDimitry Andric
1880b57cec5SDimitry Andricdef FeatureVector : SystemZFeature<
1895ffd83dbSDimitry Andric  "vector", "Vector", (all_of FeatureVector),
1900b57cec5SDimitry Andric  "Assume that the vectory facility is installed"
1910b57cec5SDimitry Andric>;
1920b57cec5SDimitry Andricdef FeatureNoVector : SystemZMissingFeature<"Vector">;
1930b57cec5SDimitry Andric
1940b57cec5SDimitry Andricdef Arch11NewFeatures : SystemZFeatureList<[
1950b57cec5SDimitry Andric    FeatureLoadAndZeroRightmostByte,
1960b57cec5SDimitry Andric    FeatureLoadStoreOnCond2,
1970b57cec5SDimitry Andric    FeatureMessageSecurityAssist5,
1980b57cec5SDimitry Andric    FeatureDFPPackedConversion,
1990b57cec5SDimitry Andric    FeatureVector
2000b57cec5SDimitry Andric]>;
2010b57cec5SDimitry Andric
2020b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
2030b57cec5SDimitry Andric//
204e8d8bef9SDimitry Andric// New features added in the Twelfth Edition of the z/Architecture
2050b57cec5SDimitry Andric//
2060b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
2070b57cec5SDimitry Andric
2080b57cec5SDimitry Andricdef FeatureMiscellaneousExtensions2 : SystemZFeature<
2095ffd83dbSDimitry Andric  "miscellaneous-extensions-2", "MiscellaneousExtensions2", (all_of FeatureMiscellaneousExtensions2),
2100b57cec5SDimitry Andric  "Assume that the miscellaneous-extensions facility 2 is installed"
2110b57cec5SDimitry Andric>;
2120b57cec5SDimitry Andric
2130b57cec5SDimitry Andricdef FeatureGuardedStorage : SystemZFeature<
2145ffd83dbSDimitry Andric  "guarded-storage", "GuardedStorage", (all_of FeatureGuardedStorage),
2150b57cec5SDimitry Andric  "Assume that the guarded-storage facility is installed"
2160b57cec5SDimitry Andric>;
2170b57cec5SDimitry Andric
2180b57cec5SDimitry Andricdef FeatureMessageSecurityAssist7 : SystemZFeature<
2195ffd83dbSDimitry Andric  "message-security-assist-extension7", "MessageSecurityAssist7", (all_of FeatureMessageSecurityAssist7),
2200b57cec5SDimitry Andric  "Assume that the message-security-assist extension facility 7 is installed"
2210b57cec5SDimitry Andric>;
2220b57cec5SDimitry Andric
2230b57cec5SDimitry Andricdef FeatureMessageSecurityAssist8 : SystemZFeature<
2245ffd83dbSDimitry Andric  "message-security-assist-extension8", "MessageSecurityAssist8", (all_of FeatureMessageSecurityAssist8),
2250b57cec5SDimitry Andric  "Assume that the message-security-assist extension facility 8 is installed"
2260b57cec5SDimitry Andric>;
2270b57cec5SDimitry Andric
2280b57cec5SDimitry Andricdef FeatureVectorEnhancements1 : SystemZFeature<
2295ffd83dbSDimitry Andric  "vector-enhancements-1", "VectorEnhancements1", (all_of FeatureVectorEnhancements1),
2300b57cec5SDimitry Andric  "Assume that the vector enhancements facility 1 is installed"
2310b57cec5SDimitry Andric>;
2320b57cec5SDimitry Andricdef FeatureNoVectorEnhancements1 : SystemZMissingFeature<"VectorEnhancements1">;
2330b57cec5SDimitry Andric
2340b57cec5SDimitry Andricdef FeatureVectorPackedDecimal : SystemZFeature<
2355ffd83dbSDimitry Andric  "vector-packed-decimal", "VectorPackedDecimal", (all_of FeatureVectorPackedDecimal),
2360b57cec5SDimitry Andric  "Assume that the vector packed decimal facility is installed"
2370b57cec5SDimitry Andric>;
2380b57cec5SDimitry Andric
2390b57cec5SDimitry Andricdef FeatureInsertReferenceBitsMultiple : SystemZFeature<
2405ffd83dbSDimitry Andric  "insert-reference-bits-multiple", "InsertReferenceBitsMultiple", (all_of FeatureInsertReferenceBitsMultiple),
2410b57cec5SDimitry Andric  "Assume that the insert-reference-bits-multiple facility is installed"
2420b57cec5SDimitry Andric>;
2430b57cec5SDimitry Andric
2440b57cec5SDimitry Andricdef Arch12NewFeatures : SystemZFeatureList<[
2450b57cec5SDimitry Andric    FeatureMiscellaneousExtensions2,
2460b57cec5SDimitry Andric    FeatureGuardedStorage,
2470b57cec5SDimitry Andric    FeatureMessageSecurityAssist7,
2480b57cec5SDimitry Andric    FeatureMessageSecurityAssist8,
2490b57cec5SDimitry Andric    FeatureVectorEnhancements1,
2500b57cec5SDimitry Andric    FeatureVectorPackedDecimal,
2510b57cec5SDimitry Andric    FeatureInsertReferenceBitsMultiple
2520b57cec5SDimitry Andric]>;
2530b57cec5SDimitry Andric
2540b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
2550b57cec5SDimitry Andric//
2560b57cec5SDimitry Andric// New features added in the Thirteenth Edition of the z/Architecture
2570b57cec5SDimitry Andric//
2580b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
2590b57cec5SDimitry Andric
2600b57cec5SDimitry Andricdef FeatureMiscellaneousExtensions3 : SystemZFeature<
2615ffd83dbSDimitry Andric  "miscellaneous-extensions-3", "MiscellaneousExtensions3", (all_of FeatureMiscellaneousExtensions3),
2620b57cec5SDimitry Andric  "Assume that the miscellaneous-extensions facility 3 is installed"
2630b57cec5SDimitry Andric>;
2640b57cec5SDimitry Andric
2650b57cec5SDimitry Andricdef FeatureMessageSecurityAssist9 : SystemZFeature<
2665ffd83dbSDimitry Andric  "message-security-assist-extension9", "MessageSecurityAssist9", (all_of FeatureMessageSecurityAssist9),
2670b57cec5SDimitry Andric  "Assume that the message-security-assist extension facility 9 is installed"
2680b57cec5SDimitry Andric>;
2690b57cec5SDimitry Andric
2700b57cec5SDimitry Andricdef FeatureVectorEnhancements2 : SystemZFeature<
2715ffd83dbSDimitry Andric  "vector-enhancements-2", "VectorEnhancements2", (all_of FeatureVectorEnhancements2),
2720b57cec5SDimitry Andric  "Assume that the vector enhancements facility 2 is installed"
2730b57cec5SDimitry Andric>;
2740b57cec5SDimitry Andric
2750b57cec5SDimitry Andricdef FeatureVectorPackedDecimalEnhancement : SystemZFeature<
2765ffd83dbSDimitry Andric  "vector-packed-decimal-enhancement", "VectorPackedDecimalEnhancement", (all_of FeatureVectorPackedDecimalEnhancement),
2770b57cec5SDimitry Andric  "Assume that the vector packed decimal enhancement facility is installed"
2780b57cec5SDimitry Andric>;
2790b57cec5SDimitry Andric
2800b57cec5SDimitry Andricdef FeatureEnhancedSort : SystemZFeature<
2815ffd83dbSDimitry Andric  "enhanced-sort", "EnhancedSort", (all_of FeatureEnhancedSort),
2820b57cec5SDimitry Andric  "Assume that the enhanced-sort facility is installed"
2830b57cec5SDimitry Andric>;
2840b57cec5SDimitry Andric
2850b57cec5SDimitry Andricdef FeatureDeflateConversion : SystemZFeature<
2865ffd83dbSDimitry Andric  "deflate-conversion", "DeflateConversion", (all_of FeatureDeflateConversion),
2870b57cec5SDimitry Andric  "Assume that the deflate-conversion facility is installed"
2880b57cec5SDimitry Andric>;
2890b57cec5SDimitry Andric
2900b57cec5SDimitry Andricdef Arch13NewFeatures : SystemZFeatureList<[
2910b57cec5SDimitry Andric    FeatureMiscellaneousExtensions3,
2920b57cec5SDimitry Andric    FeatureMessageSecurityAssist9,
2930b57cec5SDimitry Andric    FeatureVectorEnhancements2,
2940b57cec5SDimitry Andric    FeatureVectorPackedDecimalEnhancement,
2950b57cec5SDimitry Andric    FeatureEnhancedSort,
2960b57cec5SDimitry Andric    FeatureDeflateConversion
2970b57cec5SDimitry Andric]>;
2980b57cec5SDimitry Andric
2990b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
3000b57cec5SDimitry Andric//
301fe6060f1SDimitry Andric// New features added in the Fourteenth Edition of the z/Architecture
302fe6060f1SDimitry Andric//
303fe6060f1SDimitry Andric//===----------------------------------------------------------------------===//
304fe6060f1SDimitry Andric
305fe6060f1SDimitry Andricdef FeatureVectorPackedDecimalEnhancement2 : SystemZFeature<
306fe6060f1SDimitry Andric  "vector-packed-decimal-enhancement-2", "VectorPackedDecimalEnhancement2", (all_of FeatureVectorPackedDecimalEnhancement2),
307fe6060f1SDimitry Andric  "Assume that the vector packed decimal enhancement facility 2 is installed"
308fe6060f1SDimitry Andric>;
309fe6060f1SDimitry Andric
310fe6060f1SDimitry Andricdef FeatureNNPAssist : SystemZFeature<
311fe6060f1SDimitry Andric  "nnp-assist", "NNPAssist", (all_of FeatureNNPAssist),
312fe6060f1SDimitry Andric  "Assume that the NNP-assist facility is installed"
313fe6060f1SDimitry Andric>;
314fe6060f1SDimitry Andric
315fe6060f1SDimitry Andricdef FeatureBEAREnhancement : SystemZFeature<
316fe6060f1SDimitry Andric  "bear-enhancement", "BEAREnhancement", (all_of FeatureBEAREnhancement),
317fe6060f1SDimitry Andric  "Assume that the BEAR-enhancement facility is installed"
318fe6060f1SDimitry Andric>;
319fe6060f1SDimitry Andric
320fe6060f1SDimitry Andricdef FeatureResetDATProtection : SystemZFeature<
321fe6060f1SDimitry Andric  "reset-dat-protection", "ResetDATProtection", (all_of FeatureResetDATProtection),
322fe6060f1SDimitry Andric  "Assume that the reset-DAT-protection facility is installed"
323fe6060f1SDimitry Andric>;
324fe6060f1SDimitry Andric
325fe6060f1SDimitry Andricdef FeatureProcessorActivityInstrumentation : SystemZFeature<
326fe6060f1SDimitry Andric  "processor-activity-instrumentation", "ProcessorActivityInstrumentation", (all_of FeatureProcessorActivityInstrumentation),
327fe6060f1SDimitry Andric  "Assume that the processor-activity-instrumentation facility is installed"
328fe6060f1SDimitry Andric>;
329fe6060f1SDimitry Andric
330fe6060f1SDimitry Andricdef Arch14NewFeatures : SystemZFeatureList<[
331fe6060f1SDimitry Andric    FeatureVectorPackedDecimalEnhancement2,
332fe6060f1SDimitry Andric    FeatureNNPAssist,
333fe6060f1SDimitry Andric    FeatureBEAREnhancement,
334fe6060f1SDimitry Andric    FeatureResetDATProtection,
335fe6060f1SDimitry Andric    FeatureProcessorActivityInstrumentation
336fe6060f1SDimitry Andric]>;
337fe6060f1SDimitry Andric
338fe6060f1SDimitry Andric//===----------------------------------------------------------------------===//
339fe6060f1SDimitry Andric//
3400b57cec5SDimitry Andric// Cumulative supported and unsupported feature sets
3410b57cec5SDimitry Andric//
3420b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
3430b57cec5SDimitry Andric
3440b57cec5SDimitry Andricdef Arch8SupportedFeatures
3450b57cec5SDimitry Andric  : SystemZFeatureList<[]>;
3460b57cec5SDimitry Andricdef Arch9SupportedFeatures
3470b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch8SupportedFeatures.List,  Arch9NewFeatures.List>;
3480b57cec5SDimitry Andricdef Arch10SupportedFeatures
3490b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch9SupportedFeatures.List,  Arch10NewFeatures.List>;
3500b57cec5SDimitry Andricdef Arch11SupportedFeatures
3510b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch10SupportedFeatures.List, Arch11NewFeatures.List>;
3520b57cec5SDimitry Andricdef Arch12SupportedFeatures
3530b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch11SupportedFeatures.List, Arch12NewFeatures.List>;
3540b57cec5SDimitry Andricdef Arch13SupportedFeatures
3550b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch12SupportedFeatures.List, Arch13NewFeatures.List>;
356fe6060f1SDimitry Andricdef Arch14SupportedFeatures
357fe6060f1SDimitry Andric  : SystemZFeatureAdd<Arch13SupportedFeatures.List, Arch14NewFeatures.List>;
3580b57cec5SDimitry Andric
359fe6060f1SDimitry Andricdef Arch14UnsupportedFeatures
3600b57cec5SDimitry Andric  : SystemZFeatureList<[]>;
361fe6060f1SDimitry Andricdef Arch13UnsupportedFeatures
362fe6060f1SDimitry Andric  : SystemZFeatureAdd<Arch14UnsupportedFeatures.List, Arch14NewFeatures.List>;
3630b57cec5SDimitry Andricdef Arch12UnsupportedFeatures
3640b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch13UnsupportedFeatures.List, Arch13NewFeatures.List>;
3650b57cec5SDimitry Andricdef Arch11UnsupportedFeatures
3660b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch12UnsupportedFeatures.List, Arch12NewFeatures.List>;
3670b57cec5SDimitry Andricdef Arch10UnsupportedFeatures
3680b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch11UnsupportedFeatures.List, Arch11NewFeatures.List>;
3690b57cec5SDimitry Andricdef Arch9UnsupportedFeatures
3700b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch10UnsupportedFeatures.List, Arch10NewFeatures.List>;
3710b57cec5SDimitry Andricdef Arch8UnsupportedFeatures
3720b57cec5SDimitry Andric  : SystemZFeatureAdd<Arch9UnsupportedFeatures.List,  Arch9NewFeatures.List>;
3730b57cec5SDimitry Andric
374