{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TypeSynonymInstances #-}

module Data.SpirV.Enum.RawAccessChainOperands where

import Data.Bits (Bits, FiniteBits, (.|.))
import Data.Word (Word32)
import Foreign.Storable (Storable)

type RawAccessChainOperands = RawAccessChainOperandsBits

newtype RawAccessChainOperandsBits = RawAccessChainOperandsBits Word32
  deriving newtype (RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
(RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> Bool)
-> Eq RawAccessChainOperandsBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
== :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
$c/= :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
/= :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
Eq, Eq RawAccessChainOperandsBits
Eq RawAccessChainOperandsBits =>
(RawAccessChainOperandsBits
 -> RawAccessChainOperandsBits -> Ordering)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> Bool)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> Bool)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> Bool)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> Bool)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> RawAccessChainOperandsBits)
-> Ord RawAccessChainOperandsBits
RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> Ordering
RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> Ordering
compare :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> Ordering
$c< :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
< :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
$c<= :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
<= :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
$c> :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
> :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
$c>= :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
>= :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits -> Bool
$cmax :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
max :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
$cmin :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
min :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
Ord, Ptr RawAccessChainOperandsBits -> IO RawAccessChainOperandsBits
Ptr RawAccessChainOperandsBits
-> Int -> IO RawAccessChainOperandsBits
Ptr RawAccessChainOperandsBits
-> Int -> RawAccessChainOperandsBits -> IO ()
Ptr RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> IO ()
RawAccessChainOperandsBits -> Int
(RawAccessChainOperandsBits -> Int)
-> (RawAccessChainOperandsBits -> Int)
-> (Ptr RawAccessChainOperandsBits
    -> Int -> IO RawAccessChainOperandsBits)
-> (Ptr RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits -> IO ())
-> (forall b. Ptr b -> Int -> IO RawAccessChainOperandsBits)
-> (forall b. Ptr b -> Int -> RawAccessChainOperandsBits -> IO ())
-> (Ptr RawAccessChainOperandsBits
    -> IO RawAccessChainOperandsBits)
-> (Ptr RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> IO ())
-> Storable RawAccessChainOperandsBits
forall b. Ptr b -> Int -> IO RawAccessChainOperandsBits
forall b. Ptr b -> Int -> RawAccessChainOperandsBits -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: RawAccessChainOperandsBits -> Int
sizeOf :: RawAccessChainOperandsBits -> Int
$calignment :: RawAccessChainOperandsBits -> Int
alignment :: RawAccessChainOperandsBits -> Int
$cpeekElemOff :: Ptr RawAccessChainOperandsBits
-> Int -> IO RawAccessChainOperandsBits
peekElemOff :: Ptr RawAccessChainOperandsBits
-> Int -> IO RawAccessChainOperandsBits
$cpokeElemOff :: Ptr RawAccessChainOperandsBits
-> Int -> RawAccessChainOperandsBits -> IO ()
pokeElemOff :: Ptr RawAccessChainOperandsBits
-> Int -> RawAccessChainOperandsBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO RawAccessChainOperandsBits
peekByteOff :: forall b. Ptr b -> Int -> IO RawAccessChainOperandsBits
$cpokeByteOff :: forall b. Ptr b -> Int -> RawAccessChainOperandsBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> RawAccessChainOperandsBits -> IO ()
$cpeek :: Ptr RawAccessChainOperandsBits -> IO RawAccessChainOperandsBits
peek :: Ptr RawAccessChainOperandsBits -> IO RawAccessChainOperandsBits
$cpoke :: Ptr RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> IO ()
poke :: Ptr RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> IO ()
Storable, Eq RawAccessChainOperandsBits
RawAccessChainOperandsBits
Eq RawAccessChainOperandsBits =>
(RawAccessChainOperandsBits
 -> RawAccessChainOperandsBits -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> RawAccessChainOperandsBits -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> RawAccessChainOperandsBits
-> (Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits -> Int -> Bool)
-> (RawAccessChainOperandsBits -> Maybe Int)
-> (RawAccessChainOperandsBits -> Int)
-> (RawAccessChainOperandsBits -> Bool)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits
    -> Int -> RawAccessChainOperandsBits)
