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