module Data.SpirV.Enum.ExecutionMode 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 ExecutionMode = ExecutionMode Word32
  deriving (ExecutionMode -> ExecutionMode -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExecutionMode -> ExecutionMode -> Bool
$c/= :: ExecutionMode -> ExecutionMode -> Bool
== :: ExecutionMode -> ExecutionMode -> Bool
$c== :: ExecutionMode -> ExecutionMode -> Bool
Eq, Eq ExecutionMode
ExecutionMode -> ExecutionMode -> Bool
ExecutionMode -> ExecutionMode -> Ordering
ExecutionMode -> ExecutionMode -> ExecutionMode
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ExecutionMode -> ExecutionMode -> ExecutionMode
$cmin :: ExecutionMode -> ExecutionMode -> ExecutionMode
max :: ExecutionMode -> ExecutionMode -> ExecutionMode
$cmax :: ExecutionMode -> ExecutionMode -> ExecutionMode
>= :: ExecutionMode -> ExecutionMode -> Bool
$c>= :: ExecutionMode -> ExecutionMode -> Bool
> :: ExecutionMode -> ExecutionMode -> Bool
$c> :: ExecutionMode -> ExecutionMode -> Bool
<= :: ExecutionMode -> ExecutionMode -> Bool
$c<= :: ExecutionMode -> ExecutionMode -> Bool
< :: ExecutionMode -> ExecutionMode -> Bool
$c< :: ExecutionMode -> ExecutionMode -> Bool
compare :: ExecutionMode -> ExecutionMode -> Ordering
$ccompare :: ExecutionMode -> ExecutionMode -> Ordering
Ord, Ptr ExecutionMode -> IO ExecutionMode
Ptr ExecutionMode -> Int -> IO ExecutionMode
Ptr ExecutionMode -> Int -> ExecutionMode -> IO ()
Ptr ExecutionMode -> ExecutionMode -> IO ()
ExecutionMode -> Int
forall b. Ptr b -> Int -> IO ExecutionMode
forall b. Ptr b -> Int -> ExecutionMode -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr ExecutionMode -> ExecutionMode -> IO ()
$cpoke :: Ptr ExecutionMode -> ExecutionMode -> IO ()
peek :: Ptr ExecutionMode -> IO ExecutionMode
$cpeek :: Ptr ExecutionMode -> IO ExecutionMode
pokeByteOff :: forall b. Ptr b -> Int -> ExecutionMode -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ExecutionMode -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO ExecutionMode
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ExecutionMode
pokeElemOff :: Ptr ExecutionMode -> Int -> ExecutionMode -> IO ()
$cpokeElemOff :: Ptr ExecutionMode -> Int -> ExecutionMode -> IO ()
peekElemOff :: Ptr ExecutionMode -> Int -> IO ExecutionMode
$cpeekElemOff :: Ptr ExecutionMode -> Int -> IO ExecutionMode
alignment :: ExecutionMode -> Int
$calignment :: ExecutionMode -> Int
sizeOf :: ExecutionMode -> Int
$csizeOf :: ExecutionMode -> Int
Storable)

pattern Invocations :: ExecutionMode
pattern $bInvocations :: ExecutionMode
$mInvocations :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
Invocations = ExecutionMode 0

pattern SpacingEqual :: ExecutionMode
pattern $bSpacingEqual :: ExecutionMode
$mSpacingEqual :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SpacingEqual = ExecutionMode 1

pattern SpacingFractionalEven :: ExecutionMode
pattern $bSpacingFractionalEven :: ExecutionMode
$mSpacingFractionalEven :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SpacingFractionalEven = ExecutionMode 2

pattern SpacingFractionalOdd :: ExecutionMode
pattern $bSpacingFractionalOdd :: ExecutionMode
$mSpacingFractionalOdd :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SpacingFractionalOdd = ExecutionMode 3

pattern VertexOrderCw :: ExecutionMode
pattern $bVertexOrderCw :: ExecutionMode
$mVertexOrderCw :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
VertexOrderCw = ExecutionMode 4

pattern VertexOrderCcw :: ExecutionMode
pattern $bVertexOrderCcw :: ExecutionMode
$mVertexOrderCcw :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
VertexOrderCcw = ExecutionMode 5

pattern PixelCenterInteger :: ExecutionMode
pattern $bPixelCenterInteger :: ExecutionMode
$mPixelCenterInteger :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
PixelCenterInteger = ExecutionMode 6

pattern OriginUpperLeft :: ExecutionMode
pattern $bOriginUpperLeft :: ExecutionMode
$mOriginUpperLeft :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OriginUpperLeft = ExecutionMode 7

pattern OriginLowerLeft :: ExecutionMode
pattern $bOriginLowerLeft :: ExecutionMode
$mOriginLowerLeft :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OriginLowerLeft = ExecutionMode 8

