module Graphics.UI.SDL.CPUInfo
    ( hasRDTSC
    , hasMMX
    , hasMMXExt
    , has3DNow
    , has3DNowExt
    , hasSSE
    , hasSSE2
    , hasAltiVec
    ) where

import Foreign.Marshal.Utils (toBool)

foreign import ccall unsafe "SDL_HasRDTSC" sdlHasRDTSC :: Int
-- |This function returns @True@ if the CPU has the RDTSC instruction.
hasRDTSC :: Bool
hasRDTSC :: Bool
hasRDTSC = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHasRDTSC

foreign import ccall unsafe "SDL_HasMMX" sdlHasMMX :: Int
-- |This function returns @True@ if the CPU has MMX features.
hasMMX :: Bool
hasMMX :: Bool
hasMMX = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHasMMX

foreign import ccall unsafe "SDL_HasMMXExt" sdlHasMMXExt :: Int
-- |This function returns @True@ if the CPU has MMX Ext. features.
hasMMXExt :: Bool
hasMMXExt :: Bool
hasMMXExt = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHasMMXExt

foreign import ccall unsafe "SDL_Has3DNow" sdlHas3DNow :: Int
-- |This function returns @True@ if the CPU has 3DNow features.
has3DNow :: Bool
has3DNow :: Bool
has3DNow = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHas3DNow

foreign import ccall unsafe "SDL_Has3DNowExt" sdlHas3DNowExt :: Int
-- |This function returns @True@ if the CPU has 3DNow! Ext. features.
has3DNowExt :: Bool
has3DNowExt :: Bool
has3DNowExt = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHas3DNowExt

foreign import ccall unsafe "SDL_HasSSE" sdlHasSSE :: Int
-- |This function returns @True@ if the CPU has SSE features.
hasSSE :: Bool
hasSSE :: Bool
hasSSE = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHasSSE

foreign import ccall unsafe "SDL_HasSSE2" sdlHasSSE2 :: Int
-- |This function returns @True@ if the CPU has SSE2 features.
hasSSE2 :: Bool
hasSSE2 :: Bool
hasSSE2 = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHasSSE2

foreign import ccall unsafe "SDL_HasAltiVec" sdlHasAltiVec :: Int
-- |This function returns @True@ if the CPU has AltiVec features.
hasAltiVec :: Bool
hasAltiVec :: Bool
hasAltiVec = Int -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool Int
sdlHasAltiVec