{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UnliftedFFITypes #-}
module Foreign.Prim.C.Atomic
( module Foreign.Prim.C.Atomic
) where
import Control.Prim.Monad.Unsafe
import GHC.Exts
import GHC.Int
import GHC.Word
import Foreign.Prim.C.LtGHC802
#include "MachDeps.h"
ioCBoolToBoolBase :: IO CBool -> State# s -> (# State# s, Bool #)
ioCBoolToBoolBase :: IO CBool -> State# s -> (# State# s, Bool #)
ioCBoolToBoolBase IO CBool
m State# s
s =
case IO CBool -> State# s -> (# State# s, CBool #)
forall s' (m :: * -> *) a s.
MonadPrimBase s' m =>
m a -> State# s -> (# State# s, a #)
unsafePrimBase IO CBool
m State# s
s of
(# State# s
s', CBool (W8# Word#
w#) #) -> (# State# s
s', Int# -> Bool
isTrue# (Word# -> Int#
word2Int# Word#
w#) #)
{-# INLINE ioCBoolToBoolBase #-}
syncSynchronize# :: State# s -> State# s
syncSynchronize# :: State# s -> State# s
syncSynchronize# = IO () -> State# s -> State# s
forall s' (m :: * -> *) s.
MonadPrimBase s' m =>
m () -> State# s -> State# s
unsafePrimBase_ IO ()
syncSynchronize
{-# INLINE syncSynchronize# #-}
withMemBarrier# :: (State# s -> (# State# s, a #)) -> State# s -> (# State# s, a #)
withMemBarrier# :: (State# s -> (# State# s, a #)) -> State# s -> (# State# s, a #)
withMemBarrier# State# s -> (# State# s, a #)
f State# s
s = State# s -> (# State# s, a #)
f (State# s -> State# s
forall s. State# s -> State# s
syncSynchronize# State# s
s)
{-# INLINE withMemBarrier# #-}
withMemBarrier_# :: (State# s -> State# s) -> State# s -> State# s
withMemBarrier_# :: (State# s -> State# s) -> State# s -> State# s
withMemBarrier_# State# s -> State# s
f State# s
s = State# s -> State# s
f (State# s -> State# s
forall s. State# s -> State# s
syncSynchronize# State# s
s)
{-# INLINE withMemBarrier_# #-}
foreign import ccall unsafe "primal_atomic.c primal_sync_synchronize"
syncSynchronize :: IO ()
foreign import ccall unsafe "primal_atomic.c primal_sync8_lock_test_set"
syncLockTestSetInt8ArrayIO :: MutableByteArray# s -> Int# -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_lock_test_set"
syncLockTestSetInt8AddrIO :: Addr# -> Int# -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_lock_release"
syncLockReleaseInt8ArrayIO :: MutableByteArray# s -> Int# -> IO ()
foreign import ccall unsafe "primal_atomic.c primal_sync8_lock_release"
syncLockReleaseInt8AddrIO :: Addr# -> Int# -> IO ()
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas_bool"
syncCasInt8BoolAddrIO :: Addr# -> Int# -> Int8 -> Int8 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas_bool"
syncCasInt8BoolArrayIO :: MutableByteArray# s -> Int# -> Int8 -> Int8 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas_bool"
syncCasWord8BoolAddrIO :: Addr# -> Int# -> Word8 -> Word8 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas_bool"
syncCasWord8BoolArrayIO :: MutableByteArray# s -> Int# -> Word8 -> Word8 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas"
syncCasInt8AddrIO :: Addr# -> Int# -> Int8 -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas"
syncCasInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas"
syncCasWord8AddrIO :: Addr# -> Int# -> Word8 -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_cas"
syncCasWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_add"
syncAddFetchOldInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_add"
syncAddFetchOldInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_add"
syncAddFetchOldWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_add"
syncAddFetchOldWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_add_fetch"
syncAddFetchNewInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_add_fetch"
syncAddFetchNewInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_add_fetch"
syncAddFetchNewWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_add_fetch"
syncAddFetchNewWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_sub"
syncSubFetchOldInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_sub"
syncSubFetchOldInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_sub"
syncSubFetchOldWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_sub"
syncSubFetchOldWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_sub_fetch"
syncSubFetchNewInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_sub_fetch"
syncSubFetchNewInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_sub_fetch"
syncSubFetchNewWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_sub_fetch"
syncSubFetchNewWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_and"
syncAndFetchOldInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_and"
syncAndFetchOldInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_and"
syncAndFetchOldWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_and"
syncAndFetchOldWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_and_fetch"
syncAndFetchNewInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_and_fetch"
syncAndFetchNewInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_and_fetch"
syncAndFetchNewWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_and_fetch"
syncAndFetchNewWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_nand"
syncNandFetchOldInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_nand"
syncNandFetchOldInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_nand"
syncNandFetchOldWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_nand"
syncNandFetchOldWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_nand_fetch"
syncNandFetchNewInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_nand_fetch"
syncNandFetchNewInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_nand_fetch"
syncNandFetchNewWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_nand_fetch"
syncNandFetchNewWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_or"
syncOrFetchOldInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_or"
syncOrFetchOldInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_or"
syncOrFetchOldWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_or"
syncOrFetchOldWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_or_fetch"
syncOrFetchNewInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_or_fetch"
syncOrFetchNewInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_or_fetch"
syncOrFetchNewWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_or_fetch"
syncOrFetchNewWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_xor"
syncXorFetchOldInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_xor"
syncXorFetchOldInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_xor"
syncXorFetchOldWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_fetch_xor"
syncXorFetchOldWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_xor_fetch"
syncXorFetchNewInt8AddrIO :: Addr# -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_xor_fetch"
syncXorFetchNewInt8ArrayIO :: MutableByteArray# s -> Int# -> Int8 -> IO Int8
foreign import ccall unsafe "primal_atomic.c primal_sync8_xor_fetch"
syncXorFetchNewWord8AddrIO :: Addr# -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync8_xor_fetch"
syncXorFetchNewWord8ArrayIO :: MutableByteArray# s -> Int# -> Word8 -> IO Word8
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas_bool"
syncCasInt16BoolAddrIO :: Addr# -> Int# -> Int16 -> Int16 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas_bool"
syncCasInt16BoolArrayIO :: MutableByteArray# s -> Int# -> Int16 -> Int16 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas_bool"
syncCasWord16BoolAddrIO :: Addr# -> Int# -> Word16 -> Word16 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas_bool"
syncCasWord16BoolArrayIO :: MutableByteArray# s -> Int# -> Word16 -> Word16 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas"
syncCasInt16AddrIO :: Addr# -> Int# -> Int16 -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas"
syncCasInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas"
syncCasWord16AddrIO :: Addr# -> Int# -> Word16 -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_cas"
syncCasWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_add"
syncAddFetchOldInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_add"
syncAddFetchOldInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_add"
syncAddFetchOldWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_add"
syncAddFetchOldWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_add_fetch"
syncAddFetchNewInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_add_fetch"
syncAddFetchNewInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_add_fetch"
syncAddFetchNewWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_add_fetch"
syncAddFetchNewWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_sub"
syncSubFetchOldInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_sub"
syncSubFetchOldInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_sub"
syncSubFetchOldWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_sub"
syncSubFetchOldWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_sub_fetch"
syncSubFetchNewInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_sub_fetch"
syncSubFetchNewInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_sub_fetch"
syncSubFetchNewWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_sub_fetch"
syncSubFetchNewWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_and"
syncAndFetchOldInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_and"
syncAndFetchOldInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_and"
syncAndFetchOldWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_and"
syncAndFetchOldWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_and_fetch"
syncAndFetchNewInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_and_fetch"
syncAndFetchNewInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_and_fetch"
syncAndFetchNewWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_and_fetch"
syncAndFetchNewWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_nand"
syncNandFetchOldInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_nand"
syncNandFetchOldInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_nand"
syncNandFetchOldWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_nand"
syncNandFetchOldWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_nand_fetch"
syncNandFetchNewInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_nand_fetch"
syncNandFetchNewInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_nand_fetch"
syncNandFetchNewWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_nand_fetch"
syncNandFetchNewWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_or"
syncOrFetchOldInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_or"
syncOrFetchOldInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_or"
syncOrFetchOldWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_or"
syncOrFetchOldWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_or_fetch"
syncOrFetchNewInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_or_fetch"
syncOrFetchNewInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_or_fetch"
syncOrFetchNewWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_or_fetch"
syncOrFetchNewWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_xor"
syncXorFetchOldInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_xor"
syncXorFetchOldInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_xor"
syncXorFetchOldWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_fetch_xor"
syncXorFetchOldWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_xor_fetch"
syncXorFetchNewInt16AddrIO :: Addr# -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_xor_fetch"
syncXorFetchNewInt16ArrayIO :: MutableByteArray# s -> Int# -> Int16 -> IO Int16
foreign import ccall unsafe "primal_atomic.c primal_sync16_xor_fetch"
syncXorFetchNewWord16AddrIO :: Addr# -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync16_xor_fetch"
syncXorFetchNewWord16ArrayIO :: MutableByteArray# s -> Int# -> Word16 -> IO Word16
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas_bool"
syncCasInt32BoolAddrIO :: Addr# -> Int# -> Int32 -> Int32 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas_bool"
syncCasInt32BoolArrayIO :: MutableByteArray# s -> Int# -> Int32 -> Int32 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas_bool"
syncCasWord32BoolAddrIO :: Addr# -> Int# -> Word32 -> Word32 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas_bool"
syncCasWord32BoolArrayIO :: MutableByteArray# s -> Int# -> Word32 -> Word32 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas"
syncCasInt32AddrIO :: Addr# -> Int# -> Int32 -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas"
syncCasInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas"
syncCasWord32AddrIO :: Addr# -> Int# -> Word32 -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_cas"
syncCasWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_add"
syncAddFetchOldInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_add"
syncAddFetchOldInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_add"
syncAddFetchOldWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_add"
syncAddFetchOldWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_add_fetch"
syncAddFetchNewInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_add_fetch"
syncAddFetchNewInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_add_fetch"
syncAddFetchNewWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_add_fetch"
syncAddFetchNewWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_sub"
syncSubFetchOldInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_sub"
syncSubFetchOldInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_sub"
syncSubFetchOldWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_sub"
syncSubFetchOldWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_sub_fetch"
syncSubFetchNewInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_sub_fetch"
syncSubFetchNewInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_sub_fetch"
syncSubFetchNewWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_sub_fetch"
syncSubFetchNewWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_and"
syncAndFetchOldInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_and"
syncAndFetchOldInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_and"
syncAndFetchOldWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_and"
syncAndFetchOldWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_and_fetch"
syncAndFetchNewInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_and_fetch"
syncAndFetchNewInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_and_fetch"
syncAndFetchNewWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_and_fetch"
syncAndFetchNewWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_nand"
syncNandFetchOldInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_nand"
syncNandFetchOldInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_nand"
syncNandFetchOldWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_nand"
syncNandFetchOldWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_nand_fetch"
syncNandFetchNewInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_nand_fetch"
syncNandFetchNewInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_nand_fetch"
syncNandFetchNewWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_nand_fetch"
syncNandFetchNewWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_or"
syncOrFetchOldInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_or"
syncOrFetchOldInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_or"
syncOrFetchOldWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_or"
syncOrFetchOldWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_or_fetch"
syncOrFetchNewInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_or_fetch"
syncOrFetchNewInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_or_fetch"
syncOrFetchNewWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_or_fetch"
syncOrFetchNewWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_xor"
syncXorFetchOldInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_xor"
syncXorFetchOldInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_xor"
syncXorFetchOldWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_fetch_xor"
syncXorFetchOldWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_xor_fetch"
syncXorFetchNewInt32AddrIO :: Addr# -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_xor_fetch"
syncXorFetchNewInt32ArrayIO :: MutableByteArray# s -> Int# -> Int32 -> IO Int32
foreign import ccall unsafe "primal_atomic.c primal_sync32_xor_fetch"
syncXorFetchNewWord32AddrIO :: Addr# -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync32_xor_fetch"
syncXorFetchNewWord32ArrayIO :: MutableByteArray# s -> Int# -> Word32 -> IO Word32
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasIntBoolAddrIO :: Addr# -> Int# -> Int -> Int -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasIntBoolArrayIO :: MutableByteArray# s -> Int# -> Int -> Int -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasWordBoolAddrIO :: Addr# -> Int# -> Word -> Word -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasWordBoolArrayIO :: MutableByteArray# s -> Int# -> Word -> Word -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasIntAddrIO :: Addr# -> Int# -> Int -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasIntArrayIO :: MutableByteArray# s -> Int# -> Int -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasWordAddrIO :: Addr# -> Int# -> Word -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasWordArrayIO :: MutableByteArray# s -> Int# -> Word -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewIntAddrIO :: Addr# -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewIntArrayIO :: MutableByteArray# s -> Int# -> Int -> IO Int
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewWordAddrIO :: Addr# -> Int# -> Word -> IO Word
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewWordArrayIO :: MutableByteArray# s -> Int# -> Word -> IO Word
#if WORD_SIZE_IN_BITS >= 64
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasInt64BoolAddrIO :: Addr# -> Int# -> Int64 -> Int64 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasInt64BoolArrayIO :: MutableByteArray# s -> Int# -> Int64 -> Int64 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasWord64BoolAddrIO :: Addr# -> Int# -> Word64 -> Word64 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas_bool"
syncCasWord64BoolArrayIO :: MutableByteArray# s -> Int# -> Word64 -> Word64 -> IO CBool
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasInt64AddrIO :: Addr# -> Int# -> Int64 -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasWord64AddrIO :: Addr# -> Int# -> Word64 -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_cas"
syncCasWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_add"
syncAddFetchOldWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_add_fetch"
syncAddFetchNewWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_sub"
syncSubFetchOldWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_sub_fetch"
syncSubFetchNewWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_and"
syncAndFetchOldWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_and_fetch"
syncAndFetchNewWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_nand"
syncNandFetchOldWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_nand_fetch"
syncNandFetchNewWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_or"
syncOrFetchOldWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_or_fetch"
syncOrFetchNewWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_fetch_xor"
syncXorFetchOldWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewInt64AddrIO :: Addr# -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewInt64ArrayIO :: MutableByteArray# s -> Int# -> Int64 -> IO Int64
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewWord64AddrIO :: Addr# -> Int# -> Word64 -> IO Word64
foreign import ccall unsafe "primal_atomic.c primal_sync_xor_fetch"
syncXorFetchNewWord64ArrayIO :: MutableByteArray# s -> Int# -> Word64 -> IO Word64
#endif