pattern EarlyFragmentTests :: ExecutionMode
pattern $bEarlyFragmentTests :: ExecutionMode
$mEarlyFragmentTests :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
EarlyFragmentTests = ExecutionMode 9

pattern PointMode :: ExecutionMode
pattern $bPointMode :: ExecutionMode
$mPointMode :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
PointMode = ExecutionMode 10

pattern Xfb :: ExecutionMode
pattern $bXfb :: ExecutionMode
$mXfb :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
Xfb = ExecutionMode 11

pattern DepthReplacing :: ExecutionMode
pattern $bDepthReplacing :: ExecutionMode
$mDepthReplacing :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DepthReplacing = ExecutionMode 12

pattern DepthGreater :: ExecutionMode
pattern $bDepthGreater :: ExecutionMode
$mDepthGreater :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DepthGreater = ExecutionMode 14

pattern DepthLess :: ExecutionMode
pattern $bDepthLess :: ExecutionMode
$mDepthLess :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DepthLess = ExecutionMode 15

pattern DepthUnchanged :: ExecutionMode
pattern $bDepthUnchanged :: ExecutionMode
$mDepthUnchanged :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DepthUnchanged = ExecutionMode 16

pattern LocalSize :: ExecutionMode
pattern $bLocalSize :: ExecutionMode
$mLocalSize :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
LocalSize = ExecutionMode 17

pattern LocalSizeHint :: ExecutionMode
pattern $bLocalSizeHint :: ExecutionMode
$mLocalSizeHint :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
LocalSizeHint = ExecutionMode 18

pattern InputPoints :: ExecutionMode
pattern $bInputPoints :: ExecutionMode
$mInputPoints :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
InputPoints = ExecutionMode 19

pattern InputLines :: ExecutionMode
pattern $bInputLines :: ExecutionMode
$mInputLines :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
InputLines = ExecutionMode 20

pattern InputLinesAdjacency :: ExecutionMode
pattern $bInputLinesAdjacency :: ExecutionMode
$mInputLinesAdjacency :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
InputLinesAdjacency = ExecutionMode 21

pattern Triangles :: ExecutionMode
pattern $bTriangles :: ExecutionMode
$mTriangles :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
Triangles = ExecutionMode 22

pattern InputTrianglesAdjacency :: ExecutionMode
pattern $bInputTrianglesAdjacency :: ExecutionMode
$mInputTrianglesAdjacency :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
InputTrianglesAdjacency = ExecutionMode 23

pattern Quads :: ExecutionMode
pattern $bQuads :: ExecutionMode
$mQuads :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
Quads = ExecutionMode 24

pattern Isolines :: ExecutionMode
pattern $bIsolines :: ExecutionMode
$mIsolines :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
Isolines = ExecutionMode 25

pattern OutputVertices :: ExecutionMode
pattern $bOutputVertices :: ExecutionMode
$mOutputVertices :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputVertices = ExecutionMode 26

pattern OutputPoints :: ExecutionMode
pattern $bOutputPoints :: ExecutionMode
$mOutputPoints :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputPoints = ExecutionMode 27

pattern OutputLineStrip :: ExecutionMode
pattern $bOutputLineStrip :: ExecutionMode
$mOutputLineStrip :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputLineStrip = ExecutionMode 28

pattern OutputTriangleStrip :: ExecutionMode
pattern $bOutputTriangleStrip :: ExecutionMode
$mOutputTriangleStrip :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputTriangleStrip = ExecutionMode 29

pattern VecTypeHint :: ExecutionMode
pattern $bVecTypeHint :: ExecutionMode
$mVecTypeHint :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
VecTypeHint = ExecutionMode 30

pattern ContractionOff :: ExecutionMode
pattern $bContractionOff :: ExecutionMode
$mContractionOff :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
ContractionOff = ExecutionMode 31

pattern Initializer :: ExecutionMode
pattern $bInitializer :: ExecutionMode
$mInitializer :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
Initializer = ExecutionMode 33

pattern Finalizer :: ExecutionMode
pattern $bFinalizer :: ExecutionMode
$mFinalizer :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
Finalizer = ExecutionMode 34

pattern SubgroupSize :: ExecutionMode
pattern $bSubgroupSize :: ExecutionMode
$mSubgroupSize :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SubgroupSize = ExecutionMode 35

pattern SubgroupsPerWorkgroup :: ExecutionMode
pattern $bSubgroupsPerWorkgroup :: ExecutionMode
$mSubgroupsPerWorkgroup :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SubgroupsPerWorkgroup = ExecutionMode 36

pattern SubgroupsPerWorkgroupId :: ExecutionMode
pattern $bSubgroupsPerWorkgroupId :: ExecutionMode
$mSubgroupsPerWorkgroupId :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SubgroupsPerWorkgroupId = ExecutionMode 37

