blob: 32fbe5ae9ef91c8b7ce8b7cbcd07dfb09220cb4f [file] [log] [blame]
Richard Sandiford27d1cfe2013-07-19 16:09:03 +00001//===-- SystemZ.td - SystemZ processors and features ---------*- tblgen -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Processor and feature definitions.
11//
12//===----------------------------------------------------------------------===//
13
14class SystemZFeature<string extname, string intname, string desc>
Eric Christophera6734172015-01-31 00:06:45 +000015 : Predicate<"Subtarget->has"##intname##"()">,
Richard Sandiford27d1cfe2013-07-19 16:09:03 +000016 AssemblerPredicate<"Feature"##intname, extname>,
17 SubtargetFeature<extname, "Has"##intname, "true", desc>;
18
Richard Sandiford41350a52013-12-24 15:18:04 +000019class SystemZMissingFeature<string intname>
Eric Christophera6734172015-01-31 00:06:45 +000020 : Predicate<"!Subtarget->has"##intname##"()">;
Richard Sandiford41350a52013-12-24 15:18:04 +000021
Richard Sandiford27d1cfe2013-07-19 16:09:03 +000022def FeatureDistinctOps : SystemZFeature<
23 "distinct-ops", "DistinctOps",
24 "Assume that the distinct-operands facility is installed"
25>;
26
Richard Sandiforda68e6f52013-07-25 08:57:02 +000027def FeatureLoadStoreOnCond : SystemZFeature<
28 "load-store-on-cond", "LoadStoreOnCond",
29 "Assume that the load/store-on-condition facility is installed"
30>;
31
Richard Sandiford6cf80b32013-07-31 11:17:35 +000032def FeatureHighWord : SystemZFeature<
33 "high-word", "HighWord",
34 "Assume that the high-word facility is installed"
35>;
36
Richard Sandiford8e92c382013-08-21 08:58:08 +000037def FeatureFPExtension : SystemZFeature<
38 "fp-extension", "FPExtension",
39 "Assume that the floating-point extension facility is installed"
40>;
41
Ulrich Weigandb4012182015-03-31 12:56:33 +000042def FeaturePopulationCount : SystemZFeature<
43 "population-count", "PopulationCount",
44 "Assume that the population-count facility is installed"
45>;
46
Richard Sandiford9afe6132013-12-10 10:36:34 +000047def FeatureFastSerialization : SystemZFeature<
48 "fast-serialization", "FastSerialization",
49 "Assume that the fast-serialization facility is installed"
50>;
51
Richard Sandiford45645a22013-12-24 15:14:05 +000052def FeatureInterlockedAccess1 : SystemZFeature<
53 "interlocked-access1", "InterlockedAccess1",
54 "Assume that interlocked-access facility 1 is installed"
55>;
Richard Sandiford41350a52013-12-24 15:18:04 +000056def FeatureNoInterlockedAccess1 : SystemZMissingFeature<"InterlockedAccess1">;
Richard Sandiford45645a22013-12-24 15:14:05 +000057
Ulrich Weigand371d10a2015-03-31 12:58:17 +000058def FeatureMiscellaneousExtensions : SystemZFeature<
59 "miscellaneous-extensions", "MiscellaneousExtensions",
60 "Assume that the miscellaneous-extensions facility is installed"
61>;
62
Ulrich Weigand57c85f52015-04-01 12:51:43 +000063def FeatureTransactionalExecution : SystemZFeature<
64 "transactional-execution", "TransactionalExecution",
65 "Assume that the transactional-execution facility is installed"
66>;
67
68def FeatureProcessorAssist : SystemZFeature<
69 "processor-assist", "ProcessorAssist",
70 "Assume that the processor-assist facility is installed"
71>;
72
Ulrich Weiganda8b04e12015-05-05 19:23:40 +000073def FeatureVector : SystemZFeature<
74 "vector", "Vector",
75 "Assume that the vectory facility is installed"
76>;
77def FeatureNoVector : SystemZMissingFeature<"Vector">;
78
Richard Sandifordf834ea12013-10-31 12:14:17 +000079def : Processor<"generic", NoItineraries, []>;
80def : Processor<"z10", NoItineraries, []>;
81def : Processor<"z196", NoItineraries,
Richard Sandiford8e92c382013-08-21 08:58:08 +000082 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord,
Ulrich Weigandb4012182015-03-31 12:56:33 +000083 FeatureFPExtension, FeaturePopulationCount,
84 FeatureFastSerialization, FeatureInterlockedAccess1]>;
Richard Sandiforda68e6f52013-07-25 08:57:02 +000085def : Processor<"zEC12", NoItineraries,
Richard Sandiford8e92c382013-08-21 08:58:08 +000086 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord,
Ulrich Weigandb4012182015-03-31 12:56:33 +000087 FeatureFPExtension, FeaturePopulationCount,
Ulrich Weigand371d10a2015-03-31 12:58:17 +000088 FeatureFastSerialization, FeatureInterlockedAccess1,
Ulrich Weigand57c85f52015-04-01 12:51:43 +000089 FeatureMiscellaneousExtensions,
90 FeatureTransactionalExecution, FeatureProcessorAssist]>;
Ulrich Weiganda8b04e12015-05-05 19:23:40 +000091def : Processor<"z13", NoItineraries,
92 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord,
93 FeatureFPExtension, FeaturePopulationCount,
94 FeatureFastSerialization, FeatureInterlockedAccess1,
95 FeatureTransactionalExecution, FeatureProcessorAssist,
96 FeatureVector]>;