{-# language CPP #-}
module Vulkan.Extensions.VK_AMD_pipeline_compiler_control  ( PipelineCompilerControlCreateInfoAMD(..)
                                                           , PipelineCompilerControlFlagBitsAMD(..)
                                                           , PipelineCompilerControlFlagsAMD
                                                           , AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION
                                                           , pattern AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION
                                                           , AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME
                                                           , pattern AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME
                                                           ) where

import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
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 Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD))
-- | VkPipelineCompilerControlCreateInfoAMD - Structure used to pass
-- compilation control flags to a pipeline
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'PipelineCompilerControlFlagsAMD',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PipelineCompilerControlCreateInfoAMD = PipelineCompilerControlCreateInfoAMD
  { -- | @compilerControlFlags@ is a bitmask of
    -- 'PipelineCompilerControlFlagBitsAMD' affecting how the pipeline will be
    -- compiled.
    --
    -- @compilerControlFlags@ /must/ be @0@
    PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlFlagsAMD
compilerControlFlags :: PipelineCompilerControlFlagsAMD }
  deriving (Typeable, PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> Bool
(PipelineCompilerControlCreateInfoAMD
 -> PipelineCompilerControlCreateInfoAMD -> Bool)
-> (PipelineCompilerControlCreateInfoAMD
    -> PipelineCompilerControlCreateInfoAMD -> Bool)
-> Eq PipelineCompilerControlCreateInfoAMD
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> Bool
$c/= :: PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> Bool
== :: PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> Bool
$c== :: PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineCompilerControlCreateInfoAMD)
#endif
deriving instance Show PipelineCompilerControlCreateInfoAMD

instance ToCStruct PipelineCompilerControlCreateInfoAMD where
  withCStruct :: PipelineCompilerControlCreateInfoAMD
-> (Ptr PipelineCompilerControlCreateInfoAMD -> IO b) -> IO b
withCStruct x :: PipelineCompilerControlCreateInfoAMD
x f :: Ptr PipelineCompilerControlCreateInfoAMD -> IO b
f = Int
-> Int
-> (Ptr PipelineCompilerControlCreateInfoAMD -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr PipelineCompilerControlCreateInfoAMD -> IO b) -> IO b)
-> (Ptr PipelineCompilerControlCreateInfoAMD -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PipelineCompilerControlCreateInfoAMD
p -> Ptr PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineCompilerControlCreateInfoAMD
p PipelineCompilerControlCreateInfoAMD
x (Ptr PipelineCompilerControlCreateInfoAMD -> IO b
f Ptr PipelineCompilerControlCreateInfoAMD
p)
  pokeCStruct :: Ptr PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> IO b -> IO b
pokeCStruct p :: Ptr PipelineCompilerControlCreateInfoAMD
p PipelineCompilerControlCreateInfoAMD{..} f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p Ptr PipelineCompilerControlCreateInfoAMD
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p Ptr PipelineCompilerControlCreateInfoAMD -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p Ptr PipelineCompilerControlCreateInfoAMD
-> Int -> Ptr PipelineCompilerControlFlagsAMD
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PipelineCompilerControlFlagsAMD)) (PipelineCompilerControlFlagsAMD
compilerControlFlags)
    IO b
f
  cStructSize :: Int
cStructSize = 24
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: Ptr PipelineCompilerControlCreateInfoAMD -> IO b -> IO b
pokeZeroCStruct p :: Ptr PipelineCompilerControlCreateInfoAMD
p f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p Ptr PipelineCompilerControlCreateInfoAMD
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p Ptr PipelineCompilerControlCreateInfoAMD -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct PipelineCompilerControlCreateInfoAMD where
  peekCStruct :: Ptr PipelineCompilerControlCreateInfoAMD
-> IO PipelineCompilerControlCreateInfoAMD
peekCStruct p :: Ptr PipelineCompilerControlCreateInfoAMD
p = do
    PipelineCompilerControlFlagsAMD
compilerControlFlags <- Ptr PipelineCompilerControlFlagsAMD
-> IO PipelineCompilerControlFlagsAMD
forall a. Storable a => Ptr a -> IO a
peek @PipelineCompilerControlFlagsAMD ((Ptr PipelineCompilerControlCreateInfoAMD
p Ptr PipelineCompilerControlCreateInfoAMD
-> Int -> Ptr PipelineCompilerControlFlagsAMD
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PipelineCompilerControlFlagsAMD))
    PipelineCompilerControlCreateInfoAMD
-> IO PipelineCompilerControlCreateInfoAMD
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineCompilerControlCreateInfoAMD
 -> IO PipelineCompilerControlCreateInfoAMD)
-> PipelineCompilerControlCreateInfoAMD
-> IO PipelineCompilerControlCreateInfoAMD
forall a b. (a -> b) -> a -> b
$ PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlCreateInfoAMD
PipelineCompilerControlCreateInfoAMD
             PipelineCompilerControlFlagsAMD
compilerControlFlags