pattern LocalSizeId :: ExecutionMode
pattern $bLocalSizeId :: ExecutionMode
$mLocalSizeId :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
LocalSizeId = ExecutionMode 38

pattern LocalSizeHintId :: ExecutionMode
pattern $bLocalSizeHintId :: ExecutionMode
$mLocalSizeHintId :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
LocalSizeHintId = ExecutionMode 39

pattern SubgroupUniformControlFlowKHR :: ExecutionMode
pattern $bSubgroupUniformControlFlowKHR :: ExecutionMode
$mSubgroupUniformControlFlowKHR :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SubgroupUniformControlFlowKHR = ExecutionMode 4421

pattern PostDepthCoverage :: ExecutionMode
pattern $bPostDepthCoverage :: ExecutionMode
$mPostDepthCoverage :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
PostDepthCoverage = ExecutionMode 4446

pattern DenormPreserve :: ExecutionMode
pattern $bDenormPreserve :: ExecutionMode
$mDenormPreserve :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DenormPreserve = ExecutionMode 4459

pattern DenormFlushToZero :: ExecutionMode
pattern $bDenormFlushToZero :: ExecutionMode
$mDenormFlushToZero :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DenormFlushToZero = ExecutionMode 4460

pattern SignedZeroInfNanPreserve :: ExecutionMode
pattern $bSignedZeroInfNanPreserve :: ExecutionMode
$mSignedZeroInfNanPreserve :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SignedZeroInfNanPreserve = ExecutionMode 4461

pattern RoundingModeRTE :: ExecutionMode
pattern $bRoundingModeRTE :: ExecutionMode
$mRoundingModeRTE :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
RoundingModeRTE = ExecutionMode 4462

pattern RoundingModeRTZ :: ExecutionMode
pattern $bRoundingModeRTZ :: ExecutionMode
$mRoundingModeRTZ :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
RoundingModeRTZ = ExecutionMode 4463

pattern EarlyAndLateFragmentTestsAMD :: ExecutionMode
pattern $bEarlyAndLateFragmentTestsAMD :: ExecutionMode
$mEarlyAndLateFragmentTestsAMD :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
EarlyAndLateFragmentTestsAMD = ExecutionMode 5017

pattern StencilRefReplacingEXT :: ExecutionMode
pattern $bStencilRefReplacingEXT :: ExecutionMode
$mStencilRefReplacingEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StencilRefReplacingEXT = ExecutionMode 5027

pattern StencilRefUnchangedFrontAMD :: ExecutionMode
pattern $bStencilRefUnchangedFrontAMD :: ExecutionMode
$mStencilRefUnchangedFrontAMD :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StencilRefUnchangedFrontAMD = ExecutionMode 5079

pattern StencilRefGreaterFrontAMD :: ExecutionMode
pattern $bStencilRefGreaterFrontAMD :: ExecutionMode
$mStencilRefGreaterFrontAMD :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StencilRefGreaterFrontAMD = ExecutionMode 5080

pattern StencilRefLessFrontAMD :: ExecutionMode
pattern $bStencilRefLessFrontAMD :: ExecutionMode
$mStencilRefLessFrontAMD :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StencilRefLessFrontAMD = ExecutionMode 5081

pattern StencilRefUnchangedBackAMD :: ExecutionMode
pattern $bStencilRefUnchangedBackAMD :: ExecutionMode
$mStencilRefUnchangedBackAMD :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StencilRefUnchangedBackAMD = ExecutionMode 5082

pattern StencilRefGreaterBackAMD :: ExecutionMode
pattern $bStencilRefGreaterBackAMD :: ExecutionMode
$mStencilRefGreaterBackAMD :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StencilRefGreaterBackAMD = ExecutionMode 5083

pattern StencilRefLessBackAMD :: ExecutionMode
pattern $bStencilRefLessBackAMD :: ExecutionMode
$mStencilRefLessBackAMD :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StencilRefLessBackAMD = ExecutionMode 5084

pattern OutputLinesEXT :: ExecutionMode
pattern $bOutputLinesEXT :: ExecutionMode
$mOutputLinesEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputLinesEXT = ExecutionMode 5269

pattern OutputLinesNV :: ExecutionMode
pattern $bOutputLinesNV :: ExecutionMode
$mOutputLinesNV :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputLinesNV = ExecutionMode 5269

pattern OutputPrimitivesEXT :: ExecutionMode
pattern $bOutputPrimitivesEXT :: ExecutionMode
$mOutputPrimitivesEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputPrimitivesEXT = ExecutionMode 5270

pattern OutputPrimitivesNV :: ExecutionMode
pattern $bOutputPrimitivesNV :: ExecutionMode
$mOutputPrimitivesNV :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputPrimitivesNV = ExecutionMode 5270

