{-# language CPP #-}
-- | = Name
--
-- VK_AMD_pipeline_compiler_control - device extension
--
-- == VK_AMD_pipeline_compiler_control
--
-- [__Name String__]
--     @VK_AMD_pipeline_compiler_control@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     184
--
-- [__Revision__]
--     1
--
-- [__Extension and Version Dependencies__]
--
--     -   Requires Vulkan 1.0
--
-- [__Contact__]
--
--     -   Matthaeus G. Chajdas
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_pipeline_compiler_control:%20&body=@anteru%20 >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2019-07-26
--
-- [__IP Status__]
--     No known IP claims.
--
-- [__Contributors__]
--
--     -   Matthaeus G. Chajdas, AMD
--
--     -   Daniel Rakos, AMD
--
--     -   Maciej Jesionowski, AMD
--
--     -   Tobias Hector, AMD
--
-- == Description
--
-- This extension introduces 'PipelineCompilerControlCreateInfoAMD'
-- structure that can be chained to a pipeline’s create info to specify
-- additional flags that affect pipeline compilation.
--
-- == New Structures
--
-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':
--
--     -   'PipelineCompilerControlCreateInfoAMD'
--
-- == New Enums
--
-- -   'PipelineCompilerControlFlagBitsAMD'
--
-- == New Bitmasks
--
-- -   'PipelineCompilerControlFlagsAMD'
--
-- == New Enum Constants
--
-- -   'AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME'
--
-- -   'AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD'
--
-- == Issues
--
-- None.
--
-- == Examples
--
-- None.
--
-- == Version History
--
-- -   Revision 1, 2019-07-26 (Tobias Hector)
--
--     -   Initial revision.
--
-- = See Also
--
-- 'PipelineCompilerControlCreateInfoAMD',
-- 'PipelineCompilerControlFlagBitsAMD', 'PipelineCompilerControlFlagsAMD'
--
-- = Document Notes
--
-- For more information, see the
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_AMD_pipeline_compiler_control  ( PipelineCompilerControlCreateInfoAMD(..)
                                                           , PipelineCompilerControlFlagsAMD
                                                           , PipelineCompilerControlFlagBitsAMD(..)
                                                           , 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 Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
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 GHC.Show (Show(showsPrec))
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.
    --
    -- #VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask#
    -- @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


type PipelineCompilerControlFlagsAMD = PipelineCompilerControlFlagBitsAMD

-- | 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, Bits PipelineCompilerControlFlagsAMD
Bits PipelineCompilerControlFlagsAMD =>
(PipelineCompilerControlFlagsAMD -> Int)
-> (PipelineCompilerControlFlagsAMD -> Int)
-> (PipelineCompilerControlFlagsAMD -> Int)
-> FiniteBits PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagsAMD -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: PipelineCompilerControlFlagsAMD -> Int
$ccountTrailingZeros :: PipelineCompilerControlFlagsAMD -> Int
countLeadingZeros :: PipelineCompilerControlFlagsAMD -> Int
$ccountLeadingZeros :: PipelineCompilerControlFlagsAMD -> Int
finiteBitSize :: PipelineCompilerControlFlagsAMD -> Int
$cfiniteBitSize :: PipelineCompilerControlFlagsAMD -> Int
$cp1FiniteBits :: Bits PipelineCompilerControlFlagsAMD
FiniteBits)



conNamePipelineCompilerControlFlagBitsAMD :: String
conNamePipelineCompilerControlFlagBitsAMD :: String
conNamePipelineCompilerControlFlagBitsAMD = "PipelineCompilerControlFlagBitsAMD"

enumPrefixPipelineCompilerControlFlagBitsAMD :: String
enumPrefixPipelineCompilerControlFlagBitsAMD :: String
enumPrefixPipelineCompilerControlFlagBitsAMD = ""

showTablePipelineCompilerControlFlagBitsAMD :: [(PipelineCompilerControlFlagBitsAMD, String)]
showTablePipelineCompilerControlFlagBitsAMD :: [(PipelineCompilerControlFlagsAMD, String)]
showTablePipelineCompilerControlFlagBitsAMD = []

instance Show PipelineCompilerControlFlagBitsAMD where
  showsPrec :: Int -> PipelineCompilerControlFlagsAMD -> ShowS
showsPrec = String
-> [(PipelineCompilerControlFlagsAMD, String)]
-> String
-> (PipelineCompilerControlFlagsAMD -> Flags)
-> (Flags -> ShowS)
-> Int
-> PipelineCompilerControlFlagsAMD
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixPipelineCompilerControlFlagBitsAMD
                            [(PipelineCompilerControlFlagsAMD, String)]
showTablePipelineCompilerControlFlagBitsAMD
                            String
conNamePipelineCompilerControlFlagBitsAMD
                            (\(PipelineCompilerControlFlagBitsAMD 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 PipelineCompilerControlFlagBitsAMD where
  readPrec :: ReadPrec PipelineCompilerControlFlagsAMD
readPrec = String
-> [(PipelineCompilerControlFlagsAMD, String)]
-> String
-> (Flags -> PipelineCompilerControlFlagsAMD)
-> ReadPrec PipelineCompilerControlFlagsAMD
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixPipelineCompilerControlFlagBitsAMD
                          [(PipelineCompilerControlFlagsAMD, String)]
showTablePipelineCompilerControlFlagBitsAMD
                          String
conNamePipelineCompilerControlFlagBitsAMD
                          Flags -> PipelineCompilerControlFlagsAMD
PipelineCompilerControlFlagBitsAMD


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"