{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE UnliftedFFITypes #-}
module Foreign.Prim.C
(
module Foreign.Prim.C.LtGHC806
, module Foreign.Prim.C.Atomic
, isSameByteArray#
, isSameMutableByteArray#
, toOrdering#
, fromOrdering#
, memcmpAddr#
, memcmpAddrByteArray#
, memcmpByteArray#
, memcmpByteArrayAddr#
, memsetWord8MutableByteArray#
, memsetWord8Addr#
, memsetInt8MutableByteArray#
, memsetInt8Addr#
, memsetWord16MutableByteArray#
, memsetWord16Addr#
, memsetInt16MutableByteArray#
, memsetInt16Addr#
, memsetWord32MutableByteArray#
, memsetWord32Addr#
, memsetInt32MutableByteArray#
, memsetInt32Addr#
, memsetWord64MutableByteArray#
, memsetWord64Addr#
, memsetInt64MutableByteArray#
, memsetInt64Addr#
, memmoveAddr#
, memmoveMutableByteArray#
, memmoveMutableByteArrayToAddr#
, memmoveMutableByteArrayFromAddr#
) where
import GHC.Exts
import GHC.Int
import GHC.Word
import Foreign.Prim.C.Atomic
import Foreign.Prim.C.LtGHC806
foreign import ccall unsafe "primal.c primal_ptreq"
isSameByteArray# :: ByteArray# -> ByteArray# -> Int#
foreign import ccall unsafe "primal.c primal_ptreq"
isSameMutableByteArray# :: MutableByteArray# s -> MutableByteArray# s -> Int#
toOrdering# :: Int# -> Ordering
toOrdering# =
\case
0# -> EQ
n# ->
if isTrue# (n# <# 0#)
then LT
else GT
fromOrdering# :: Ordering -> Int#
fromOrdering# =
\case
EQ -> 0#
LT -> -1#
GT -> 1#
foreign import ccall unsafe "primal.c primal_memcmp"
memcmpAddr# :: Addr# -> Int# -> Addr# -> Int# -> Int# -> Int#
foreign import ccall unsafe "primal.c primal_memcmp"
memcmpAddrByteArray# :: Addr# -> Int# -> ByteArray# -> Int# -> Int# -> Int#
foreign import ccall unsafe "primal.c primal_memcmp"
memcmpByteArray# :: ByteArray# -> Int# -> ByteArray# -> Int# -> Int# -> Int#
foreign import ccall unsafe "primal.c primal_memcmp"
memcmpByteArrayAddr# :: ByteArray# -> Int# -> Addr# -> Int# -> Int# -> Int#
foreign import ccall unsafe "primal.c primal_memset8"
memsetInt8MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Int8 -> IO ()
foreign import ccall unsafe "primal.c primal_memset8"
memsetInt8Addr# :: Addr# -> Int# -> Int# -> Int8 -> IO ()
foreign import ccall unsafe "primal.c primal_memset8"
memsetWord8MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Word8 -> IO ()
foreign import ccall unsafe "primal.c primal_memset8"
memsetWord8Addr# :: Addr# -> Int# -> Int# -> Word8 -> IO ()
foreign import ccall unsafe "primal.c primal_memset16"
memsetInt16MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Int16 -> IO ()
foreign import ccall unsafe "primal.c primal_memset16"
memsetInt16Addr# :: Addr# -> Int# -> Int# -> Int16 -> IO ()
foreign import ccall unsafe "primal.c primal_memset16"
memsetWord16MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Word16 -> IO ()
foreign import ccall unsafe "primal.c primal_memset16"
memsetWord16Addr# :: Addr# -> Int# -> Int# -> Word16 -> IO ()
foreign import ccall unsafe "primal.c primal_memset32"
memsetInt32MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Int32 -> IO ()
foreign import ccall unsafe "primal.c primal_memset32"
memsetInt32Addr# :: Addr# -> Int# -> Int# -> Int32 -> IO ()
foreign import ccall unsafe "primal.c primal_memset32"
memsetWord32MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Word32 -> IO ()
foreign import ccall unsafe "primal.c primal_memset32"
memsetWord32Addr# :: Addr# -> Int# -> Int# -> Word32 -> IO ()
foreign import ccall unsafe "primal.c primal_memset64"
memsetInt64MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Int64 -> IO ()
foreign import ccall unsafe "primal.c primal_memset64"
memsetInt64Addr# :: Addr# -> Int# -> Int# -> Int64 -> IO ()
foreign import ccall unsafe "primal.c primal_memset64"
memsetWord64MutableByteArray# :: MutableByteArray# s -> Int# -> Int# -> Word64 -> IO ()
foreign import ccall unsafe "primal.c primal_memset64"
memsetWord64Addr# :: Addr# -> Int# -> Int# -> Word64 -> IO ()
foreign import ccall unsafe "primal.c primal_memmove"
memmoveAddr# :: Addr#
-> Int#
-> Addr#
-> Int#
-> Int#
-> IO ()
foreign import ccall unsafe "primal.c primal_memmove"
memmoveMutableByteArray# :: MutableByteArray# s
-> Int#
-> MutableByteArray# s
-> Int#
-> Int#
-> IO ()
foreign import ccall unsafe "primal.c primal_memmove"
memmoveMutableByteArrayToAddr# :: MutableByteArray# s
-> Int#
-> Addr#
-> Int#
-> Int#
-> IO ()
foreign import ccall unsafe "primal.c primal_memmove"
memmoveMutableByteArrayFromAddr# :: Addr#
-> Int#
-> MutableByteArray# s
-> Int#
-> Int#
-> IO ()