pattern DerivativeGroupQuadsNV :: ExecutionMode
pattern $bDerivativeGroupQuadsNV :: ExecutionMode
$mDerivativeGroupQuadsNV :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DerivativeGroupQuadsNV = ExecutionMode 5289

pattern DerivativeGroupLinearNV :: ExecutionMode
pattern $bDerivativeGroupLinearNV :: ExecutionMode
$mDerivativeGroupLinearNV :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
DerivativeGroupLinearNV = ExecutionMode 5290

pattern OutputTrianglesEXT :: ExecutionMode
pattern $bOutputTrianglesEXT :: ExecutionMode
$mOutputTrianglesEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputTrianglesEXT = ExecutionMode 5298

pattern OutputTrianglesNV :: ExecutionMode
pattern $bOutputTrianglesNV :: ExecutionMode
$mOutputTrianglesNV :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
OutputTrianglesNV = ExecutionMode 5298

pattern PixelInterlockOrderedEXT :: ExecutionMode
pattern $bPixelInterlockOrderedEXT :: ExecutionMode
$mPixelInterlockOrderedEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
PixelInterlockOrderedEXT = ExecutionMode 5366

pattern PixelInterlockUnorderedEXT :: ExecutionMode
pattern $bPixelInterlockUnorderedEXT :: ExecutionMode
$mPixelInterlockUnorderedEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
PixelInterlockUnorderedEXT = ExecutionMode 5367

pattern SampleInterlockOrderedEXT :: ExecutionMode
pattern $bSampleInterlockOrderedEXT :: ExecutionMode
$mSampleInterlockOrderedEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SampleInterlockOrderedEXT = ExecutionMode 5368

pattern SampleInterlockUnorderedEXT :: ExecutionMode
pattern $bSampleInterlockUnorderedEXT :: ExecutionMode
$mSampleInterlockUnorderedEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SampleInterlockUnorderedEXT = ExecutionMode 5369

pattern ShadingRateInterlockOrderedEXT :: ExecutionMode
pattern $bShadingRateInterlockOrderedEXT :: ExecutionMode
$mShadingRateInterlockOrderedEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
ShadingRateInterlockOrderedEXT = ExecutionMode 5370

pattern ShadingRateInterlockUnorderedEXT :: ExecutionMode
pattern $bShadingRateInterlockUnorderedEXT :: ExecutionMode
$mShadingRateInterlockUnorderedEXT :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
ShadingRateInterlockUnorderedEXT = ExecutionMode 5371

pattern SharedLocalMemorySizeINTEL :: ExecutionMode
pattern $bSharedLocalMemorySizeINTEL :: ExecutionMode
$mSharedLocalMemorySizeINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SharedLocalMemorySizeINTEL = ExecutionMode 5618

pattern RoundingModeRTPINTEL :: ExecutionMode
pattern $bRoundingModeRTPINTEL :: ExecutionMode
$mRoundingModeRTPINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
RoundingModeRTPINTEL = ExecutionMode 5620

pattern RoundingModeRTNINTEL :: ExecutionMode
pattern $bRoundingModeRTNINTEL :: ExecutionMode
$mRoundingModeRTNINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
RoundingModeRTNINTEL = ExecutionMode 5621

pattern FloatingPointModeALTINTEL :: ExecutionMode
pattern $bFloatingPointModeALTINTEL :: ExecutionMode
$mFloatingPointModeALTINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
FloatingPointModeALTINTEL = ExecutionMode 5622

pattern FloatingPointModeIEEEINTEL :: ExecutionMode
pattern $bFloatingPointModeIEEEINTEL :: ExecutionMode
$mFloatingPointModeIEEEINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
FloatingPointModeIEEEINTEL = ExecutionMode 5623

pattern MaxWorkgroupSizeINTEL :: ExecutionMode
pattern $bMaxWorkgroupSizeINTEL :: ExecutionMode
$mMaxWorkgroupSizeINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
MaxWorkgroupSizeINTEL = ExecutionMode 5893

pattern MaxWorkDimINTEL :: ExecutionMode
pattern $bMaxWorkDimINTEL :: ExecutionMode
$mMaxWorkDimINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
MaxWorkDimINTEL = ExecutionMode 5894

pattern NoGlobalOffsetINTEL :: ExecutionMode
pattern $bNoGlobalOffsetINTEL :: ExecutionMode
$mNoGlobalOffsetINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
NoGlobalOffsetINTEL = ExecutionMode 5895

pattern NumSIMDWorkitemsINTEL :: ExecutionMode
pattern $bNumSIMDWorkitemsINTEL :: ExecutionMode
$mNumSIMDWorkitemsINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
NumSIMDWorkitemsINTEL = ExecutionMode 5896

