You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			270 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			TableGen
		
	
	
	
	
	
		
		
			
		
	
	
			270 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			TableGen
		
	
	
	
	
	
|   | //===-- SystemZ.td - SystemZ processors and features ---------*- tblgen -*-===//
 | ||
|  | //
 | ||
|  | //                     The LLVM Compiler Infrastructure
 | ||
|  | //
 | ||
|  | // This file is distributed under the University of Illinois Open Source
 | ||
|  | // License. See LICENSE.TXT for details.
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | //
 | ||
|  | // Feature definitions.
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | 
 | ||
|  | class SystemZFeature<string extname, string intname, string desc> | ||
|  |   : Predicate<"Subtarget->has"##intname##"()">, | ||
|  |     AssemblerPredicate<"Feature"##intname, extname>, | ||
|  |     SubtargetFeature<extname, "Has"##intname, "true", desc>; | ||
|  | 
 | ||
|  | class SystemZMissingFeature<string intname> | ||
|  |   : Predicate<"!Subtarget->has"##intname##"()">; | ||
|  | 
 | ||
|  | class SystemZFeatureList<list<SystemZFeature> x> { | ||
|  |   list<SystemZFeature> List = x; | ||
|  | } | ||
|  | 
 | ||
|  | class SystemZFeatureAdd<list<SystemZFeature> x, list<SystemZFeature> y> | ||
|  |   : SystemZFeatureList<!listconcat(x, y)>; | ||
|  | 
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | //
 | ||
|  | // New features added in the Ninth Edition of the z/Architecture
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | 
 | ||
|  | def FeatureDistinctOps : SystemZFeature< | ||
|  |   "distinct-ops", "DistinctOps", | ||
|  |   "Assume that the distinct-operands facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureFastSerialization : SystemZFeature< | ||
|  |   "fast-serialization", "FastSerialization", | ||
|  |   "Assume that the fast-serialization facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureFPExtension : SystemZFeature< | ||
|  |   "fp-extension", "FPExtension", | ||
|  |   "Assume that the floating-point extension facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureHighWord : SystemZFeature< | ||
|  |   "high-word", "HighWord", | ||
|  |   "Assume that the high-word facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureInterlockedAccess1 : SystemZFeature< | ||
|  |   "interlocked-access1", "InterlockedAccess1", | ||
|  |   "Assume that interlocked-access facility 1 is installed" | ||
|  | >; | ||
|  | def FeatureNoInterlockedAccess1 : SystemZMissingFeature<"InterlockedAccess1">; | ||
|  | 
 | ||
|  | def FeatureLoadStoreOnCond : SystemZFeature< | ||
|  |   "load-store-on-cond", "LoadStoreOnCond", | ||
|  |   "Assume that the load/store-on-condition facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeaturePopulationCount : SystemZFeature< | ||
|  |   "population-count", "PopulationCount", | ||
|  |   "Assume that the population-count facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureMessageSecurityAssist3 : SystemZFeature< | ||
|  |   "message-security-assist-extension3", "MessageSecurityAssist3", | ||
|  |   "Assume that the message-security-assist extension facility 3 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureMessageSecurityAssist4 : SystemZFeature< | ||
|  |   "message-security-assist-extension4", "MessageSecurityAssist4", | ||
|  |   "Assume that the message-security-assist extension facility 4 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureResetReferenceBitsMultiple : SystemZFeature< | ||
|  |   "reset-reference-bits-multiple", "ResetReferenceBitsMultiple", | ||
|  |   "Assume that the reset-reference-bits-multiple facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def Arch9NewFeatures : SystemZFeatureList<[ | ||
|  |     FeatureDistinctOps, | ||
|  |     FeatureFastSerialization, | ||
|  |     FeatureFPExtension, | ||
|  |     FeatureHighWord, | ||
|  |     FeatureInterlockedAccess1, | ||
|  |     FeatureLoadStoreOnCond, | ||
|  |     FeaturePopulationCount, | ||
|  |     FeatureMessageSecurityAssist3, | ||
|  |     FeatureMessageSecurityAssist4, | ||
|  |     FeatureResetReferenceBitsMultiple | ||
|  | ]>; | ||
|  | 
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | //
 | ||
|  | // New features added in the Tenth Edition of the z/Architecture
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | 
 | ||
|  | def FeatureExecutionHint : SystemZFeature< | ||
|  |   "execution-hint", "ExecutionHint", | ||
|  |   "Assume that the execution-hint facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureLoadAndTrap : SystemZFeature< | ||
|  |   "load-and-trap", "LoadAndTrap", | ||
|  |   "Assume that the load-and-trap facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureMiscellaneousExtensions : SystemZFeature< | ||
|  |   "miscellaneous-extensions", "MiscellaneousExtensions", | ||
|  |   "Assume that the miscellaneous-extensions facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureProcessorAssist : SystemZFeature< | ||
|  |   "processor-assist", "ProcessorAssist", | ||
|  |   "Assume that the processor-assist facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureTransactionalExecution : SystemZFeature< | ||
|  |   "transactional-execution", "TransactionalExecution", | ||
|  |   "Assume that the transactional-execution facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureDFPZonedConversion : SystemZFeature< | ||
|  |   "dfp-zoned-conversion", "DFPZonedConversion", | ||
|  |   "Assume that the DFP zoned-conversion facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureEnhancedDAT2 : SystemZFeature< | ||
|  |   "enhanced-dat-2", "EnhancedDAT2", | ||
|  |   "Assume that the enhanced-DAT facility 2 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def Arch10NewFeatures : SystemZFeatureList<[ | ||
|  |     FeatureExecutionHint, | ||
|  |     FeatureLoadAndTrap, | ||
|  |     FeatureMiscellaneousExtensions, | ||
|  |     FeatureProcessorAssist, | ||
|  |     FeatureTransactionalExecution, | ||
|  |     FeatureDFPZonedConversion, | ||
|  |     FeatureEnhancedDAT2 | ||
|  | ]>; | ||
|  | 
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | //
 | ||
