{-# OPTIONS_HADDOCK ignore-exports#-}
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE DeriveDataTypeable         #-}
{-# LANGUAGE DeriveGeneric              #-}
{-# LANGUAGE FlexibleInstances          #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE KindSignatures             #-}
{-# LANGUAGE PatternSynonyms            #-}
{-# LANGUAGE StandaloneDeriving         #-}
{-# LANGUAGE Strict                     #-}
{-# LANGUAGE TypeSynonymInstances       #-}
module Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags
       (VkSubgroupFeatureBitmask(VkSubgroupFeatureBitmask,
                                 VkSubgroupFeatureFlags, VkSubgroupFeatureFlagBits,
                                 VK_SUBGROUP_FEATURE_BASIC_BIT, VK_SUBGROUP_FEATURE_VOTE_BIT,
                                 VK_SUBGROUP_FEATURE_ARITHMETIC_BIT, VK_SUBGROUP_FEATURE_BALLOT_BIT,
                                 VK_SUBGROUP_FEATURE_SHUFFLE_BIT,
                                 VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,
                                 VK_SUBGROUP_FEATURE_CLUSTERED_BIT, VK_SUBGROUP_FEATURE_QUAD_BIT),
        VkSubgroupFeatureFlags, VkSubgroupFeatureFlagBits)
       where
import           Data.Bits                       (Bits, FiniteBits)
import           Data.Data                       (Data)
import           Foreign.Storable                (Storable)
import           GHC.Generics                    (Generic)
import           GHC.Read                        (choose, expectP)
import           Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
import           Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
import           Text.Read                       (Read (..), parens)
import           Text.Read.Lex                   (Lexeme (..))

newtype VkSubgroupFeatureBitmask (a ::
                                    FlagType) = VkSubgroupFeatureBitmask VkFlags
                                                  deriving (VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
(VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> Bool)
-> Eq (VkSubgroupFeatureBitmask a)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
/= :: VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
$c/= :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
== :: VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
$c== :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
Eq, Eq (VkSubgroupFeatureBitmask a)
Eq (VkSubgroupFeatureBitmask a)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> Ordering)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> Bool)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> Bool)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> Bool)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> Bool)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a)
-> (VkSubgroupFeatureBitmask a
    -> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a)
-> Ord (VkSubgroupFeatureBitmask a)
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> Ordering
VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
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
forall (a :: FlagType). Eq (VkSubgroupFeatureBitmask a)
forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
forall (a :: FlagType).
VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> Ordering
forall (a :: FlagType).
VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
min :: VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
$cmin :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
max :: VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
$cmax :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
>= :: VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
$c>= :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
> :: VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
$c> :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
<= :: VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
$c<= :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
< :: VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
$c< :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a -> Bool
compare :: VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> Ordering
$ccompare :: forall (a :: FlagType).
VkSubgroupFeatureBitmask a
-> VkSubgroupFeatureBitmask a -> Ordering
$cp1Ord :: forall (a :: FlagType). Eq (VkSubgroupFeatureBitmask a)
Ord, Ptr b -> Int -> IO (VkSubgroupFeatureBitmask a)
Ptr b -> Int -> VkSubgroupFeatureBitmask a -> IO ()
Ptr (VkSubgroupFeatureBitmask a) -> IO (VkSubgroupFeatureBitmask a)
Ptr (VkSubgroupFeatureBitmask a)
-> Int -> IO (VkSubgroupFeatureBitmask a)
Ptr (VkSubgroupFeatureBitmask a)
-> Int -> VkSubgroupFeatureBitmask a -> IO ()
Ptr (VkSubgroupFeatureBitmask a)
-> VkSubgroupFeatureBitmask a -> IO ()
VkSubgroupFeatureBitmask a -> Int
(VkSubgroupFeatureBitmask a -> Int)
-> (VkSubgroupFeatureBitmask a -> Int)
-> (Ptr (VkSubgroupFeatureBitmask a)
    -> Int -> IO (VkSubgroupFeatureBitmask a))
-> (Ptr (VkSubgroupFeatureBitmask a)
    -> Int -> VkSubgroupFeatureBitmask a -> IO ())
-> (forall b. Ptr b -> Int -> IO (VkSubgroupFeatureBitmask a))
-> (forall b. Ptr b -> Int -> VkSubgroupFeatureBitmask a -> IO ())
-> (Ptr (VkSubgroupFeatureBitmask a)
    -> IO (VkSubgroupFeatureBitmask a))
-> (Ptr (VkSubgroupFeatureBitmask a)
    -> VkSubgroupFeatureBitmask a -> IO ())
-> Storable (VkSubgroupFeatureBitmask a)
forall b. Ptr b -> Int -> IO (VkSubgroupFeatureBitmask a)
forall b. Ptr b -> Int -> VkSubgroupFeatureBitmask a -> 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
forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a) -> IO (VkSubgroupFeatureBitmask a)
forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a)
-> Int -> IO (VkSubgroupFeatureBitmask a)
forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a)
-> Int -> VkSubgroupFeatureBitmask a -> IO ()
forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a)
-> VkSubgroupFeatureBitmask a -> IO ()
forall (a :: FlagType). VkSubgroupFeatureBitmask a -> Int
forall (a :: FlagType) b.
Ptr b -> Int -> IO (VkSubgroupFeatureBitmask a)
forall (a :: FlagType) b.
Ptr b -> Int -> VkSubgroupFeatureBitmask a -> IO ()
poke :: Ptr (VkSubgroupFeatureBitmask a)
-> VkSubgroupFeatureBitmask a -> IO ()
$cpoke :: forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a)
-> VkSubgroupFeatureBitmask a -> IO ()
peek :: Ptr (VkSubgroupFeatureBitmask a) -> IO (VkSubgroupFeatureBitmask a)
$cpeek :: forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a) -> IO (VkSubgroupFeatureBitmask a)
pokeByteOff :: Ptr b -> Int -> VkSubgroupFeatureBitmask a -> IO ()
$cpokeByteOff :: forall (a :: FlagType) b.
Ptr b -> Int -> VkSubgroupFeatureBitmask a -> IO ()
peekByteOff :: Ptr b -> Int -> IO (VkSubgroupFeatureBitmask a)
$cpeekByteOff :: forall (a :: FlagType) b.
Ptr b -> Int -> IO (VkSubgroupFeatureBitmask a)
pokeElemOff :: Ptr (VkSubgroupFeatureBitmask a)
-> Int -> VkSubgroupFeatureBitmask a -> IO ()
$cpokeElemOff :: forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a)
-> Int -> VkSubgroupFeatureBitmask a -> IO ()
peekElemOff :: Ptr (VkSubgroupFeatureBitmask a)
-> Int -> IO (VkSubgroupFeatureBitmask a)
$cpeekElemOff :: forall (a :: FlagType).
Ptr (VkSubgroupFeatureBitmask a)
-> Int -> IO (VkSubgroupFeatureBitmask a)
alignment :: VkSubgroupFeatureBitmask a -> Int
$calignment :: forall (a :: FlagType). VkSubgroupFeatureBitmask a -> Int
sizeOf :: VkSubgroupFeatureBitmask a -> Int
$csizeOf :: forall (a :: FlagType). VkSubgroupFeatureBitmask a -> Int
Storable, Typeable (VkSubgroupFeatureBitmask a)
DataType
Constr
Typeable (VkSubgroupFeatureBitmask a)
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> VkSubgroupFeatureBitmask a
    -> c (VkSubgroupFeatureBitmask a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r)
    -> Constr
    -> c (VkSubgroupFeatureBitmask a))
