{-# LANGUAGE ForeignFunctionInterface #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module Raaz.Core.CpuSupports
( sse, sse2, sse3
, sse4_1, sse4_2
, avx, avx2
) where
import Foreign.C
import Raaz.Core.Prelude
foreign import ccall unsafe "raaz_supports_sse"
c_sse :: IO CInt
foreign import ccall unsafe "raaz_supports_sse2"
c_sse2 :: IO CInt
foreign import ccall unsafe "raaz_supports_sse3"
c_sse3 :: IO CInt
foreign import ccall unsafe "raaz_supports_sse4_1"
c_sse4_1 :: IO CInt
foreign import ccall unsafe "raaz_supports_sse4_2"
c_sse4_2 :: IO CInt
foreign import ccall unsafe "raaz_supports_avx"
c_avx :: IO CInt
foreign import ccall unsafe "raaz_supports_avx2"
c_avx2 :: IO CInt
{-# NOINLINE gccBuiltInToBool #-}
gccBuiltInToBool :: IO CInt -> IO Bool
gccBuiltInToBool :: IO CInt -> IO Bool
gccBuiltInToBool = (CInt -> Bool) -> IO CInt -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (CInt -> CInt -> Bool
forall a. Ord a => a -> a -> Bool
>CInt
0)
sse :: IO Bool
sse :: IO Bool
sse = IO CInt -> IO Bool
gccBuiltInToBool IO CInt
c_sse
sse2 :: IO Bool
sse2 :: IO Bool
sse2 = IO CInt -> IO Bool
gccBuiltInToBool IO CInt
c_sse2
sse3 :: IO Bool
sse3 :: IO Bool
sse3 = IO CInt -> IO Bool
gccBuiltInToBool IO CInt
c_sse3
sse4_1 :: IO Bool
sse4_1 :: IO Bool
sse4_1 = IO CInt -> IO Bool
gccBuiltInToBool IO CInt
c_sse4_1
sse4_2 :: IO Bool
sse4_2 :: IO Bool
sse4_2 = IO CInt -> IO Bool
gccBuiltInToBool IO CInt
c_sse4_2
avx :: IO Bool
avx :: IO Bool
avx = IO CInt -> IO Bool
gccBuiltInToBool IO CInt
c_avx
avx2 :: IO Bool
avx2 :: IO Bool
avx2 = IO CInt -> IO Bool
gccBuiltInToBool IO CInt
c_avx2