module LLVM.FFI.Support.Host (
getHostCPUName,
getHostFeatures,
freeFeatures,
getFirstFeature,
getNextFeature,
getFeatureName,
getFeatureSupport,
) where
import qualified LLVM.FFI.Core as LLVM
import qualified Foreign.C.Types as C
import Foreign.C.String (CString)
import Foreign.Ptr (Ptr)
import Data.Typeable (Typeable)
foreign import ccall unsafe "LLVMGetHostCPUName" getHostCPUName
:: Ptr C.CSize -> IO CString
data FeatureMap
deriving (Typeable)
type FeatureMapRef = Ptr FeatureMap
data FeatureIterator
deriving (Typeable)
type FeatureIteratorRef = Ptr FeatureIterator
foreign import ccall unsafe "LLVMGetHostFeatures" getHostFeatures
:: IO FeatureMapRef
foreign import ccall unsafe "LLVMFreeFeatures" freeFeatures
:: FeatureMapRef -> IO ()
foreign import ccall unsafe "LLVMGetFirstFeature" getFirstFeature
:: FeatureMapRef -> IO FeatureIteratorRef
foreign import ccall unsafe "LLVMGetNextFeature" getNextFeature
:: FeatureMapRef -> FeatureIteratorRef -> IO FeatureIteratorRef
foreign import ccall unsafe "LLVMGetFeatureName" getFeatureName
:: FeatureIteratorRef -> IO CString
foreign import ccall unsafe "LLVMGetFeatureSupport" getFeatureSupport
:: FeatureIteratorRef -> IO LLVM.Bool