{-# language CPP #-}
-- No documentation found for Chapter "SubgroupFeatureFlagBits"
module Vulkan.Core11.Enums.SubgroupFeatureFlagBits  ( SubgroupFeatureFlags
                                                    , 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_EXT
                                                                             , SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT
                                                                             , SUBGROUP_FEATURE_ROTATE_BIT
                                                                             , ..
                                                                             )
                                                    ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type SubgroupFeatureFlags = SubgroupFeatureFlagBits

-- | VkSubgroupFeatureFlagBits - Bitmask describing what group operations are
-- supported with subgroup scope
--
-- = Description
--
-- -   #features-subgroup-basic# 'SUBGROUP_FEATURE_BASIC_BIT' specifies the
--     device will accept SPIR-V shader modules containing the
--     @GroupNonUniform@ capability.
--
-- -   #features-subgroup-vote# 'SUBGROUP_FEATURE_VOTE_BIT' specifies the
--     device will accept SPIR-V shader modules containing the
--     @GroupNonUniformVote@ capability.
--
-- -   #features-subgroup-arithmetic# 'SUBGROUP_FEATURE_ARITHMETIC_BIT'
--     specifies the device will accept SPIR-V shader modules containing
--     the @GroupNonUniformArithmetic@ capability.
--
-- -   #features-subgroup-ballot# 'SUBGROUP_FEATURE_BALLOT_BIT' specifies
--     the device will accept SPIR-V shader modules containing the
--     @GroupNonUniformBallot@ capability.
--
-- -   #features-subgroup-shuffle# 'SUBGROUP_FEATURE_SHUFFLE_BIT' specifies
--     the device will accept SPIR-V shader modules containing the
--     @GroupNonUniformShuffle@ capability.
--
-- -   #features-subgroup-shuffle-relative#
--     'SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT' specifies the device will
--     accept SPIR-V shader modules containing the
--     @GroupNonUniformShuffleRelative@ capability.
--
-- -   #features-subgroup-clustered# 'SUBGROUP_FEATURE_CLUSTERED_BIT'
--     specifies the device will accept SPIR-V shader modules containing
--     the @GroupNonUniformClustered@ capability.
--
-- -   #features-subgroup-quad# 'SUBGROUP_FEATURE_QUAD_BIT' specifies the
--     device will accept SPIR-V shader modules containing the
--     @GroupNonUniformQuad@ capability.
--
-- -   #features-subgroup-partitioned#
--     'SUBGROUP_FEATURE_PARTITIONED_BIT_EXT' specifies the device will
--     accept SPIR-V shader modules containing the
--     @GroupNonUniformPartitionedEXT@ capability.
--
-- -   #features-subgroup-rotate# 'SUBGROUP_FEATURE_ROTATE_BIT' specifies
--     the device will accept SPIR-V shader modules containing the
--     @GroupNonUniformRotateKHR@ capability.
--
-- -   #features-subgroup-rotate-clustered#
--     'SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT' specifies the device will
--     accept SPIR-V shader modules that use the @ClusterSize@ operand to
--     @OpGroupNonUniformRotateKHR@.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
-- '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
$c== :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
== :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$c/= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
/= :: 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
$ccompare :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Ordering
compare :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Ordering
$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
>= :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
$cmax :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
max :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$cmin :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
min :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
Ord, 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
$csizeOf :: SubgroupFeatureFlagBits -> Int
sizeOf :: SubgroupFeatureFlagBits -> Int
$calignment :: SubgroupFeatureFlagBits -> Int
alignment :: SubgroupFeatureFlagBits -> Int
$cpeekElemOff :: Ptr SubgroupFeatureFlagBits -> Int -> IO SubgroupFeatureFlagBits
peekElemOff :: Ptr SubgroupFeatureFlagBits -> Int -> IO SubgroupFeatureFlagBits
$cpokeElemOff :: Ptr SubgroupFeatureFlagBits
-> Int -> SubgroupFeatureFlagBits -> IO ()
pokeElemOff :: Ptr SubgroupFeatureFlagBits
-> Int -> SubgroupFeatureFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SubgroupFeatureFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO SubgroupFeatureFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> SubgroupFeatureFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SubgroupFeatureFlagBits -> IO ()
$cpeek :: Ptr SubgroupFeatureFlagBits -> IO SubgroupFeatureFlagBits
peek :: Ptr SubgroupFeatureFlagBits -> IO SubgroupFeatureFlagBits
$cpoke :: Ptr SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> IO ()
poke :: Ptr SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> IO ()
Storable, SubgroupFeatureFlagBits
SubgroupFeatureFlagBits -> Zero SubgroupFeatureFlagBits
forall a. a -> Zero a
$czero :: SubgroupFeatureFlagBits
zero :: 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
$c.&. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
.&. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$c.|. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
.|. :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$cxor :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
xor :: SubgroupFeatureFlagBits
-> SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$ccomplement :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
complement :: SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits
$cshift :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
shift :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$crotate :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
rotate :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$czeroBits :: SubgroupFeatureFlagBits
zeroBits :: SubgroupFeatureFlagBits
$cbit :: Int -> SubgroupFeatureFlagBits
bit :: Int -> SubgroupFeatureFlagBits
$csetBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
setBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cclearBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
clearBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$ccomplementBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
complementBit :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$ctestBit :: SubgroupFeatureFlagBits -> Int -> Bool
testBit :: SubgroupFeatureFlagBits -> Int -> Bool
$cbitSizeMaybe :: SubgroupFeatureFlagBits -> Maybe Int
bitSizeMaybe :: SubgroupFeatureFlagBits -> Maybe Int
$cbitSize :: SubgroupFeatureFlagBits -> Int
bitSize :: SubgroupFeatureFlagBits -> Int
$cisSigned :: SubgroupFeatureFlagBits -> Bool
isSigned :: SubgroupFeatureFlagBits -> Bool
$cshiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
shiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cunsafeShiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
unsafeShiftL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cshiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
shiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cunsafeShiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
unsafeShiftR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$crotateL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
rotateL :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$crotateR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
rotateR :: SubgroupFeatureFlagBits -> Int -> SubgroupFeatureFlagBits
$cpopCount :: SubgroupFeatureFlagBits -> Int
popCount :: SubgroupFeatureFlagBits -> Int
Bits, Bits SubgroupFeatureFlagBits
Bits SubgroupFeatureFlagBits =>
(SubgroupFeatureFlagBits -> Int)
-> (SubgroupFeatureFlagBits -> Int)
-> (SubgroupFeatureFlagBits -> Int)
-> FiniteBits SubgroupFeatureFlagBits
SubgroupFeatureFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: SubgroupFeatureFlagBits -> Int
finiteBitSize :: SubgroupFeatureFlagBits -> Int
$ccountLeadingZeros :: SubgroupFeatureFlagBits -> Int
countLeadingZeros :: SubgroupFeatureFlagBits -> Int
$ccountTrailingZeros :: SubgroupFeatureFlagBits -> Int
countTrailingZeros :: SubgroupFeatureFlagBits -> Int
FiniteBits)

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_BASIC_BIT"
pattern $mSUBGROUP_FEATURE_BASIC_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_BASIC_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BASIC_BIT = SubgroupFeatureFlagBits 0x00000001

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_VOTE_BIT"
pattern $mSUBGROUP_FEATURE_VOTE_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_VOTE_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_VOTE_BIT = SubgroupFeatureFlagBits 0x00000002

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"
pattern $mSUBGROUP_FEATURE_ARITHMETIC_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_ARITHMETIC_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ARITHMETIC_BIT = SubgroupFeatureFlagBits 0x00000004

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_BALLOT_BIT"
pattern $mSUBGROUP_FEATURE_BALLOT_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_BALLOT_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BALLOT_BIT = SubgroupFeatureFlagBits 0x00000008

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"
pattern $mSUBGROUP_FEATURE_SHUFFLE_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_SHUFFLE_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_BIT = SubgroupFeatureFlagBits 0x00000010

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
pattern $mSUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = SubgroupFeatureFlagBits 0x00000020

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"
pattern $mSUBGROUP_FEATURE_CLUSTERED_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_CLUSTERED_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000040

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_QUAD_BIT"
pattern $mSUBGROUP_FEATURE_QUAD_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_QUAD_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_QUAD_BIT = SubgroupFeatureFlagBits 0x00000080

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT"
pattern $mSUBGROUP_FEATURE_PARTITIONED_BIT_EXT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_PARTITIONED_BIT_EXT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_PARTITIONED_BIT_EXT = SubgroupFeatureFlagBits 0x00000100

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT"
pattern $mSUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000400

