1//===-- 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> 15 : Predicate<"Subtarget->has"##intname##"()">, 16 AssemblerPredicate<"Feature"##intname, extname>, 17 SubtargetFeature<extname, "Has"##intname, "true", desc>; 18 19class SystemZMissingFeature<string intname> 20 : Predicate<"!Subtarget->has"##intname##"()">; 21 22def FeatureDistinctOps : SystemZFeature< 23 "distinct-ops", "DistinctOps", 24 "Assume that the distinct-operands facility is installed" 25>; 26 27def FeatureLoadStoreOnCond : SystemZFeature< 28 "load-store-on-cond", "LoadStoreOnCond", 29 "Assume that the load/store-on-condition facility is installed" 30>; 31 32def FeatureHighWord : SystemZFeature< 33 "high-word", "HighWord", 34 "Assume that the high-word facility is installed" 35>; 36 37def FeatureFPExtension : SystemZFeature< 38 "fp-extension", "FPExtension", 39 "Assume that the floating-point extension facility is installed" 40>; 41 42def FeaturePopulationCount : SystemZFeature< 43 "population-count", "PopulationCount", 44 "Assume that the population-count facility is installed" 45>; 46 47def FeatureFastSerialization : SystemZFeature< 48 "fast-serialization", "FastSerialization", 49 "Assume that the fast-serialization facility is installed" 50>; 51 52def FeatureInterlockedAccess1 : SystemZFeature< 53 "interlocked-access1", "InterlockedAccess1", 54 "Assume that interlocked-access facility 1 is installed" 55>; 56def FeatureNoInterlockedAccess1 : SystemZMissingFeature<"InterlockedAccess1">; 57 58def FeatureMiscellaneousExtensions : SystemZFeature< 59 "miscellaneous-extensions", "MiscellaneousExtensions", 60 "Assume that the miscellaneous-extensions facility is installed" 61>; 62 63def 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 73def FeatureVector : SystemZFeature< 74 "vector", "Vector", 75 "Assume that the vectory facility is installed" 76>; 77def FeatureNoVector : SystemZMissingFeature<"Vector">; 78 79def : Processor<"generic", NoItineraries, []>; 80def : Processor<"z10", NoItineraries, []>; 81def : Processor<"z196", NoItineraries, 82 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord, 83 FeatureFPExtension, FeaturePopulationCount, 84 FeatureFastSerialization, FeatureInterlockedAccess1]>; 85def : Processor<"zEC12", NoItineraries, 86 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord, 87 FeatureFPExtension, FeaturePopulationCount, 88 FeatureFastSerialization, FeatureInterlockedAccess1, 89 FeatureMiscellaneousExtensions, 90 FeatureTransactionalExecution, FeatureProcessorAssist]>; 91def : Processor<"z13", NoItineraries, 92 [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord, 93 FeatureFPExtension, FeaturePopulationCount, 94 FeatureFastSerialization, FeatureInterlockedAccess1, 95 FeatureTransactionalExecution, FeatureProcessorAssist, 96 FeatureVector]>; 97