{-# language CPP #-}
module Vulkan.Core11.Enums.SubgroupFeatureFlagBits  ( SubgroupFeatureFlagBits( SUBGROUP_FEATURE_BASIC_BIT
                                                                             , SUBGROUP_FEATURE_VOTE_BIT
                                                                             , SUBGROUP_FEATURE_ARITHMETIC_BIT
                                                                             , SUBGROUP_FEATURE_BALLOT_BIT
                                                                             , SUBGROUP_FEATURE_SHUFFLE_BIT
                                                                             , SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
                                                                             , SUBGROUP_FEATURE_CLUSTERED_BIT
                                                                             , SUBGROUP_FEATURE_QUAD_BIT
                                                                             , SUBGROUP_FEATURE_PARTITIONED_BIT_NV
                                                                             , ..
                                                                             )
                                                    , SubgroupFeatureFlags
                                                    ) where

import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import Numeric (showHex)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Data.Bits (Bits)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Zero (Zero)
-- | VkSubgroupFeatureFlagBits - Enum describing what group operations are
-- supported with subgroup scope
--
-- = See Also
--
-- 'SubgroupFeatureFlags'
newtype SubgroupFeatureFlagBits = SubgroupFeatureFlagBits Flags
  deriving newtype (SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
(SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool)
-> (SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool)
-> Eq SubgroupFeatureFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$c/= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
== :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$c== :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
Eq, Eq SubgroupFeatureFlagBits
Eq SubgroupFeatureFlagBits =>
(SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Ordering)
-> (SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool)
-> (SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool)
-> (SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool)
-> (SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool)
-> (SubgroupFeatureFlagBits
    -> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits
    -> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits)
-> Ord SubgroupFeatureFlagBits
SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Ordering
SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
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 :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$cmin :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
max :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$cmax :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
>= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$c>= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
> :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$c> :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
<= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$c<= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
< :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$c< :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
compare :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Ordering
$ccompare :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Ordering
$cp1Ord :: Eq SubgroupFeatureFlagBits
Ord, Ptr b -> Int -> IO SubgroupFeatureFlagBits
Ptr b -> Int -> SubgroupFeatureFlagBits -> IO ()
Ptr SubgroupFeatureFlagBits -> IO SubgroupFeatureFlagBits
Ptr SubgroupFeatureFlagBits -> Int -> IO SubgroupFeatureFlagBits
Ptr SubgroupFeatureFlagBits
-> Int -> SubgroupFeatureFlagBits -> IO ()
Ptr SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> IO ()
SubgroupFeatureFlagBits -> Int
(SubgroupFeatureFlagBits -> Int)
-> (SubgroupFeatureFlagBits -> Int)
-> (Ptr SubgroupFeatureFlagBits
    -> Int -> IO SubgroupFeatureFlagBits)
-> (Ptr SubgroupFeatureFlagBits
    -> Int -> SubgroupFeatureFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO SubgroupFeatureFlagBits)
-> (forall b. Ptr b -> Int -> SubgroupFeatureFlagBits -> IO ())
-> (Ptr SubgroupFeatureFlagBits -> IO SubgroupFeatureFlagBits)
-> (Ptr SubgroupFeatureFlagBits
    -> SubgroupFeatureFlagBits -> IO ())
-> Storable SubgroupFeatureFlagBits
forall b. Ptr b -> Int -> IO SubgroupFeatureFlagBits
forall b. Ptr b -> Int -> SubgroupFeatureFlagBits -> 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 SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> IO ()
$cpoke :: Ptr SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> IO ()
peek :: Ptr SubgroupFeatureFlagBits -> IO SubgroupFeatureFlagBits
$cpeek :: Ptr SubgroupFeatureFlagBits -> IO SubgroupFeatureFlagBits
pokeByteOff :: Ptr b -> Int -> SubgroupFeatureFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> SubgroupFeatureFlagBits -> IO ()
peekByteOff :: Ptr b -> Int -> IO SubgroupFeatureFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SubgroupFeatureFlagBits
pokeElemOff :: Ptr SubgroupFeatureFlagBits
-> Int -> SubgroupFeatureFlagBits -> IO ()
$cpokeElemOff :: Ptr SubgroupFeatureFlagBits
-> Int -> SubgroupFeatureFlagBits -> IO ()
peekElemOff :: Ptr SubgroupFeatureFlagBits -> Int -> IO SubgroupFeatureFlagBits
$cpeekElemOff :: Ptr SubgroupFeatureFlagBits -> Int -> IO SubgroupFeatureFlagBits
alignment :: SubgroupFeatureFlagBits -> Int
$calignment :: SubgroupFeatureFlagBits -> Int
sizeOf :: SubgroupFeatureFlagBits -> Int
$csizeOf :: SubgroupFeatureFlagBits -> Int
Storable, SubgroupFeatureFlagBits
SubgroupFeatureFlagBits -> Zero SubgroupFeatureFlagBits
forall a. a -> Zero a
zero :: SubgroupFeatureFlagBits
$czero :: SubgroupFeatureFlagBits
Zero, Eq SubgroupFeatureFlagBits
SubgroupFeatureFlagBits
Eq SubgroupFeatureFlagBits =>
(SubgroupFeatureFlagBits
 -> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits
    -> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits
    -> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> SubgroupFeatureFlagBits
-> (Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> Bool)
-> (SubgroupFeatureFlagBits -> Maybe Int)
-> (SubgroupFeatureFlagBits -> Int)
-> (SubgroupFeatureFlagBits -> Bool)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits)
-> (SubgroupFeatureFlagBits -> Int)
-> Bits SubgroupFeatureFlagBits
Int -> SubgroupFeatureFlagBits
SubgroupFeatureFlagBits -> Bool
SubgroupFeatureFlagBits -> Int
SubgroupFeatureFlagBits -> Maybe Int
SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
SubgroupFeatureFlagBits -> Int -> Bool
SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: SubgroupFeatureFlagBits -> Int
$cpopCount :: SubgroupFeatureFlagBits -> Int
rotateR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$crotateR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
rotateL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$crotateL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
unsafeShiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cunsafeShiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
shiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cshiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
unsafeShiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cunsafeShiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
shiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cshiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
isSigned :: SubgroupFeatureFlagBits -> Bool
$cisSigned :: SubgroupFeatureFlagBits -> Bool
bitSize :: SubgroupFeatureFlagBits -> Int
$cbitSize :: SubgroupFeatureFlagBits -> Int
bitSizeMaybe :: SubgroupFeatureFlagBits -> Maybe Int
$cbitSizeMaybe :: SubgroupFeatureFlagBits -> Maybe Int
testBit :: SubgroupFeatureFlagBits -> Int -> Bool
$ctestBit :: SubgroupFeatureFlagBits -> Int -> Bool
complementBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$ccomplementBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
clearBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cclearBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
setBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$csetBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
bit :: Int -> SubgroupFeatureFlagBits
$cbit :: Int -> SubgroupFeatureFlagBits
zeroBits :: SubgroupFeatureFlagBits
$czeroBits :: SubgroupFeatureFlagBits
rotate :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$crotate :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
shift :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cshift :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
complement :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$ccomplement :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
xor :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$cxor :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
.|. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$c.|. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
.&. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$c.&. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$cp1Bits :: Eq SubgroupFeatureFlagBits
Bits)

-- | 'SUBGROUP_FEATURE_BASIC_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniform@ capability.
pattern $bSUBGROUP_FEATURE_BASIC_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_BASIC_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_BASIC_BIT = SubgroupFeatureFlagBits 0x00000001
-- | 'SUBGROUP_FEATURE_VOTE_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformVote@ capability.
pattern $bSUBGROUP_FEATURE_VOTE_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_VOTE_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_VOTE_BIT = SubgroupFeatureFlagBits 0x00000002
-- | 'SUBGROUP_FEATURE_ARITHMETIC_BIT' specifies the device will accept
-- SPIR-V shader modules containing the @GroupNonUniformArithmetic@
-- capability.
pattern $bSUBGROUP_FEATURE_ARITHMETIC_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_ARITHMETIC_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_ARITHMETIC_BIT = SubgroupFeatureFlagBits 0x00000004
-- | 'SUBGROUP_FEATURE_BALLOT_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformBallot@ capability.
pattern $bSUBGROUP_FEATURE_BALLOT_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_BALLOT_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_BALLOT_BIT = SubgroupFeatureFlagBits 0x00000008
-- | 'SUBGROUP_FEATURE_SHUFFLE_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformShuffle@ capability.
pattern $bSUBGROUP_FEATURE_SHUFFLE_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_SHUFFLE_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_SHUFFLE_BIT = SubgroupFeatureFlagBits 0x00000010
-- | 'SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT' specifies the device will accept
-- SPIR-V shader modules containing the @GroupNonUniformShuffleRelative@
-- capability.
pattern $bSUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = SubgroupFeatureFlagBits 0x00000020
-- | 'SUBGROUP_FEATURE_CLUSTERED_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformClustered@ capability.
pattern $bSUBGROUP_FEATURE_CLUSTERED_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_CLUSTERED_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000040
-- | 'SUBGROUP_FEATURE_QUAD_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformQuad@ capability.
pattern $bSUBGROUP_FEATURE_QUAD_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_QUAD_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_QUAD_BIT = SubgroupFeatureFlagBits 0x00000080
-- | 'SUBGROUP_FEATURE_PARTITIONED_BIT_NV' specifies the device will accept
-- SPIR-V shader modules containing the @GroupNonUniformPartitionedNV@
-- capability.
pattern $bSUBGROUP_FEATURE_PARTITIONED_BIT_NV :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_PARTITIONED_BIT_NV :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_PARTITIONED_BIT_NV = SubgroupFeatureFlagBits 0x00000100

type SubgroupFeatureFlags = SubgroupFeatureFlagBits

instance Show SubgroupFeatureFlagBits where
  showsPrec :: Int -> SubgroupFeatureFlagBits -> ShowS
showsPrec p :: Int
p = \case
    SUBGROUP_FEATURE_BASIC_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_BASIC_BIT"
    SUBGROUP_FEATURE_VOTE_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_VOTE_BIT"
    SUBGROUP_FEATURE_ARITHMETIC_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_ARITHMETIC_BIT"
    SUBGROUP_FEATURE_BALLOT_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_BALLOT_BIT"
    SUBGROUP_FEATURE_SHUFFLE_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_SHUFFLE_BIT"
    SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
    SUBGROUP_FEATURE_CLUSTERED_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_CLUSTERED_BIT"
    SUBGROUP_FEATURE_QUAD_BIT -> String -> ShowS
showString "SUBGROUP_FEATURE_QUAD_BIT"
    SUBGROUP_FEATURE_PARTITIONED_BIT_NV -> String -> ShowS
showString "SUBGROUP_FEATURE_PARTITIONED_BIT_NV"
    SubgroupFeatureFlagBits x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "SubgroupFeatureFlagBits 0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read SubgroupFeatureFlagBits where
  readPrec :: ReadPrec SubgroupFeatureFlagBits
readPrec = ReadPrec SubgroupFeatureFlagBits
-> ReadPrec SubgroupFeatureFlagBits
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec SubgroupFeatureFlagBits)]
-> ReadPrec SubgroupFeatureFlagBits
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("SUBGROUP_FEATURE_BASIC_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BASIC_BIT)
                            , ("SUBGROUP_FEATURE_VOTE_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_VOTE_BIT)
                            , ("SUBGROUP_FEATURE_ARITHMETIC_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ARITHMETIC_BIT)
                            , ("SUBGROUP_FEATURE_BALLOT_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BALLOT_BIT)
                            , ("SUBGROUP_FEATURE_SHUFFLE_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_BIT)
                            , ("SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT)
                            , ("SUBGROUP_FEATURE_CLUSTERED_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_CLUSTERED_BIT)
                            , ("SUBGROUP_FEATURE_QUAD_BIT", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_QUAD_BIT)
                            , ("SUBGROUP_FEATURE_PARTITIONED_BIT_NV", SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure SubgroupFeatureFlagBits
SUBGROUP_FEATURE_PARTITIONED_BIT_NV)]
                     ReadPrec SubgroupFeatureFlagBits
-> ReadPrec SubgroupFeatureFlagBits
-> ReadPrec SubgroupFeatureFlagBits
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec SubgroupFeatureFlagBits
-> ReadPrec SubgroupFeatureFlagBits
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "SubgroupFeatureFlagBits")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       SubgroupFeatureFlagBits -> ReadPrec SubgroupFeatureFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> SubgroupFeatureFlagBits
SubgroupFeatureFlagBits Flags
v)))