{-# 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
--
-- [__Ratification Status__]
--     Not ratified
--
-- [__Extension and Version Dependencies__; __Contact__]
--
--     -   Matthaeus G. Chajdas
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_AMD_pipeline_compiler_control] @anteru%0A*Here describe the issue or question you have about the VK_AMD_pipeline_compiler_control extension* >
--
-- == 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 creation information to
-- specify additional flags that affect pipeline compilation.
--
-- == New Structures
--
-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX':
--
--     -   '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://registry.khronos.org/vulkan/specs/1.3-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 Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
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.Core10.Enums.StructureType (StructureType)
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
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control VK_AMD_pipeline_compiler_control>,
-- '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
-> PipelineCompilerControlFlagBitsAMD
compilerControlFlags :: PipelineCompilerControlFlagsAMD }
  deriving (Typeable, PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> Bool
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 :: forall b.
PipelineCompilerControlCreateInfoAMD
-> (Ptr PipelineCompilerControlCreateInfoAMD -> IO b) -> IO b
withCStruct PipelineCompilerControlCreateInfoAMD
x Ptr PipelineCompilerControlCreateInfoAMD -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PipelineCompilerControlCreateInfoAMD
p -> 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 :: forall b.
Ptr PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlCreateInfoAMD -> IO b -> IO b
pokeCStruct Ptr PipelineCompilerControlCreateInfoAMD
p PipelineCompilerControlCreateInfoAMD{PipelineCompilerControlFlagBitsAMD
compilerControlFlags :: PipelineCompilerControlFlagBitsAMD
$sel:compilerControlFlags:PipelineCompilerControlCreateInfoAMD :: PipelineCompilerControlCreateInfoAMD
-> PipelineCompilerControlFlagBitsAMD
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineCompilerControlFlagsAMD)) (PipelineCompilerControlFlagBitsAMD
compilerControlFlags)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PipelineCompilerControlCreateInfoAMD -> IO b -> IO b
pokeZeroCStruct Ptr PipelineCompilerControlCreateInfoAMD
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCompilerControlCreateInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    IO b
f

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

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

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


type PipelineCompilerControlFlagsAMD = PipelineCompilerControlFlagBitsAMD

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

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

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

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

instance Show PipelineCompilerControlFlagBitsAMD where
  showsPrec :: Int -> PipelineCompilerControlFlagBitsAMD -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPipelineCompilerControlFlagBitsAMD
      [(PipelineCompilerControlFlagBitsAMD, String)]
showTablePipelineCompilerControlFlagBitsAMD
      String
conNamePipelineCompilerControlFlagBitsAMD
      (\(PipelineCompilerControlFlagBitsAMD Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read PipelineCompilerControlFlagBitsAMD where
  readPrec :: ReadPrec PipelineCompilerControlFlagBitsAMD
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineCompilerControlFlagBitsAMD
      [(PipelineCompilerControlFlagBitsAMD, String)]
showTablePipelineCompilerControlFlagBitsAMD
      String
conNamePipelineCompilerControlFlagBitsAMD
      Flags -> PipelineCompilerControlFlagBitsAMD
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 :: forall a. Integral a => a
$mAMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> 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 :: forall a. (Eq a, IsString a) => a
$mAMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control"