-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_ROTATE_BIT"
pattern $mSUBGROUP_FEATURE_ROTATE_BIT :: forall {r}.
SubgroupFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bSUBGROUP_FEATURE_ROTATE_BIT :: SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ROTATE_BIT = SubgroupFeatureFlagBits 0x00000200

conNameSubgroupFeatureFlagBits :: String
conNameSubgroupFeatureFlagBits :: String
conNameSubgroupFeatureFlagBits = String
"SubgroupFeatureFlagBits"

enumPrefixSubgroupFeatureFlagBits :: String
enumPrefixSubgroupFeatureFlagBits :: String
enumPrefixSubgroupFeatureFlagBits = String
"SUBGROUP_FEATURE_"

showTableSubgroupFeatureFlagBits :: [(SubgroupFeatureFlagBits, String)]
showTableSubgroupFeatureFlagBits :: [(SubgroupFeatureFlagBits, String)]
showTableSubgroupFeatureFlagBits =
  [ (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BASIC_BIT, String
"BASIC_BIT")
  , (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_VOTE_BIT, String
"VOTE_BIT")
  ,
    ( SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ARITHMETIC_BIT
    , String
"ARITHMETIC_BIT"
    )
  , (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BALLOT_BIT, String
"BALLOT_BIT")
  ,
    ( SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_BIT
    , String
"SHUFFLE_BIT"
    )
  ,
    ( SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
    , String
"SHUFFLE_RELATIVE_BIT"
    )
  ,
    ( SubgroupFeatureFlagBits
SUBGROUP_FEATURE_CLUSTERED_BIT
    , String
"CLUSTERED_BIT"
    )
  , (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_QUAD_BIT, String
"QUAD_BIT")
  ,
    ( SubgroupFeatureFlagBits
SUBGROUP_FEATURE_PARTITIONED_BIT_EXT
    , String
"PARTITIONED_BIT_EXT"
    )
  ,
    ( SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT
    , String
"ROTATE_CLUSTERED_BIT"
    )
  ,
    ( SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ROTATE_BIT
    , String
"ROTATE_BIT"
    )
  ]

instance Show SubgroupFeatureFlagBits where
  showsPrec :: Int -> SubgroupFeatureFlagBits -> ShowS
showsPrec =
    String
-> [(SubgroupFeatureFlagBits, String)]
-> String
-> (SubgroupFeatureFlagBits -> Word32)
-> (Word32 -> ShowS)
-> Int
-> SubgroupFeatureFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixSubgroupFeatureFlagBits
      [(SubgroupFeatureFlagBits, String)]
showTableSubgroupFeatureFlagBits
      String
conNameSubgroupFeatureFlagBits
      (\(SubgroupFeatureFlagBits Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read SubgroupFeatureFlagBits where
  readPrec :: ReadPrec SubgroupFeatureFlagBits
readPrec =
    String
-> [(SubgroupFeatureFlagBits, String)]
-> String
-> (Word32 -> SubgroupFeatureFlagBits)
-> ReadPrec SubgroupFeatureFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixSubgroupFeatureFlagBits
      [(SubgroupFeatureFlagBits, String)]
showTableSubgroupFeatureFlagBits
      String
conNameSubgroupFeatureFlagBits
      Word32 -> SubgroupFeatureFlagBits
SubgroupFeatureFlagBits