{-# LINE 1 "./Foreign/NVVM/Info.chs" #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}
module Foreign.NVVM.Info (
nvvmVersion,
nvvmIRVersion,
) where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import Foreign.NVVM.Error
import Foreign.NVVM.Internal.C2HS
import Foreign.Marshal
import Foreign.C
import Foreign.Ptr
import Data.Version
import System.IO.Unsafe
{-# LINE 31 "./Foreign/NVVM/Info.chs" #-}
nvvmIRVersion :: (Version, Version)
nvvmIRVersion = unsafePerformIO $ do
(status, r1, r2, d1, d2) <- c_nvvmIRVersion
resultIfOk (status, (makeVersion [r1,r2], makeVersion [d1,d2]))
c_nvvmIRVersion :: IO ((Status), (Int), (Int), (Int), (Int))
c_nvvmIRVersion =
alloca $ \a1' ->
alloca $ \a2' ->
alloca $ \a3' ->
alloca $ \a4' ->
c_nvvmIRVersion'_ a1' a2' a3' a4' >>= \res ->
let {res' = cToEnum res} in
peekIntConv a1'>>= \a1'' ->
peekIntConv a2'>>= \a2'' ->
peekIntConv a3'>>= \a3'' ->
peekIntConv a4'>>= \a4'' ->
return (res', a1'', a2'', a3'', a4'')
{-# LINE 58 "./Foreign/NVVM/Info.chs" #-}
nvvmVersion :: Version
nvvmVersion = unsafePerformIO $ do
(status, v1, v2) <- c_nvvmVersion
resultIfOk (status, makeVersion [v1,v2])
c_nvvmVersion :: IO ((Status), (Int), (Int))
c_nvvmVersion =
alloca $ \a1' ->
alloca $ \a2' ->
c_nvvmVersion'_ a1' a2' >>= \res ->
let {res' = cToEnum res} in
peekIntConv a1'>>= \a1'' ->
peekIntConv a2'>>= \a2'' ->
return (res', a1'', a2'')
{-# LINE 76 "./Foreign/NVVM/Info.chs" #-}
foreign import ccall unsafe "Foreign/NVVM/Info.chs.h nvvmIRVersion"
c_nvvmIRVersion'_ :: ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))
foreign import ccall unsafe "Foreign/NVVM/Info.chs.h nvvmVersion"
c_nvvmVersion'_ :: ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))