module Language.SpirV.AddressingModel where
import Data.Word (Word32)
import Language.SpirV.SpirEnum
import qualified Language.SpirV.Capability as Capability
data AddressingModel =
Logical
| Physical32
| Physical64
deriving(Read, Show, Eq, Ord)
instance SpirEnum AddressingModel Word32 where
toWord Logical = 0
toWord Physical32 = 1
toWord Physical64 = 2
fromWord 0 = Just Logical
fromWord 1 = Just Physical32
fromWord 2 = Just Physical64
fromWord _ = Nothing
requiredCapabilities Physical32 = [Capability.Addresses]
requiredCapabilities Physical64 = [Capability.Addresses]
requiredCapabilities _ = []