instance Storable PipelineCompilerControlCreateInfoAMD where
  sizeOf :: PipelineCompilerControlCreateInfoAMD -> Int
sizeOf ~PipelineCompilerControlCreateInfoAMD
_ = 24
  alignment :: PipelineCompilerControlCreateInfoAMD -> Int
alignment ~PipelineCompilerControlCreateInfoAMD
_ = 8
  peek :: Ptr PipelineCompilerControlCreateInfoAMD
-> IO PipelineCompilerControlCreateInfoAMD
peek = Ptr PipelineCompilerControlCreateInfoAMD
-> IO PipelineCompilerControlCreateInfoAMD
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> IO ()
poke ptr :: Ptr PipelineCompilerControlCreateInfoAMD
ptr poked :: PipelineCompilerControlCreateInfoAMD
poked = Ptr PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineCompilerControlCreateInfoAMD
ptr PipelineCompilerControlCreateInfoAMD
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PipelineCompilerControlCreateInfoAMD where
  zero :: PipelineCompilerControlCreateInfoAMD
zero = PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlCreateInfoAMD
PipelineCompilerControlCreateInfoAMD
           PipelineCompilerControlFlagsAMD
forall a. Zero a => a
zero


-- | VkPipelineCompilerControlFlagBitsAMD - Enum specifying available
-- compilation control flags
--
-- = See Also
--
-- 'PipelineCompilerControlFlagsAMD'
newtype PipelineCompilerControlFlagBitsAMD = PipelineCompilerControlFlagBitsAMD Flags
  deriving newtype (PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
(PipelineCompilerControlFlagsAMD
 -> PipelineCompilerControlFlagsAMD -> Bool)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD -> Bool)
-> Eq PipelineCompilerControlFlagsAMD
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
$c/= :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
== :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
$c== :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
Eq, Eq PipelineCompilerControlFlagsAMD
Eq PipelineCompilerControlFlagsAMD =>
(PipelineCompilerControlFlagsAMD
 -> PipelineCompilerControlFlagsAMD -> Ordering)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD -> Bool)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD -> Bool)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD -> Bool)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD -> Bool)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD)
-> Ord PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Ordering
PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
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 :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
$cmin :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
max :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
$cmax :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
>= :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
$c>= :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
> :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
$c> :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
<= :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
$c<= :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
< :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
$c< :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Bool
compare :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Ordering
$ccompare :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> Ordering
$cp1Ord :: Eq PipelineCompilerControlFlagsAMD
Ord, Ptr b -> Int -> IO PipelineCompilerControlFlagsAMD
Ptr b -> Int -> PipelineCompilerControlFlagsAMD -> IO ()
Ptr PipelineCompilerControlFlagsAMD
-> IO PipelineCompilerControlFlagsAMD
Ptr PipelineCompilerControlFlagsAMD
-> Int -> IO PipelineCompilerControlFlagsAMD
Ptr PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD -> IO ()
Ptr PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> IO ()
PipelineCompilerControlFlagsAMD -> Int
(PipelineCompilerControlFlagsAMD -> Int)
-> (PipelineCompilerControlFlagsAMD -> Int)
-> (Ptr PipelineCompilerControlFlagsAMD
    -> Int -> IO PipelineCompilerControlFlagsAMD)
-> (Ptr PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD -> IO ())
-> (forall b. Ptr b -> Int -> IO PipelineCompilerControlFlagsAMD)
-> (forall b.
    Ptr b -> Int -> PipelineCompilerControlFlagsAMD -> IO ())
-> (Ptr PipelineCompilerControlFlagsAMD
    -> IO PipelineCompilerControlFlagsAMD)
-> (Ptr PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD -> IO ())
-> Storable PipelineCompilerControlFlagsAMD
forall b. Ptr b -> Int -> IO PipelineCompilerControlFlagsAMD
forall b. Ptr b -> Int -> PipelineCompilerControlFlagsAMD -> 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 PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> IO ()
$cpoke :: Ptr PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD -> IO ()
peek :: Ptr PipelineCompilerControlFlagsAMD
-> IO PipelineCompilerControlFlagsAMD
$cpeek :: Ptr PipelineCompilerControlFlagsAMD
-> IO PipelineCompilerControlFlagsAMD
pokeByteOff :: Ptr b -> Int -> PipelineCompilerControlFlagsAMD -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineCompilerControlFlagsAMD -> IO ()
peekByteOff :: Ptr b -> Int -> IO PipelineCompilerControlFlagsAMD
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineCompilerControlFlagsAMD
pokeElemOff :: Ptr PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD -> IO ()
$cpokeElemOff :: Ptr PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD -> IO ()
peekElemOff :: Ptr PipelineCompilerControlFlagsAMD
-> Int -> IO PipelineCompilerControlFlagsAMD
$cpeekElemOff :: Ptr PipelineCompilerControlFlagsAMD
-> Int -> IO PipelineCompilerControlFlagsAMD
alignment :: PipelineCompilerControlFlagsAMD -> Int
$calignment :: PipelineCompilerControlFlagsAMD -> Int
sizeOf :: PipelineCompilerControlFlagsAMD -> Int
$csizeOf :: PipelineCompilerControlFlagsAMD -> Int
Storable, PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagsAMD
-> Zero PipelineCompilerControlFlagsAMD
forall a. a -> Zero a
zero :: PipelineCompilerControlFlagsAMD
$czero :: PipelineCompilerControlFlagsAMD
Zero, Eq PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagsAMD
Eq PipelineCompilerControlFlagsAMD =>
(PipelineCompilerControlFlagsAMD
 -> PipelineCompilerControlFlagsAMD
 -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> PipelineCompilerControlFlagsAMD
-> (Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD -> Int -> Bool)
-> (PipelineCompilerControlFlagsAMD -> Maybe Int)
-> (PipelineCompilerControlFlagsAMD -> Int)
-> (PipelineCompilerControlFlagsAMD -> Bool)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD
    -> Int -> PipelineCompilerControlFlagsAMD)
