1 //===-- SystemZ.td - SystemZ processors and features ---------*- tblgen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // Processor and feature definitions.
12 //===----------------------------------------------------------------------===//
14 class SystemZFeature<string extname, string intname, string desc>
15 : Predicate<"Subtarget->has"##intname##"()">,
16 AssemblerPredicate<"Feature"##intname, extname>,
17 SubtargetFeature<extname, "Has"##intname, "true", desc>;
19 class SystemZMissingFeature<string intname>
20 : Predicate<"!Subtarget->has"##intname##"()">;
22 def FeatureDistinctOps : SystemZFeature<
23 "distinct-ops", "DistinctOps",
24 "Assume that the distinct-operands facility is installed"
27 def FeatureLoadStoreOnCond : SystemZFeature<
28 "load-store-on-cond", "LoadStoreOnCond",
29 "Assume that the load/store-on-condition facility is installed"
32 def FeatureHighWord : SystemZFeature<
33 "high-word", "HighWord",
34 "Assume that the high-word facility is installed"
37 def FeatureFPExtension : SystemZFeature<
38 "fp-extension", "FPExtension",
39 "Assume that the floating-point extension facility is installed"
42 def FeaturePopulationCount : SystemZFeature<
43 "population-count", "PopulationCount",
44 "Assume that the population-count facility is installed"
47 def FeatureFastSerialization : SystemZFeature<
48 "fast-serialization", "FastSerialization",
49 "Assume that the fast-serialization facility is installed"
52 def FeatureInterlockedAccess1 : SystemZFeature<
53 "interlocked-access1", "InterlockedAccess1",
54 "Assume that interlocked-access facility 1 is installed"
56 def FeatureNoInterlockedAccess1 : SystemZMissingFeature<"InterlockedAccess1">;
58 def FeatureMiscellaneousExtensions : SystemZFeature<
59 "miscellaneous-extensions", "MiscellaneousExtensions",
60 "Assume that the miscellaneous-extensions facility is installed"
63 def FeatureTransactionalExecution : SystemZFeature<
64 "transactional-execution", "TransactionalExecution",
65 "Assume that the transactional-execution facility is installed"
68 def FeatureProcessorAssist : SystemZFeature<
69 "processor-assist", "ProcessorAssist",
70 "Assume that the processor-assist facility is installed"
73 def FeatureVector : SystemZFeature<
75 "Assume that the vectory facility is installed"
77 def FeatureNoVector : SystemZMissingFeature<"Vector">;
79 def : Processor<"generic", NoItineraries, []>;
80 def : Processor<"z10", NoItineraries, []>;
81 def : Processor<"z196", NoItineraries,
82 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord,
83 FeatureFPExtension, FeaturePopulationCount,
84 FeatureFastSerialization, FeatureInterlockedAccess1]>;
85 def : Processor<"zEC12", NoItineraries,
86 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord,
87 FeatureFPExtension, FeaturePopulationCount,
88 FeatureFastSerialization, FeatureInterlockedAccess1,
89 FeatureMiscellaneousExtensions,
90 FeatureTransactionalExecution, FeatureProcessorAssist]>;
91 def : Processor<"z13", NoItineraries,
92 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord,
93 FeatureFPExtension, FeaturePopulationCount,
94 FeatureFastSerialization, FeatureInterlockedAccess1,
95 FeatureTransactionalExecution, FeatureProcessorAssist,