pattern SchedulerTargetFmaxMhzINTEL :: ExecutionMode
pattern $bSchedulerTargetFmaxMhzINTEL :: ExecutionMode
$mSchedulerTargetFmaxMhzINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
SchedulerTargetFmaxMhzINTEL = ExecutionMode 5903

pattern StreamingInterfaceINTEL :: ExecutionMode
pattern $bStreamingInterfaceINTEL :: ExecutionMode
$mStreamingInterfaceINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
StreamingInterfaceINTEL = ExecutionMode 6154

pattern NamedBarrierCountINTEL :: ExecutionMode
pattern $bNamedBarrierCountINTEL :: ExecutionMode
$mNamedBarrierCountINTEL :: forall {r}. ExecutionMode -> ((# #) -> r) -> ((# #) -> r) -> r
NamedBarrierCountINTEL = ExecutionMode 6417

toName :: IsString a => ExecutionMode -> a
toName :: forall a. IsString a => ExecutionMode -> a
toName ExecutionMode
x = case ExecutionMode
x of
  ExecutionMode
Invocations -> a
"Invocations"
  ExecutionMode
SpacingEqual -> a
"SpacingEqual"
  ExecutionMode
SpacingFractionalEven -> a
"SpacingFractionalEven"
  ExecutionMode
SpacingFractionalOdd -> a
"SpacingFractionalOdd"
  ExecutionMode
VertexOrderCw -> a
"VertexOrderCw"
  ExecutionMode
VertexOrderCcw -> a
"VertexOrderCcw"
  ExecutionMode
PixelCenterInteger -> a
"PixelCenterInteger"
  ExecutionMode
OriginUpperLeft -> a
"OriginUpperLeft"
  ExecutionMode
OriginLowerLeft -> a
"OriginLowerLeft"
  ExecutionMode
EarlyFragmentTests -> a
"EarlyFragmentTests"
  ExecutionMode
PointMode -> a
"PointMode"
  ExecutionMode
Xfb -> a
"Xfb"
  ExecutionMode
DepthReplacing -> a
"DepthReplacing"
  ExecutionMode
DepthGreater -> a
"DepthGreater"
  ExecutionMode
DepthLess -> a
"DepthLess"
  ExecutionMode
DepthUnchanged -> a
"DepthUnchanged"
  ExecutionMode
LocalSize -> a
"LocalSize"
  ExecutionMode
LocalSizeHint -> a
"LocalSizeHint"
  ExecutionMode
InputPoints -> a
"InputPoints"
  ExecutionMode
InputLines -> a
"InputLines"
  ExecutionMode
InputLinesAdjacency -> a
"InputLinesAdjacency"
  ExecutionMode
Triangles -> a
"Triangles"
  ExecutionMode
InputTrianglesAdjacency -> a
"InputTrianglesAdjacency"
  ExecutionMode
Quads -> a
"Quads"
  ExecutionMode
Isolines -> a
"Isolines"
  ExecutionMode
OutputVertices -> a
"OutputVertices"
  ExecutionMode
OutputPoints -> a
"OutputPoints"
  ExecutionMode
OutputLineStrip -> a
"OutputLineStrip"
  ExecutionMode
OutputTriangleStrip -> a
"OutputTriangleStrip"
  ExecutionMode
VecTypeHint -> a
"VecTypeHint"
  ExecutionMode
ContractionOff -> a
"ContractionOff"
  ExecutionMode
Initializer -> a
"Initializer"
  ExecutionMode
Finalizer -> a
"Finalizer"
  ExecutionMode
SubgroupSize -> a
"SubgroupSize"
  ExecutionMode
SubgroupsPerWorkgroup -> a
"SubgroupsPerWorkgroup"
  ExecutionMode
SubgroupsPerWorkgroupId -> a
"SubgroupsPerWorkgroupId"
  ExecutionMode
LocalSizeId -> a
"LocalSizeId"
  ExecutionMode
LocalSizeHintId -> a
"LocalSizeHintId"
  ExecutionMode
SubgroupUniformControlFlowKHR -> a
"SubgroupUniformControlFlowKHR"
  ExecutionMode
PostDepthCoverage -> a
"PostDepthCoverage"
  ExecutionMode
DenormPreserve -> a
"DenormPreserve"
  ExecutionMode
DenormFlushToZero -> a
"DenormFlushToZero"
  ExecutionMode
SignedZeroInfNanPreserve -> a
"SignedZeroInfNanPreserve"
  ExecutionMode
RoundingModeRTE -> a
"RoundingModeRTE"
  ExecutionMode
RoundingModeRTZ -> a
"RoundingModeRTZ"
  ExecutionMode
EarlyAndLateFragmentTestsAMD -> a
"EarlyAndLateFragmentTestsAMD"
  ExecutionMode
StencilRefReplacingEXT -> a
"StencilRefReplacingEXT"
  ExecutionMode
StencilRefUnchangedFrontAMD -> a
"StencilRefUnchangedFrontAMD"
  ExecutionMode
StencilRefGreaterFrontAMD -> a
"StencilRefGreaterFrontAMD"
  ExecutionMode
StencilRefLessFrontAMD -> a
"StencilRefLessFrontAMD"
  ExecutionMode
StencilRefUnchangedBackAMD -> a
"StencilRefUnchangedBackAMD"
  ExecutionMode
StencilRefGreaterBackAMD -> a
"StencilRefGreaterBackAMD"
  ExecutionMode
StencilRefLessBackAMD -> a
"StencilRefLessBackAMD"
  ExecutionMode
OutputLinesEXT -> a
"OutputLinesEXT"
  ExecutionMode
OutputLinesNV -> a
"OutputLinesNV"
  ExecutionMode
OutputPrimitivesEXT -> a
"OutputPrimitivesEXT"
  ExecutionMode
OutputPrimitivesNV -> a
"OutputPrimitivesNV"
  ExecutionMode
DerivativeGroupQuadsNV -> a
"DerivativeGroupQuadsNV"
  ExecutionMode
DerivativeGroupLinearNV -> a
"DerivativeGroupLinearNV"
  ExecutionMode
OutputTrianglesEXT -> a
"OutputTrianglesEXT"
  ExecutionMode
OutputTrianglesNV -> a
"OutputTrianglesNV"
  ExecutionMode
PixelInterlockOrderedEXT -> a
"PixelInterlockOrderedEXT"
  ExecutionMode
PixelInterlockUnorderedEXT -> a
"PixelInterlockUnorderedEXT"
  ExecutionMode
SampleInterlockOrderedEXT -> a
"SampleInterlockOrderedEXT"
  ExecutionMode
SampleInterlockUnorderedEXT -> a
"SampleInterlockUnorderedEXT"
  ExecutionMode
ShadingRateInterlockOrderedEXT -> a
"ShadingRateInterlockOrderedEXT"
  ExecutionMode
ShadingRateInterlockUnorderedEXT -> a
"ShadingRateInterlockUnorderedEXT"
  ExecutionMode
SharedLocalMemorySizeINTEL -> a
"SharedLocalMemorySizeINTEL"
  ExecutionMode
RoundingModeRTPINTEL -> a
"RoundingModeRTPINTEL"
  ExecutionMode
RoundingModeRTNINTEL -> a
"RoundingModeRTNINTEL"
  ExecutionMode
FloatingPointModeALTINTEL -> a
"FloatingPointModeALTINTEL"
  ExecutionMode
FloatingPointModeIEEEINTEL -> a
"FloatingPointModeIEEEINTEL"
  ExecutionMode
MaxWorkgroupSizeINTEL -> a
"MaxWorkgroupSizeINTEL"
  ExecutionMode
MaxWorkDimINTEL -> a
"MaxWorkDimINTEL"
  ExecutionMode
NoGlobalOffsetINTEL -> a
"NoGlobalOffsetINTEL"
  ExecutionMode
NumSIMDWorkitemsINTEL -> a
"NumSIMDWorkitemsINTEL"
  ExecutionMode
SchedulerTargetFmaxMhzINTEL -> a
"SchedulerTargetFmaxMhzINTEL"
  ExecutionMode
StreamingInterfaceINTEL -> a
"StreamingInterfaceINTEL"
  ExecutionMode
NamedBarrierCountINTEL -> a
"NamedBarrierCountINTEL"
  ExecutionMode
unknown -> forall a. IsString a => [Char] -> a
fromString forall a b. (a -> b) -> a -> b
$ [Char]
"ExecutionMode " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> [Char]
show ExecutionMode
unknown

instance Show ExecutionMode where
  show :: ExecutionMode -> [Char]
show = forall a. IsString a => ExecutionMode -> a
toName

fromName :: (IsString a, Eq a) => a -> Maybe ExecutionMode
fromName :: forall a. (IsString a, Eq a) => a -> Maybe ExecutionMode
fromName a
x = case a
x of
  a
"Invocations" -> forall a. a -> Maybe a
Just ExecutionMode
Invocations
  a
"SpacingEqual" -> forall a. a -> Maybe a
Just ExecutionMode
SpacingEqual
  a
"SpacingFractionalEven" -> forall a. a -> Maybe a
Just ExecutionMode
SpacingFractionalEven
  a
"SpacingFractionalOdd" -> forall a. a -> Maybe a
Just ExecutionMode
SpacingFractionalOdd
  a
"VertexOrderCw" -> forall a. a -> Maybe a
Just ExecutionMode
VertexOrderCw
  a
"VertexOrderCcw" -> forall a. a -> Maybe a
Just ExecutionMode
VertexOrderCcw
  a
"PixelCenterInteger" -> forall a. a -> Maybe a
Just ExecutionMode
PixelCenterInteger
  a
"OriginUpperLeft" -> forall a. a -> Maybe a
Just ExecutionMode
OriginUpperLeft
  a
"OriginLowerLeft" -> forall a. a -> Maybe a
Just ExecutionMode
OriginLowerLeft
  a
"EarlyFragmentTests" -> forall a. a -> Maybe a
Just ExecutionMode
EarlyFragmentTests
  a
"PointMode" -> forall a. a -> Maybe a
Just ExecutionMode
PointMode
  a
"Xfb" -> forall a. a -> Maybe a
Just ExecutionMode
Xfb
  a
"DepthReplacing" -> forall a. a -> Maybe a
Just ExecutionMode
DepthReplacing
  a
"DepthGreater" -> forall a. a -> Maybe a
Just ExecutionMode
DepthGreater
  a
"DepthLess" -> forall a. a -> Maybe a
Just ExecutionMode
DepthLess
  a
"DepthUnchanged" -> forall a. a -> Maybe a
Just ExecutionMode
DepthUnchanged
  a
"LocalSize" -> forall a. a -> Maybe a
Just ExecutionMode
LocalSize
  a
"LocalSizeHint" -> forall a. a -> Maybe a
Just ExecutionMode
LocalSizeHint
  a
"InputPoints" -> forall a. a -> Maybe a
Just ExecutionMode
InputPoints
  a
"InputLines" -> forall a. a -> Maybe a
Just ExecutionMode
InputLines
  a
"InputLinesAdjacency" -> forall a. a -> Maybe a
Just ExecutionMode
InputLinesAdjacency
  a
"Triangles" -> forall a. a -> Maybe a
Just ExecutionMode
Triangles
  a
"InputTrianglesAdjacency" -> forall a. a -> Maybe a
Just ExecutionMode
InputTrianglesAdjacency
  a
"Quads" -> forall a. a -> Maybe a
Just ExecutionMode
Quads
  a
"Isolines" -> forall a. a -> Maybe a
Just ExecutionMode
Isolines
  a
"OutputVertices" -> forall a. a -> Maybe a
Just ExecutionMode
OutputVertices
  a
"OutputPoints" -> forall a. a -> Maybe a
Just ExecutionMode
OutputPoints
  a
"OutputLineStrip" -> forall a. a -> Maybe a
Just ExecutionMode
OutputLineStrip
  a
"OutputTriangleStrip" -> forall a. a -> Maybe a
Just ExecutionMode
OutputTriangleStrip
  a
"VecTypeHint" -> forall a. a -> Maybe a
Just ExecutionMode
VecTypeHint
  a
"ContractionOff" -> forall a. a -> Maybe a
Just ExecutionMode
ContractionOff
  a
"Initializer" -> forall a. a -> Maybe a
Just ExecutionMode
Initializer
  a
"Finalizer" -> forall a. a -> Maybe a
Just ExecutionMode
Finalizer
  a
"SubgroupSize" -> forall a. a -> Maybe a
Just ExecutionMode
SubgroupSize
  a
"SubgroupsPerWorkgroup" -> forall a. a -> Maybe a
Just ExecutionMode
SubgroupsPerWorkgroup
  a
"SubgroupsPerWorkgroupId" -> forall a. a -> Maybe a
Just ExecutionMode
SubgroupsPerWorkgroupId
  a
"LocalSizeId" -> forall a. a -> Maybe a
Just ExecutionMode
LocalSizeId
  a
"LocalSizeHintId" -> forall a. a -> Maybe a
Just ExecutionMode
LocalSizeHintId
  a
"SubgroupUniformControlFlowKHR" -> forall a. a -> Maybe a
Just ExecutionMode
SubgroupUniformControlFlowKHR
  a
"PostDepthCoverage" -> forall a. a -> Maybe a
Just ExecutionMode
PostDepthCoverage
  a
"DenormPreserve" -> forall a. a -> Maybe a
Just ExecutionMode
DenormPreserve
  a
"DenormFlushToZero" -> forall a. a -> Maybe a
Just ExecutionMode
DenormFlushToZero
  a
"SignedZeroInfNanPreserve" -> forall a. a -> Maybe a
Just ExecutionMode
SignedZeroInfNanPreserve
  a
"RoundingModeRTE" -> forall a. a -> Maybe a
Just ExecutionMode
RoundingModeRTE
  a
"RoundingModeRTZ" -> forall a. a -> Maybe a
Just ExecutionMode
RoundingModeRTZ
  a
"EarlyAndLateFragmentTestsAMD" -> forall a. a -> Maybe a
Just ExecutionMode
EarlyAndLateFragmentTestsAMD
  a
"StencilRefReplacingEXT" -> forall a. a -> Maybe a
Just ExecutionMode
StencilRefReplacingEXT
  a
"StencilRefUnchangedFrontAMD" -> forall a. a -> Maybe a
Just ExecutionMode
StencilRefUnchangedFrontAMD
  a
"StencilRefGreaterFrontAMD" -> forall a. a -> Maybe a
Just ExecutionMode
StencilRefGreaterFrontAMD
  a
"StencilRefLessFrontAMD" -> forall a. a -> Maybe a
Just ExecutionMode
StencilRefLessFrontAMD
  a
"StencilRefUnchangedBackAMD" -> forall a. a -> Maybe a
Just ExecutionMode
StencilRefUnchangedBackAMD
  a
"StencilRefGreaterBackAMD" -> forall a. a -> Maybe a
Just ExecutionMode
StencilRefGreaterBackAMD
  a
"StencilRefLessBackAMD" -> forall a. a -> Maybe a
Just ExecutionMode
StencilRefLessBackAMD
  a
"OutputLinesEXT" -> forall a. a -> Maybe a
Just ExecutionMode
OutputLinesEXT
  a
"OutputLinesNV" -> forall a. a -> Maybe a
Just ExecutionMode
OutputLinesNV
  a
"OutputPrimitivesEXT" -> forall a. a -> Maybe a
Just ExecutionMode
OutputPrimitivesEXT
  a
"OutputPrimitivesNV" -> forall a. a -> Maybe a
Just ExecutionMode
OutputPrimitivesNV
  a
"DerivativeGroupQuadsNV" -> forall a. a -> Maybe a
Just ExecutionMode
DerivativeGroupQuadsNV
  a
"DerivativeGroupLinearNV" -> forall a. a -> Maybe a
Just ExecutionMode
DerivativeGroupLinearNV
  a
"OutputTrianglesEXT" -> forall a. a -> Maybe a
Just ExecutionMode
OutputTrianglesEXT
  a
"OutputTrianglesNV" -> forall a. a -> Maybe a
Just ExecutionMode
OutputTrianglesNV
  a
"PixelInterlockOrderedEXT" -> forall a. a -> Maybe a
Just ExecutionMode
PixelInterlockOrderedEXT
  a
"PixelInterlockUnorderedEXT" -> forall a. a -> Maybe a
Just ExecutionMode
PixelInterlockUnorderedEXT
  a
"SampleInterlockOrderedEXT" -> forall a. a -> Maybe a
Just ExecutionMode
SampleInterlockOrderedEXT
  a
"SampleInterlockUnorderedEXT" -> forall a. a -> Maybe a
Just ExecutionMode
SampleInterlockUnorderedEXT
  a
"ShadingRateInterlockOrderedEXT" -> forall a. a -> Maybe a
Just ExecutionMode
ShadingRateInterlockOrderedEXT
  a
"ShadingRateInterlockUnorderedEXT" -> forall a. a -> Maybe a
Just ExecutionMode
ShadingRateInterlockUnorderedEXT
  a
"SharedLocalMemorySizeINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
SharedLocalMemorySizeINTEL
  a
"RoundingModeRTPINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
RoundingModeRTPINTEL
  a
"RoundingModeRTNINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
RoundingModeRTNINTEL
  a
"FloatingPointModeALTINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
FloatingPointModeALTINTEL
  a
"FloatingPointModeIEEEINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
FloatingPointModeIEEEINTEL
  a
"MaxWorkgroupSizeINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
MaxWorkgroupSizeINTEL
  a
"MaxWorkDimINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
MaxWorkDimINTEL
  a
"NoGlobalOffsetINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
NoGlobalOffsetINTEL
  a
"NumSIMDWorkitemsINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
NumSIMDWorkitemsINTEL
  a
"SchedulerTargetFmaxMhzINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
SchedulerTargetFmaxMhzINTEL
  a
"StreamingInterfaceINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
StreamingInterfaceINTEL
  a
"NamedBarrierCountINTEL" -> forall a. a -> Maybe a
Just ExecutionMode
NamedBarrierCountINTEL
  a
_unknown -> forall a. Maybe a
Nothing

instance Read ExecutionMode where
  readPrec :: ReadPrec ExecutionMode
readPrec = forall a. ReadPrec a -> ReadPrec a
Read.parens do
    Lex.Ident [Char]
s <- ReadPrec Lexeme
Read.lexP
    forall b a. b -> (a -> b) -> Maybe a -> b
maybe forall a. ReadPrec a
pfail forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall a. (IsString a, Eq a) => a -> Maybe ExecutionMode
fromName [Char]
s