-> (VkSubgroupFeatureBitmask a -> Constr)
-> (VkSubgroupFeatureBitmask a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d))
    -> Maybe (c (VkSubgroupFeatureBitmask a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (VkSubgroupFeatureBitmask a)))
-> ((forall b. Data b => b -> b)
    -> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a)
-> (forall r r'.
    (r -> r' -> r)
    -> r
    -> (forall d. Data d => d -> r')
    -> VkSubgroupFeatureBitmask a
    -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r
    -> (forall d. Data d => d -> r')
    -> VkSubgroupFeatureBitmask a
    -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> [u])
-> (forall u.
    Int
    -> (forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a))
-> Data (VkSubgroupFeatureBitmask a)
VkSubgroupFeatureBitmask a -> DataType
VkSubgroupFeatureBitmask a -> Constr
(forall b. Data b => b -> b)
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> VkSubgroupFeatureBitmask a
-> c (VkSubgroupFeatureBitmask a)
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VkSubgroupFeatureBitmask a)
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int
-> (forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> u
forall u.
(forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> [u]
forall r r'.
(r -> r' -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
forall r r'.
(r' -> r -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
forall (a :: FlagType).
Typeable a =>
Typeable (VkSubgroupFeatureBitmask a)
forall (a :: FlagType).
Typeable a =>
VkSubgroupFeatureBitmask a -> DataType
forall (a :: FlagType).
Typeable a =>
VkSubgroupFeatureBitmask a -> Constr
forall (a :: FlagType).
Typeable a =>
(forall b. Data b => b -> b)
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
forall (a :: FlagType) u.
Typeable a =>
Int
-> (forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> u
forall (a :: FlagType) u.
Typeable a =>
(forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> [u]
forall (a :: FlagType) r r'.
Typeable a =>
(r -> r' -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
forall (a :: FlagType) r r'.
Typeable a =>
(r' -> r -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
forall (a :: FlagType) (m :: * -> *).
(Typeable a, Monad m) =>
(forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
forall (a :: FlagType) (m :: * -> *).
(Typeable a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
forall (a :: FlagType) (c :: * -> *).
Typeable a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VkSubgroupFeatureBitmask a)
forall (a :: FlagType) (c :: * -> *).
Typeable a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> VkSubgroupFeatureBitmask a
-> c (VkSubgroupFeatureBitmask a)
forall (a :: FlagType) (t :: * -> *) (c :: * -> *).
(Typeable a, Typeable t) =>
(forall d. Data d => c (t d))
-> Maybe (c (VkSubgroupFeatureBitmask a))
forall (a :: FlagType) (t :: * -> * -> *) (c :: * -> *).
(Typeable a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VkSubgroupFeatureBitmask a))
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VkSubgroupFeatureBitmask a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> VkSubgroupFeatureBitmask a
-> c (VkSubgroupFeatureBitmask a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d))
-> Maybe (c (VkSubgroupFeatureBitmask a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VkSubgroupFeatureBitmask a))
$cVkSubgroupFeatureBitmask :: Constr
$tVkSubgroupFeatureBitmask :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
$cgmapMo :: forall (a :: FlagType) (m :: * -> *).
(Typeable a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
gmapMp :: (forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
$cgmapMp :: forall (a :: FlagType) (m :: * -> *).
(Typeable a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
gmapM :: (forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
$cgmapM :: forall (a :: FlagType) (m :: * -> *).
(Typeable a, Monad m) =>
(forall d. Data d => d -> m d)
-> VkSubgroupFeatureBitmask a -> m (VkSubgroupFeatureBitmask a)
gmapQi :: Int
-> (forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> u
$cgmapQi :: forall (a :: FlagType) u.
Typeable a =>
Int
-> (forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> u
gmapQ :: (forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> [u]
$cgmapQ :: forall (a :: FlagType) u.
Typeable a =>
(forall d. Data d => d -> u) -> VkSubgroupFeatureBitmask a -> [u]
gmapQr :: (r' -> r -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
$cgmapQr :: forall (a :: FlagType) r r'.
Typeable a =>
(r' -> r -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
gmapQl :: (r -> r' -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
$cgmapQl :: forall (a :: FlagType) r r'.
Typeable a =>
(r -> r' -> r)
-> r
-> (forall d. Data d => d -> r')
-> VkSubgroupFeatureBitmask a
-> r
gmapT :: (forall b. Data b => b -> b)
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
$cgmapT :: forall (a :: FlagType).
Typeable a =>
(forall b. Data b => b -> b)
-> VkSubgroupFeatureBitmask a -> VkSubgroupFeatureBitmask a
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VkSubgroupFeatureBitmask a))
$cdataCast2 :: forall (a :: FlagType) (t :: * -> * -> *) (c :: * -> *).
(Typeable a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (VkSubgroupFeatureBitmask a))
dataCast1 :: (forall d. Data d => c (t d))
-> Maybe (c (VkSubgroupFeatureBitmask a))
$cdataCast1 :: forall (a :: FlagType) (t :: * -> *) (c :: * -> *).
(Typeable a, Typeable t) =>
(forall d. Data d => c (t d))
-> Maybe (c (VkSubgroupFeatureBitmask a))
dataTypeOf :: VkSubgroupFeatureBitmask a -> DataType
$cdataTypeOf :: forall (a :: FlagType).
Typeable a =>
VkSubgroupFeatureBitmask a -> DataType
toConstr :: VkSubgroupFeatureBitmask a -> Constr
$ctoConstr :: forall (a :: FlagType).
Typeable a =>
VkSubgroupFeatureBitmask a -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VkSubgroupFeatureBitmask a)
$cgunfold :: forall (a :: FlagType) (c :: * -> *).
Typeable a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (VkSubgroupFeatureBitmask a)
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> VkSubgroupFeatureBitmask a
-> c (VkSubgroupFeatureBitmask a)
$cgfoldl :: forall (a :: FlagType) (c :: * -> *).
Typeable a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> VkSubgroupFeatureBitmask a
-> c (VkSubgroupFeatureBitmask a)
$cp1Data :: forall (a :: FlagType).
Typeable a =>
Typeable (VkSubgroupFeatureBitmask a)
Data, (forall x.
 VkSubgroupFeatureBitmask a -> Rep (VkSubgroupFeatureBitmask a) x)
-> (forall x.
    Rep (VkSubgroupFeatureBitmask a) x -> VkSubgroupFeatureBitmask a)
-> Generic (VkSubgroupFeatureBitmask a)
forall x.
Rep (VkSubgroupFeatureBitmask a) x -> VkSubgroupFeatureBitmask a
forall x.
VkSubgroupFeatureBitmask a -> Rep (VkSubgroupFeatureBitmask a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (a :: FlagType) x.
Rep (VkSubgroupFeatureBitmask a) x -> VkSubgroupFeatureBitmask a
forall (a :: FlagType) x.
VkSubgroupFeatureBitmask a -> Rep (VkSubgroupFeatureBitmask a) x
$cto :: forall (a :: FlagType) x.
Rep (VkSubgroupFeatureBitmask a) x -> VkSubgroupFeatureBitmask a
$cfrom :: forall (a :: FlagType) x.
VkSubgroupFeatureBitmask a -> Rep (VkSubgroupFeatureBitmask a) x
Generic)

type VkSubgroupFeatureFlags = VkSubgroupFeatureBitmask FlagMask

type VkSubgroupFeatureFlagBits = VkSubgroupFeatureBitmask FlagBit

pattern VkSubgroupFeatureFlagBits ::
        VkFlags -> VkSubgroupFeatureBitmask FlagBit

pattern $bVkSubgroupFeatureFlagBits :: VkFlags -> VkSubgroupFeatureBitmask FlagBit
$mVkSubgroupFeatureFlagBits :: forall r.
VkSubgroupFeatureBitmask FlagBit
-> (VkFlags -> r) -> (Void# -> r) -> r
VkSubgroupFeatureFlagBits n = VkSubgroupFeatureBitmask n

pattern VkSubgroupFeatureFlags ::
        VkFlags -> VkSubgroupFeatureBitmask FlagMask

pattern $bVkSubgroupFeatureFlags :: VkFlags -> VkSubgroupFeatureBitmask FlagMask
$mVkSubgroupFeatureFlags :: forall r.
VkSubgroupFeatureBitmask FlagMask
-> (VkFlags -> r) -> (Void# -> r) -> r
VkSubgroupFeatureFlags n = VkSubgroupFeatureBitmask n

deriving instance Bits (VkSubgroupFeatureBitmask FlagMask)

deriving instance FiniteBits (VkSubgroupFeatureBitmask FlagMask)

deriving instance Integral (VkSubgroupFeatureBitmask FlagMask)

deriving instance Num (VkSubgroupFeatureBitmask FlagMask)

deriving instance Bounded (VkSubgroupFeatureBitmask FlagMask)

deriving instance Enum (VkSubgroupFeatureBitmask FlagMask)

deriving instance Real (VkSubgroupFeatureBitmask FlagMask)

instance Show (VkSubgroupFeatureBitmask a) where
        showsPrec :: Int -> VkSubgroupFeatureBitmask a -> ShowS
showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_BASIC_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_BASIC_BIT"
        showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_VOTE_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_VOTE_BIT"
        showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"
        showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_BALLOT_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_BALLOT_BIT"
        showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_SHUFFLE_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_SHUFFLE_BIT"
        showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
        showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_CLUSTERED_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_CLUSTERED_BIT"
        showsPrec Int
_ VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_QUAD_BIT
          = String -> ShowS
showString String
"VK_SUBGROUP_FEATURE_QUAD_BIT"
        showsPrec Int
p (VkSubgroupFeatureBitmask VkFlags
x)
          = Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
11)
              (String -> ShowS
showString String
"VkSubgroupFeatureBitmask " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> VkFlags -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11 VkFlags
x)

instance Read (VkSubgroupFeatureBitmask a) where
        readPrec :: ReadPrec (VkSubgroupFeatureBitmask a)
readPrec
          = ReadPrec (VkSubgroupFeatureBitmask a)
-> ReadPrec (VkSubgroupFeatureBitmask a)
forall a. ReadPrec a -> ReadPrec a
parens
              ([(String, ReadPrec (VkSubgroupFeatureBitmask a))]
-> ReadPrec (VkSubgroupFeatureBitmask a)
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose
                 [(String
"VK_SUBGROUP_FEATURE_BASIC_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_BASIC_BIT),
                  (String
"VK_SUBGROUP_FEATURE_VOTE_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_VOTE_BIT),
                  (String
"VK_SUBGROUP_FEATURE_ARITHMETIC_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT),
                  (String
"VK_SUBGROUP_FEATURE_BALLOT_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_BALLOT_BIT),
                  (String
"VK_SUBGROUP_FEATURE_SHUFFLE_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_SHUFFLE_BIT),
                  (String
"VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT),
                  (String
"VK_SUBGROUP_FEATURE_CLUSTERED_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_CLUSTERED_BIT),
                  (String
"VK_SUBGROUP_FEATURE_QUAD_BIT",
                   VkSubgroupFeatureBitmask a -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkSubgroupFeatureBitmask a
VK_SUBGROUP_FEATURE_QUAD_BIT)]
                 ReadPrec (VkSubgroupFeatureBitmask a)
-> ReadPrec (VkSubgroupFeatureBitmask a)
-> ReadPrec (VkSubgroupFeatureBitmask a)
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                 Int
-> ReadPrec (VkSubgroupFeatureBitmask a)
-> ReadPrec (VkSubgroupFeatureBitmask a)
forall a. Int -> ReadPrec a -> ReadPrec a
prec Int
10
                   (Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident String
"VkSubgroupFeatureBitmask") ReadPrec ()
-> ReadPrec (VkSubgroupFeatureBitmask a)
-> ReadPrec (VkSubgroupFeatureBitmask a)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
                      (VkFlags -> VkSubgroupFeatureBitmask a
forall (a :: FlagType). VkFlags -> VkSubgroupFeatureBitmask a
VkSubgroupFeatureBitmask (VkFlags -> VkSubgroupFeatureBitmask a)
-> ReadPrec VkFlags -> ReadPrec (VkSubgroupFeatureBitmask a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ReadPrec VkFlags -> ReadPrec VkFlags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec VkFlags
forall a. Read a => ReadPrec a
readPrec)))

-- | Basic subgroup operations
--
--   bitpos = @0@
pattern VK_SUBGROUP_FEATURE_BASIC_BIT :: VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_BASIC_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_BASIC_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_BASIC_BIT = VkSubgroupFeatureBitmask 1

-- | Vote subgroup operations
--
--   bitpos = @1@
pattern VK_SUBGROUP_FEATURE_VOTE_BIT :: VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_VOTE_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_VOTE_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_VOTE_BIT = VkSubgroupFeatureBitmask 2

-- | Arithmetic subgroup operations
--
--   bitpos = @2@
pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT ::
        VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_ARITHMETIC_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_ARITHMETIC_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT =
        VkSubgroupFeatureBitmask 4

-- | Ballot subgroup operations
--
--   bitpos = @3@
pattern VK_SUBGROUP_FEATURE_BALLOT_BIT ::
        VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_BALLOT_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_BALLOT_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_BALLOT_BIT = VkSubgroupFeatureBitmask 8

-- | Shuffle subgroup operations
--
--   bitpos = @4@
pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT ::
        VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_SHUFFLE_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_SHUFFLE_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_SHUFFLE_BIT =
        VkSubgroupFeatureBitmask 16

-- | Shuffle relative subgroup operations
--
--   bitpos = @5@
pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT ::
        VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT =
        VkSubgroupFeatureBitmask 32

-- | Clustered subgroup operations
--
--   bitpos = @6@
pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT ::
        VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_CLUSTERED_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_CLUSTERED_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_CLUSTERED_BIT =
        VkSubgroupFeatureBitmask 64

-- | Quad subgroup operations
--
--   bitpos = @7@
pattern VK_SUBGROUP_FEATURE_QUAD_BIT :: VkSubgroupFeatureBitmask a

pattern $bVK_SUBGROUP_FEATURE_QUAD_BIT :: VkSubgroupFeatureBitmask a
$mVK_SUBGROUP_FEATURE_QUAD_BIT :: forall r (a :: FlagType).
VkSubgroupFeatureBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SUBGROUP_FEATURE_QUAD_BIT = VkSubgroupFeatureBitmask 128