{-# language CPP #-}
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_NV
, ..
)
) where
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type SubgroupFeatureFlags = SubgroupFeatureFlagBits
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, 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
countTrailingZeros :: SubgroupFeatureFlagBits -> Int
$ccountTrailingZeros :: SubgroupFeatureFlagBits -> Int
countLeadingZeros :: SubgroupFeatureFlagBits -> Int
$ccountLeadingZeros :: SubgroupFeatureFlagBits -> Int
finiteBitSize :: SubgroupFeatureFlagBits -> Int
$cfiniteBitSize :: SubgroupFeatureFlagBits -> Int
$cp1FiniteBits :: Bits SubgroupFeatureFlagBits
FiniteBits)
pattern $bSUBGROUP_FEATURE_BASIC_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_BASIC_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_BASIC_BIT = SubgroupFeatureFlagBits 0x00000001
pattern $bSUBGROUP_FEATURE_VOTE_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_VOTE_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_VOTE_BIT = SubgroupFeatureFlagBits 0x00000002
pattern $bSUBGROUP_FEATURE_ARITHMETIC_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_ARITHMETIC_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_ARITHMETIC_BIT = SubgroupFeatureFlagBits 0x00000004
pattern $bSUBGROUP_FEATURE_BALLOT_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_BALLOT_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_BALLOT_BIT = SubgroupFeatureFlagBits 0x00000008
pattern $bSUBGROUP_FEATURE_SHUFFLE_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_SHUFFLE_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_SHUFFLE_BIT = SubgroupFeatureFlagBits 0x00000010
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
pattern $bSUBGROUP_FEATURE_CLUSTERED_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_CLUSTERED_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000040
pattern $bSUBGROUP_FEATURE_QUAD_BIT :: SubgroupFeatureFlagBits
$mSUBGROUP_FEATURE_QUAD_BIT :: forall r.
SubgroupFeatureFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBGROUP_FEATURE_QUAD_BIT = SubgroupFeatureFlagBits 0x00000080
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
conNameSubgroupFeatureFlagBits :: String
conNameSubgroupFeatureFlagBits :: String
conNameSubgroupFeatureFlagBits = "SubgroupFeatureFlagBits"
enumPrefixSubgroupFeatureFlagBits :: String
enumPrefixSubgroupFeatureFlagBits :: String
enumPrefixSubgroupFeatureFlagBits = "SUBGROUP_FEATURE_"
showTableSubgroupFeatureFlagBits :: [(SubgroupFeatureFlagBits, String)]
showTableSubgroupFeatureFlagBits :: [(SubgroupFeatureFlagBits, String)]
showTableSubgroupFeatureFlagBits =
[ (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BASIC_BIT , "BASIC_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_VOTE_BIT , "VOTE_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ARITHMETIC_BIT , "ARITHMETIC_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BALLOT_BIT , "BALLOT_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_BIT , "SHUFFLE_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT, "SHUFFLE_RELATIVE_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_CLUSTERED_BIT , "CLUSTERED_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_QUAD_BIT , "QUAD_BIT")
, (SubgroupFeatureFlagBits
SUBGROUP_FEATURE_PARTITIONED_BIT_NV , "PARTITIONED_BIT_NV")
]
instance Show SubgroupFeatureFlagBits where
showsPrec :: Int -> SubgroupFeatureFlagBits -> ShowS
showsPrec = String
-> [(SubgroupFeatureFlagBits, String)]
-> String
-> (SubgroupFeatureFlagBits -> Flags)
-> (Flags -> 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 x :: Flags
x) -> Flags
x)
(\x :: Flags
x -> String -> ShowS
showString "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 = String
-> [(SubgroupFeatureFlagBits, String)]
-> String
-> (Flags -> SubgroupFeatureFlagBits)
-> ReadPrec SubgroupFeatureFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixSubgroupFeatureFlagBits
[(SubgroupFeatureFlagBits, String)]
showTableSubgroupFeatureFlagBits
String
conNameSubgroupFeatureFlagBits
Flags -> SubgroupFeatureFlagBits
SubgroupFeatureFlagBits