-> (PipelineCompilerControlFlagsAMD -> Int)
-> Bits PipelineCompilerControlFlagsAMD
Int -> PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagsAMD -> Bool
PipelineCompilerControlFlagsAMD -> Int
PipelineCompilerControlFlagsAMD -> Maybe Int
PipelineCompilerControlFlagsAMD -> PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagsAMD -> Int -> Bool
PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
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 :: PipelineCompilerControlFlagsAMD -> Int
$cpopCount :: PipelineCompilerControlFlagsAMD -> Int
rotateR :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$crotateR :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
rotateL :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$crotateL :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
unsafeShiftR :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$cunsafeShiftR :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
shiftR :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$cshiftR :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
unsafeShiftL :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$cunsafeShiftL :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
shiftL :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$cshiftL :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
isSigned :: PipelineCompilerControlFlagsAMD -> Bool
$cisSigned :: PipelineCompilerControlFlagsAMD -> Bool
bitSize :: PipelineCompilerControlFlagsAMD -> Int
$cbitSize :: PipelineCompilerControlFlagsAMD -> Int
bitSizeMaybe :: PipelineCompilerControlFlagsAMD -> Maybe Int
$cbitSizeMaybe :: PipelineCompilerControlFlagsAMD -> Maybe Int
testBit :: PipelineCompilerControlFlagsAMD -> Int -> Bool
$ctestBit :: PipelineCompilerControlFlagsAMD -> Int -> Bool
complementBit :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$ccomplementBit :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
clearBit :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$cclearBit :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
setBit :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$csetBit :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
bit :: Int -> PipelineCompilerControlFlagsAMD
$cbit :: Int -> PipelineCompilerControlFlagsAMD
zeroBits :: PipelineCompilerControlFlagsAMD
$czeroBits :: PipelineCompilerControlFlagsAMD
rotate :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$crotate :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
shift :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
$cshift :: PipelineCompilerControlFlagsAMD
-> Int -> PipelineCompilerControlFlagsAMD
complement :: PipelineCompilerControlFlagsAMD -> PipelineCompilerControlFlagsAMD
$ccomplement :: PipelineCompilerControlFlagsAMD -> PipelineCompilerControlFlagsAMD
xor :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
$cxor :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
.|. :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
$c.|. :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
.&. :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
$c.&. :: PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
-> PipelineCompilerControlFlagsAMD
$cp1Bits :: Eq PipelineCompilerControlFlagsAMD
Bits)



type PipelineCompilerControlFlagsAMD = PipelineCompilerControlFlagBitsAMD

instance Show PipelineCompilerControlFlagBitsAMD where
  showsPrec :: Int -> PipelineCompilerControlFlagsAMD -> ShowS
showsPrec p :: Int
p = \case
    PipelineCompilerControlFlagBitsAMD x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "PipelineCompilerControlFlagBitsAMD 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 PipelineCompilerControlFlagBitsAMD where
  readPrec :: ReadPrec PipelineCompilerControlFlagsAMD
readPrec = ReadPrec PipelineCompilerControlFlagsAMD
-> ReadPrec PipelineCompilerControlFlagsAMD
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec PipelineCompilerControlFlagsAMD)]
-> ReadPrec PipelineCompilerControlFlagsAMD
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose []
                     ReadPrec PipelineCompilerControlFlagsAMD
-> ReadPrec PipelineCompilerControlFlagsAMD
-> ReadPrec PipelineCompilerControlFlagsAMD
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec PipelineCompilerControlFlagsAMD
-> ReadPrec PipelineCompilerControlFlagsAMD
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "PipelineCompilerControlFlagBitsAMD")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       PipelineCompilerControlFlagsAMD
-> ReadPrec PipelineCompilerControlFlagsAMD
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagBitsAMD Flags
v)))


type AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION"
pattern AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION :: forall a . Integral a => a
pattern $bAMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION :: a
$mAMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1


type AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control"

-- No documentation found for TopLevel "VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME"
pattern AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bAMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME :: a
$mAMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control"