|  | // New features added in the Eleventh Edition of the z/Architecture
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | 
 | ||
|  | def FeatureLoadAndZeroRightmostByte : SystemZFeature< | ||
|  |   "load-and-zero-rightmost-byte", "LoadAndZeroRightmostByte", | ||
|  |   "Assume that the load-and-zero-rightmost-byte facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureLoadStoreOnCond2 : SystemZFeature< | ||
|  |   "load-store-on-cond-2", "LoadStoreOnCond2", | ||
|  |   "Assume that the load/store-on-condition facility 2 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureMessageSecurityAssist5 : SystemZFeature< | ||
|  |   "message-security-assist-extension5", "MessageSecurityAssist5", | ||
|  |   "Assume that the message-security-assist extension facility 5 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureDFPPackedConversion : SystemZFeature< | ||
|  |   "dfp-packed-conversion", "DFPPackedConversion", | ||
|  |   "Assume that the DFP packed-conversion facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureVector : SystemZFeature< | ||
|  |   "vector", "Vector", | ||
|  |   "Assume that the vectory facility is installed" | ||
|  | >; | ||
|  | def FeatureNoVector : SystemZMissingFeature<"Vector">; | ||
|  | 
 | ||
|  | def Arch11NewFeatures : SystemZFeatureList<[ | ||
|  |     FeatureLoadAndZeroRightmostByte, | ||
|  |     FeatureLoadStoreOnCond2, | ||
|  |     FeatureMessageSecurityAssist5, | ||
|  |     FeatureDFPPackedConversion, | ||
|  |     FeatureVector | ||
|  | ]>; | ||
|  | 
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | //
 | ||
|  | // New features added in the Twelvth Edition of the z/Architecture
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | 
 | ||
|  | def FeatureMiscellaneousExtensions2 : SystemZFeature< | ||
|  |   "miscellaneous-extensions-2", "MiscellaneousExtensions2", | ||
|  |   "Assume that the miscellaneous-extensions facility 2 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureGuardedStorage : SystemZFeature< | ||
|  |   "guarded-storage", "GuardedStorage", | ||
|  |   "Assume that the guarded-storage facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureMessageSecurityAssist7 : SystemZFeature< | ||
|  |   "message-security-assist-extension7", "MessageSecurityAssist7", | ||
|  |   "Assume that the message-security-assist extension facility 7 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureMessageSecurityAssist8 : SystemZFeature< | ||
|  |   "message-security-assist-extension8", "MessageSecurityAssist8", | ||
|  |   "Assume that the message-security-assist extension facility 8 is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureVectorEnhancements1 : SystemZFeature< | ||
|  |   "vector-enhancements-1", "VectorEnhancements1", | ||
|  |   "Assume that the vector enhancements facility 1 is installed" | ||
|  | >; | ||
|  | def FeatureNoVectorEnhancements1 : SystemZMissingFeature<"VectorEnhancements1">; | ||
|  | 
 | ||
|  | def FeatureVectorPackedDecimal : SystemZFeature< | ||
|  |   "vector-packed-decimal", "VectorPackedDecimal", | ||
|  |   "Assume that the vector packed decimal facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def FeatureInsertReferenceBitsMultiple : SystemZFeature< | ||
|  |   "insert-reference-bits-multiple", "InsertReferenceBitsMultiple", | ||
|  |   "Assume that the insert-reference-bits-multiple facility is installed" | ||
|  | >; | ||
|  | 
 | ||
|  | def Arch12NewFeatures : SystemZFeatureList<[ | ||
|  |     FeatureMiscellaneousExtensions2, | ||
|  |     FeatureGuardedStorage, | ||
|  |     FeatureMessageSecurityAssist7, | ||
|  |     FeatureMessageSecurityAssist8, | ||
|  |     FeatureVectorEnhancements1, | ||
|  |     FeatureVectorPackedDecimal, | ||
|  |     FeatureInsertReferenceBitsMultiple | ||
|  | ]>; | ||
|  | 
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | //
 | ||
|  | // Cumulative supported and unsupported feature sets
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | 
 | ||
|  | def Arch8SupportedFeatures | ||
|  |   : SystemZFeatureList<[]>; | ||
|  | def Arch9SupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch8SupportedFeatures.List,  Arch9NewFeatures.List>; | ||
|  | def Arch10SupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch9SupportedFeatures.List,  Arch10NewFeatures.List>; | ||
|  | def Arch11SupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch10SupportedFeatures.List, Arch11NewFeatures.List>; | ||
|  | def Arch12SupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch11SupportedFeatures.List, Arch12NewFeatures.List>; | ||
|  | 
 | ||
|  | def Arch12UnsupportedFeatures | ||
|  |   : SystemZFeatureList<[]>; | ||
|  | def Arch11UnsupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch12UnsupportedFeatures.List, Arch12NewFeatures.List>; | ||
|  | def Arch10UnsupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch11UnsupportedFeatures.List, Arch11NewFeatures.List>; | ||
|  | def Arch9UnsupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch10UnsupportedFeatures.List, Arch10NewFeatures.List>; | ||
|  | def Arch8UnsupportedFeatures | ||
|  |   : SystemZFeatureAdd<Arch9UnsupportedFeatures.List,  Arch9NewFeatures.List>; | ||
|  | 
 |