module Data.SpirV.Enum.Decoration where import Data.String (IsString(..)) import Data.Word (Word32) import Foreign (Storable(..)) import GHC.Read (Read(..)) import Text.ParserCombinators.ReadPrec (pfail) import qualified GHC.Read as Read import qualified Text.Read.Lex as Lex newtype Decoration = Decoration Word32 deriving (Eq, Ord, Storable) pattern RelaxedPrecision :: Decoration pattern RelaxedPrecision = Decoration 0 pattern SpecId :: Decoration pattern SpecId = Decoration 1 pattern Block :: Decoration pattern Block = Decoration 2 pattern BufferBlock :: Decoration pattern BufferBlock = Decoration 3 pattern RowMajor :: Decoration pattern RowMajor = Decoration 4 pattern ColMajor :: Decoration pattern ColMajor = Decoration 5 pattern ArrayStride :: Decoration pattern ArrayStride = Decoration 6 pattern MatrixStride :: Decoration pattern MatrixStride = Decoration 7 pattern GLSLShared :: Decoration pattern GLSLShared = Decoration 8 pattern GLSLPacked :: Decoration pattern GLSLPacked = Decoration 9 pattern CPacked :: Decoration pattern CPacked = Decoration 10 pattern BuiltIn :: Decoration pattern BuiltIn = Decoration 11 pattern NoPerspective :: Decoration pattern NoPerspective = Decoration 13 pattern Flat :: Decoration pattern Flat = Decoration 14 pattern Patch :: Decoration pattern Patch = Decoration 15 pattern Centroid :: Decoration pattern Centroid = Decoration 16 pattern Sample :: Decoration pattern Sample = Decoration 17 pattern Invariant :: Decoration pattern Invariant = Decoration 18 pattern Restrict :: Decoration pattern Restrict = Decoration 19 pattern Aliased :: Decoration pattern Aliased = Decoration 20 pattern Volatile :: Decoration pattern Volatile = Decoration 21 pattern Constant :: Decoration pattern Constant = Decoration 22 pattern Coherent :: Decoration pattern Coherent = Decoration 23 pattern NonWritable :: Decoration pattern NonWritable = Decoration 24 pattern NonReadable :: Decoration pattern NonReadable = Decoration 25 pattern Uniform :: Decoration pattern Uniform = Decoration 26 pattern UniformId :: Decoration pattern UniformId = Decoration 27 pattern SaturatedConversion :: Decoration pattern SaturatedConversion = Decoration 28 pattern Stream :: Decoration pattern Stream = Decoration 29 pattern Location :: Decoration pattern Location = Decoration 30 pattern Component :: Decoration pattern Component = Decoration 31 pattern Index :: Decoration pattern Index = Decoration 32 pattern Binding :: Decoration pattern Binding = Decoration 33 pattern DescriptorSet :: Decoration pattern DescriptorSet = Decoration 34 pattern Offset :: Decoration pattern Offset = Decoration 35 pattern XfbBuffer :: Decoration pattern XfbBuffer = Decoration 36 pattern XfbStride :: Decoration pattern XfbStride = Decoration 37 pattern FuncParamAttr :: Decoration pattern FuncParamAttr = Decoration 38 pattern FPRoundingMode :: Decoration pattern FPRoundingMode = Decoration 39 pattern FPFastMathMode :: Decoration pattern FPFastMathMode = Decoration 40 pattern LinkageAttributes :: Decoration pattern LinkageAttributes = Decoration 41 pattern NoContraction :: Decoration pattern NoContraction = Decoration 42 pattern InputAttachmentIndex :: Decoration pattern InputAttachmentIndex = Decoration 43 pattern Alignment :: Decoration pattern Alignment = Decoration 44 pattern MaxByteOffset :: Decoration pattern MaxByteOffset = Decoration 45 pattern AlignmentId :: Decoration pattern AlignmentId = Decoration 46 pattern MaxByteOffsetId :: Decoration pattern MaxByteOffsetId = Decoration 47 pattern NoSignedWrap :: Decoration pattern NoSignedWrap = Decoration 4469 pattern NoUnsignedWrap :: Decoration pattern NoUnsignedWrap = Decoration 4470 pattern ExplicitInterpAMD :: Decoration pattern ExplicitInterpAMD = Decoration 4999 pattern OverrideCoverageNV :: Decoration pattern OverrideCoverageNV = Decoration 5248 pattern PassthroughNV :: Decoration pattern PassthroughNV = Decoration 5250 pattern ViewportRelativeNV :: Decoration pattern ViewportRelativeNV = Decoration 5252 pattern SecondaryViewportRelativeNV :: Decoration pattern SecondaryViewportRelativeNV = Decoration 5256 pattern PerPrimitiveEXT :: Decoration pattern PerPrimitiveEXT = Decoration 5271 pattern PerPrimitiveNV :: Decoration pattern PerPrimitiveNV = Decoration 5271 pattern PerViewNV :: Decoration pattern PerViewNV = Decoration 5272 pattern PerTaskNV :: Decoration pattern PerTaskNV = Decoration 5273 pattern PerVertexKHR :: Decoration pattern PerVertexKHR = Decoration 5285 pattern PerVertexNV :: Decoration pattern PerVertexNV = Decoration 5285 pattern NonUniform :: Decoration pattern NonUniform = Decoration 5300 pattern NonUniformEXT :: Decoration pattern NonUniformEXT = Decoration 5300 pattern RestrictPointer :: Decoration pattern RestrictPointer = Decoration 5355 pattern RestrictPointerEXT :: Decoration pattern RestrictPointerEXT = Decoration 5355 pattern AliasedPointer :: Decoration pattern AliasedPointer = Decoration 5356 pattern AliasedPointerEXT :: Decoration pattern AliasedPointerEXT = Decoration 5356 pattern HitObjectShaderRecordBufferNV :: Decoration pattern HitObjectShaderRecordBufferNV = Decoration 5386 pattern BindlessSamplerNV :: Decoration pattern BindlessSamplerNV = Decoration 5398 pattern BindlessImageNV :: Decoration pattern BindlessImageNV = Decoration 5399 pattern BoundSamplerNV :: Decoration pattern BoundSamplerNV = Decoration 5400 pattern BoundImageNV :: Decoration pattern BoundImageNV = Decoration 5401 pattern SIMTCallINTEL :: Decoration pattern SIMTCallINTEL = Decoration 5599 pattern ReferencedIndirectlyINTEL :: Decoration pattern ReferencedIndirectlyINTEL = Decoration 5602 pattern ClobberINTEL :: Decoration pattern ClobberINTEL = Decoration 5607 pattern SideEffectsINTEL :: Decoration pattern SideEffectsINTEL = Decoration 5608 pattern VectorComputeVariableINTEL :: Decoration pattern VectorComputeVariableINTEL = Decoration 5624 pattern FuncParamIOKindINTEL :: Decoration pattern FuncParamIOKindINTEL = Decoration 5625 pattern VectorComputeFunctionINTEL :: Decoration pattern VectorComputeFunctionINTEL = Decoration 5626 pattern StackCallINTEL :: Decoration pattern StackCallINTEL = Decoration 5627 pattern GlobalVariableOffsetINTEL :: Decoration pattern GlobalVariableOffsetINTEL = Decoration 5628 pattern CounterBuffer :: Decoration pattern CounterBuffer = Decoration 5634 pattern HlslCounterBufferGOOGLE :: Decoration pattern HlslCounterBufferGOOGLE = Decoration 5634 pattern HlslSemanticGOOGLE :: Decoration pattern HlslSemanticGOOGLE = Decoration 5635 pattern UserSemantic :: Decoration pattern UserSemantic = Decoration 5635 pattern UserTypeGOOGLE :: Decoration pattern UserTypeGOOGLE = Decoration 5636 pattern FunctionRoundingModeINTEL :: Decoration pattern FunctionRoundingModeINTEL = Decoration 5822 pattern FunctionDenormModeINTEL :: Decoration pattern FunctionDenormModeINTEL = Decoration 5823 pattern RegisterINTEL :: Decoration pattern RegisterINTEL = Decoration 5825 pattern MemoryINTEL :: Decoration pattern MemoryINTEL = Decoration 5826 pattern NumbanksINTEL :: Decoration pattern NumbanksINTEL = Decoration 5827 pattern BankwidthINTEL :: Decoration pattern BankwidthINTEL = Decoration 5828 pattern MaxPrivateCopiesINTEL :: Decoration pattern MaxPrivateCopiesINTEL = Decoration 5829 pattern SinglepumpINTEL :: Decoration pattern SinglepumpINTEL = Decoration 5830 pattern DoublepumpINTEL :: Decoration pattern DoublepumpINTEL = Decoration 5831 pattern MaxReplicatesINTEL :: Decoration pattern MaxReplicatesINTEL = Decoration 5832 pattern SimpleDualPortINTEL :: Decoration pattern SimpleDualPortINTEL = Decoration 5833 pattern MergeINTEL :: Decoration pattern MergeINTEL = Decoration 5834 pattern BankBitsINTEL :: Decoration pattern BankBitsINTEL = Decoration 5835 pattern ForcePow2DepthINTEL :: Decoration pattern ForcePow2DepthINTEL = Decoration 5836 pattern BurstCoalesceINTEL :: Decoration pattern BurstCoalesceINTEL = Decoration 5899 pattern CacheSizeINTEL :: Decoration pattern CacheSizeINTEL = Decoration 5900 pattern DontStaticallyCoalesceINTEL :: Decoration pattern DontStaticallyCoalesceINTEL = Decoration 5901 pattern PrefetchINTEL :: Decoration pattern PrefetchINTEL = Decoration 5902 pattern StallEnableINTEL :: Decoration pattern StallEnableINTEL = Decoration 5905 pattern FuseLoopsInFunctionINTEL :: Decoration pattern FuseLoopsInFunctionINTEL = Decoration 5907 pattern MathOpDSPModeINTEL :: Decoration pattern MathOpDSPModeINTEL = Decoration 5909 pattern AliasScopeINTEL :: Decoration pattern AliasScopeINTEL = Decoration 5914 pattern NoAliasINTEL :: Decoration pattern NoAliasINTEL = Decoration 5915 pattern InitiationIntervalINTEL :: Decoration pattern InitiationIntervalINTEL = Decoration 5917 pattern MaxConcurrencyINTEL :: Decoration pattern MaxConcurrencyINTEL = Decoration 5918 pattern PipelineEnableINTEL :: Decoration pattern PipelineEnableINTEL = Decoration 5919 pattern BufferLocationINTEL :: Decoration pattern BufferLocationINTEL = Decoration 5921 pattern IOPipeStorageINTEL :: Decoration pattern IOPipeStorageINTEL = Decoration 5944 pattern FunctionFloatingPointModeINTEL :: Decoration pattern FunctionFloatingPointModeINTEL = Decoration 6080 pattern SingleElementVectorINTEL :: Decoration pattern SingleElementVectorINTEL = Decoration 6085 pattern VectorComputeCallableFunctionINTEL :: Decoration pattern VectorComputeCallableFunctionINTEL = Decoration 6087 pattern MediaBlockIOINTEL :: Decoration pattern MediaBlockIOINTEL = Decoration 6140 toName :: IsString a => Decoration -> a toName x = case x of RelaxedPrecision -> "RelaxedPrecision" SpecId -> "SpecId" Block -> "Block" BufferBlock -> "BufferBlock" RowMajor -> "RowMajor" ColMajor -> "ColMajor" ArrayStride -> "ArrayStride" MatrixStride -> "MatrixStride" GLSLShared -> "GLSLShared" GLSLPacked -> "GLSLPacked" CPacked -> "CPacked" BuiltIn -> "BuiltIn" NoPerspective -> "NoPerspective" Flat -> "Flat" Patch -> "Patch" Centroid -> "Centroid" Sample -> "Sample" Invariant -> "Invariant" Restrict -> "Restrict" Aliased -> "Aliased" Volatile -> "Volatile" Constant -> "Constant" Coherent -> "Coherent" NonWritable -> "NonWritable" NonReadable -> "NonReadable" Uniform -> "Uniform" UniformId -> "UniformId" SaturatedConversion -> "SaturatedConversion" Stream -> "Stream" Location -> "Location" Component -> "Component" Index -> "Index" Binding -> "Binding" DescriptorSet -> "DescriptorSet" Offset -> "Offset" XfbBuffer -> "XfbBuffer" XfbStride -> "XfbStride" FuncParamAttr -> "FuncParamAttr" FPRoundingMode -> "FPRoundingMode" FPFastMathMode -> "FPFastMathMode" LinkageAttributes -> "LinkageAttributes" NoContraction -> "NoContraction" InputAttachmentIndex -> "InputAttachmentIndex" Alignment -> "Alignment" MaxByteOffset -> "MaxByteOffset" AlignmentId -> "AlignmentId" MaxByteOffsetId -> "MaxByteOffsetId" NoSignedWrap -> "NoSignedWrap" NoUnsignedWrap -> "NoUnsignedWrap" ExplicitInterpAMD -> "ExplicitInterpAMD" OverrideCoverageNV -> "OverrideCoverageNV" PassthroughNV -> "PassthroughNV" ViewportRelativeNV -> "ViewportRelativeNV" SecondaryViewportRelativeNV -> "SecondaryViewportRelativeNV" PerPrimitiveEXT -> "PerPrimitiveEXT" PerPrimitiveNV -> "PerPrimitiveNV" PerViewNV -> "PerViewNV" PerTaskNV -> "PerTaskNV" PerVertexKHR -> "PerVertexKHR" PerVertexNV -> "PerVertexNV" NonUniform -> "NonUniform" NonUniformEXT -> "NonUniformEXT" RestrictPointer -> "RestrictPointer" RestrictPointerEXT -> "RestrictPointerEXT" AliasedPointer -> "AliasedPointer" AliasedPointerEXT -> "AliasedPointerEXT" HitObjectShaderRecordBufferNV -> "HitObjectShaderRecordBufferNV" BindlessSamplerNV -> "BindlessSamplerNV" BindlessImageNV -> "BindlessImageNV" BoundSamplerNV -> "BoundSamplerNV" BoundImageNV -> "BoundImageNV" SIMTCallINTEL -> "SIMTCallINTEL" ReferencedIndirectlyINTEL -> "ReferencedIndirectlyINTEL" ClobberINTEL -> "ClobberINTEL" SideEffectsINTEL -> "SideEffectsINTEL" VectorComputeVariableINTEL -> "VectorComputeVariableINTEL" FuncParamIOKindINTEL -> "FuncParamIOKindINTEL" VectorComputeFunctionINTEL -> "VectorComputeFunctionINTEL" StackCallINTEL -> "StackCallINTEL" GlobalVariableOffsetINTEL -> "GlobalVariableOffsetINTEL" CounterBuffer -> "CounterBuffer" HlslCounterBufferGOOGLE -> "HlslCounterBufferGOOGLE" HlslSemanticGOOGLE -> "HlslSemanticGOOGLE" UserSemantic -> "UserSemantic" UserTypeGOOGLE -> "UserTypeGOOGLE" FunctionRoundingModeINTEL -> "FunctionRoundingModeINTEL" FunctionDenormModeINTEL -> "FunctionDenormModeINTEL" RegisterINTEL -> "RegisterINTEL" MemoryINTEL -> "MemoryINTEL" NumbanksINTEL -> "NumbanksINTEL" BankwidthINTEL -> "BankwidthINTEL" MaxPrivateCopiesINTEL -> "MaxPrivateCopiesINTEL" SinglepumpINTEL -> "SinglepumpINTEL" DoublepumpINTEL -> "DoublepumpINTEL" MaxReplicatesINTEL -> "MaxReplicatesINTEL" SimpleDualPortINTEL -> "SimpleDualPortINTEL" MergeINTEL -> "MergeINTEL" BankBitsINTEL -> "BankBitsINTEL" ForcePow2DepthINTEL -> "ForcePow2DepthINTEL" BurstCoalesceINTEL -> "BurstCoalesceINTEL" CacheSizeINTEL -> "CacheSizeINTEL" DontStaticallyCoalesceINTEL -> "DontStaticallyCoalesceINTEL" PrefetchINTEL -> "PrefetchINTEL" StallEnableINTEL -> "StallEnableINTEL" FuseLoopsInFunctionINTEL -> "FuseLoopsInFunctionINTEL" MathOpDSPModeINTEL -> "MathOpDSPModeINTEL" AliasScopeINTEL -> "AliasScopeINTEL" NoAliasINTEL -> "NoAliasINTEL" InitiationIntervalINTEL -> "InitiationIntervalINTEL" MaxConcurrencyINTEL -> "MaxConcurrencyINTEL" PipelineEnableINTEL -> "PipelineEnableINTEL" BufferLocationINTEL -> "BufferLocationINTEL" IOPipeStorageINTEL -> "IOPipeStorageINTEL" FunctionFloatingPointModeINTEL -> "FunctionFloatingPointModeINTEL" SingleElementVectorINTEL -> "SingleElementVectorINTEL" VectorComputeCallableFunctionINTEL -> "VectorComputeCallableFunctionINTEL" MediaBlockIOINTEL -> "MediaBlockIOINTEL" unknown -> fromString $ "Decoration " ++ show unknown instance Show Decoration where show = toName fromName :: (IsString a, Eq a) => a -> Maybe Decoration fromName x = case x of "RelaxedPrecision" -> Just RelaxedPrecision "SpecId" -> Just SpecId "Block" -> Just Block "BufferBlock" -> Just BufferBlock "RowMajor" -> Just RowMajor "ColMajor" -> Just ColMajor "ArrayStride" -> Just ArrayStride "MatrixStride" -> Just MatrixStride "GLSLShared" -> Just GLSLShared "GLSLPacked" -> Just GLSLPacked "CPacked" -> Just CPacked "BuiltIn" -> Just BuiltIn "NoPerspective" -> Just NoPerspective "Flat" -> Just Flat "Patch" -> Just Patch "Centroid" -> Just Centroid "Sample" -> Just Sample "Invariant" -> Just Invariant "Restrict" -> Just Restrict "Aliased" -> Just Aliased "Volatile" -> Just Volatile "Constant" -> Just Constant "Coherent" -> Just Coherent "NonWritable" -> Just NonWritable "NonReadable" -> Just NonReadable "Uniform" -> Just Uniform "UniformId" -> Just UniformId "SaturatedConversion" -> Just SaturatedConversion "Stream" -> Just Stream "Location" -> Just Location "Component" -> Just Component "Index" -> Just Index "Binding" -> Just Binding "DescriptorSet" -> Just DescriptorSet "Offset" -> Just Offset "XfbBuffer" -> Just XfbBuffer "XfbStride" -> Just XfbStride "FuncParamAttr" -> Just FuncParamAttr "FPRoundingMode" -> Just FPRoundingMode "FPFastMathMode" -> Just FPFastMathMode "LinkageAttributes" -> Just LinkageAttributes "NoContraction" -> Just NoContraction "InputAttachmentIndex" -> Just InputAttachmentIndex "Alignment" -> Just Alignment "MaxByteOffset" -> Just MaxByteOffset "AlignmentId" -> Just AlignmentId "MaxByteOffsetId" -> Just MaxByteOffsetId "NoSignedWrap" -> Just NoSignedWrap "NoUnsignedWrap" -> Just NoUnsignedWrap "ExplicitInterpAMD" -> Just ExplicitInterpAMD "OverrideCoverageNV" -> Just OverrideCoverageNV "PassthroughNV" -> Just PassthroughNV "ViewportRelativeNV" -> Just ViewportRelativeNV "SecondaryViewportRelativeNV" -> Just SecondaryViewportRelativeNV "PerPrimitiveEXT" -> Just PerPrimitiveEXT "PerPrimitiveNV" -> Just PerPrimitiveNV "PerViewNV" -> Just PerViewNV "PerTaskNV" -> Just PerTaskNV "PerVertexKHR" -> Just PerVertexKHR "PerVertexNV" -> Just PerVertexNV "NonUniform" -> Just NonUniform "NonUniformEXT" -> Just NonUniformEXT "RestrictPointer" -> Just RestrictPointer "RestrictPointerEXT" -> Just RestrictPointerEXT "AliasedPointer" -> Just AliasedPointer "AliasedPointerEXT" -> Just AliasedPointerEXT "HitObjectShaderRecordBufferNV" -> Just HitObjectShaderRecordBufferNV "BindlessSamplerNV" -> Just BindlessSamplerNV "BindlessImageNV" -> Just BindlessImageNV "BoundSamplerNV" -> Just BoundSamplerNV "BoundImageNV" -> Just BoundImageNV "SIMTCallINTEL" -> Just SIMTCallINTEL "ReferencedIndirectlyINTEL" -> Just ReferencedIndirectlyINTEL "ClobberINTEL" -> Just ClobberINTEL "SideEffectsINTEL" -> Just SideEffectsINTEL "VectorComputeVariableINTEL" -> Just VectorComputeVariableINTEL "FuncParamIOKindINTEL" -> Just FuncParamIOKindINTEL "VectorComputeFunctionINTEL" -> Just VectorComputeFunctionINTEL "StackCallINTEL" -> Just StackCallINTEL "GlobalVariableOffsetINTEL" -> Just GlobalVariableOffsetINTEL "CounterBuffer" -> Just CounterBuffer "HlslCounterBufferGOOGLE" -> Just HlslCounterBufferGOOGLE "HlslSemanticGOOGLE" -> Just HlslSemanticGOOGLE "UserSemantic" -> Just UserSemantic "UserTypeGOOGLE" -> Just UserTypeGOOGLE "FunctionRoundingModeINTEL" -> Just FunctionRoundingModeINTEL "FunctionDenormModeINTEL" -> Just FunctionDenormModeINTEL "RegisterINTEL" -> Just RegisterINTEL "MemoryINTEL" -> Just MemoryINTEL "NumbanksINTEL" -> Just NumbanksINTEL "BankwidthINTEL" -> Just BankwidthINTEL "MaxPrivateCopiesINTEL" -> Just MaxPrivateCopiesINTEL "SinglepumpINTEL" -> Just SinglepumpINTEL "DoublepumpINTEL" -> Just DoublepumpINTEL "MaxReplicatesINTEL" -> Just MaxReplicatesINTEL "SimpleDualPortINTEL" -> Just SimpleDualPortINTEL "MergeINTEL" -> Just MergeINTEL "BankBitsINTEL" -> Just BankBitsINTEL "ForcePow2DepthINTEL" -> Just ForcePow2DepthINTEL "BurstCoalesceINTEL" -> Just BurstCoalesceINTEL "CacheSizeINTEL" -> Just CacheSizeINTEL "DontStaticallyCoalesceINTEL" -> Just DontStaticallyCoalesceINTEL "PrefetchINTEL" -> Just PrefetchINTEL "StallEnableINTEL" -> Just StallEnableINTEL "FuseLoopsInFunctionINTEL" -> Just FuseLoopsInFunctionINTEL "MathOpDSPModeINTEL" -> Just MathOpDSPModeINTEL "AliasScopeINTEL" -> Just AliasScopeINTEL "NoAliasINTEL" -> Just NoAliasINTEL "InitiationIntervalINTEL" -> Just InitiationIntervalINTEL "MaxConcurrencyINTEL" -> Just MaxConcurrencyINTEL "PipelineEnableINTEL" -> Just PipelineEnableINTEL "BufferLocationINTEL" -> Just BufferLocationINTEL "IOPipeStorageINTEL" -> Just IOPipeStorageINTEL "FunctionFloatingPointModeINTEL" -> Just FunctionFloatingPointModeINTEL "SingleElementVectorINTEL" -> Just SingleElementVectorINTEL "VectorComputeCallableFunctionINTEL" -> Just VectorComputeCallableFunctionINTEL "MediaBlockIOINTEL" -> Just MediaBlockIOINTEL _unknown -> Nothing instance Read Decoration where readPrec = Read.parens do Lex.Ident s <- Read.lexP maybe pfail pure $ fromName s