-> (RawAccessChainOperandsBits -> Int)
-> Bits RawAccessChainOperandsBits
Int -> RawAccessChainOperandsBits
RawAccessChainOperandsBits -> Bool
RawAccessChainOperandsBits -> Int
RawAccessChainOperandsBits -> Maybe Int
RawAccessChainOperandsBits -> RawAccessChainOperandsBits
RawAccessChainOperandsBits -> Int -> Bool
RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
.&. :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
$c.|. :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
.|. :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
$cxor :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
xor :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
$ccomplement :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits
complement :: RawAccessChainOperandsBits -> RawAccessChainOperandsBits
$cshift :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
shift :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$crotate :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
rotate :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$czeroBits :: RawAccessChainOperandsBits
zeroBits :: RawAccessChainOperandsBits
$cbit :: Int -> RawAccessChainOperandsBits
bit :: Int -> RawAccessChainOperandsBits
$csetBit :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
setBit :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$cclearBit :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
clearBit :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$ccomplementBit :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
complementBit :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$ctestBit :: RawAccessChainOperandsBits -> Int -> Bool
testBit :: RawAccessChainOperandsBits -> Int -> Bool
$cbitSizeMaybe :: RawAccessChainOperandsBits -> Maybe Int
bitSizeMaybe :: RawAccessChainOperandsBits -> Maybe Int
$cbitSize :: RawAccessChainOperandsBits -> Int
bitSize :: RawAccessChainOperandsBits -> Int
$cisSigned :: RawAccessChainOperandsBits -> Bool
isSigned :: RawAccessChainOperandsBits -> Bool
$cshiftL :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
shiftL :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$cunsafeShiftL :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
unsafeShiftL :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$cshiftR :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
shiftR :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$cunsafeShiftR :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
unsafeShiftR :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$crotateL :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
rotateL :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$crotateR :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
rotateR :: RawAccessChainOperandsBits -> Int -> RawAccessChainOperandsBits
$cpopCount :: RawAccessChainOperandsBits -> Int
popCount :: RawAccessChainOperandsBits -> Int
Bits, Bits RawAccessChainOperandsBits
Bits RawAccessChainOperandsBits =>
(RawAccessChainOperandsBits -> Int)
-> (RawAccessChainOperandsBits -> Int)
-> (RawAccessChainOperandsBits -> Int)
-> FiniteBits RawAccessChainOperandsBits
RawAccessChainOperandsBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: RawAccessChainOperandsBits -> Int
finiteBitSize :: RawAccessChainOperandsBits -> Int
$ccountLeadingZeros :: RawAccessChainOperandsBits -> Int
countLeadingZeros :: RawAccessChainOperandsBits -> Int
$ccountTrailingZeros :: RawAccessChainOperandsBits -> Int
countTrailingZeros :: RawAccessChainOperandsBits -> Int
FiniteBits)

instance Semigroup RawAccessChainOperands where
  (RawAccessChainOperandsBits Word32
a) <> :: RawAccessChainOperandsBits
-> RawAccessChainOperandsBits -> RawAccessChainOperandsBits
<> (RawAccessChainOperandsBits Word32
b) = Word32 -> RawAccessChainOperandsBits
RawAccessChainOperandsBits (Word32
a Word32 -> Word32 -> Word32
forall a. Bits a => a -> a -> a
.|. Word32
b)

instance Monoid RawAccessChainOperands where
  mempty :: RawAccessChainOperandsBits
mempty = Word32 -> RawAccessChainOperandsBits
RawAccessChainOperandsBits Word32
0

pattern RobustnessPerComponentNV :: RawAccessChainOperandsBits
pattern $mRobustnessPerComponentNV :: forall {r}.
RawAccessChainOperandsBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bRobustnessPerComponentNV :: RawAccessChainOperandsBits
RobustnessPerComponentNV = RawAccessChainOperandsBits 0x00000001

pattern RobustnessPerElementNV :: RawAccessChainOperandsBits
pattern $mRobustnessPerElementNV :: forall {r}.
RawAccessChainOperandsBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bRobustnessPerElementNV :: RawAccessChainOperandsBits
RobustnessPerElementNV = RawAccessChainOperandsBits 0x00000002