module Language.SpirV.FPFastMathMode where
import Data.Word (Word32)
import Language.SpirV.SpirEnum
import qualified Language.SpirV.Capability as Capability
data FPFastMathMode =
None
| NotNaN
| NotInf
| NSZ
| AllowRecip
| Fast
deriving(Read, Show, Eq, Ord)
instance SpirEnum FPFastMathMode Word32 where
toWord None = 0
toWord NotNaN = 1
toWord NotInf = 2
toWord NSZ = 4
toWord AllowRecip = 8
toWord Fast = 16
fromWord 0 = Just None
fromWord 1 = Just NotNaN
fromWord 2 = Just NotInf
fromWord 4 = Just NSZ
fromWord 8 = Just AllowRecip
fromWord 16 = Just Fast
fromWord _ = Nothing
requiredCapabilities NotNaN = [Capability.Kernel]
requiredCapabilities NotInf = [Capability.Kernel]
requiredCapabilities NSZ = [Capability.Kernel]
requiredCapabilities AllowRecip = [Capability.Kernel]
requiredCapabilities Fast = [Capability.Kernel]
requiredCapabilities _ = []