packages feed

prim-0.1.0.0: src/Array/I64.hs

module Array.I64 where
import Array.Byte

index# :: A
       -> I64 -- Offset in elments
       -> I64
index# = indexInt64Array#

index## :: A
        -> I64 -- Offset in bytes
        -> I64
index## = indexWord8ArrayAsInt64#

read#, readA# :: M s -> I64 -> ST s I64
read# = readIntArray#
readA# = atomicReadIntArray#


write#,writeA# :: M s -> I64 -> I64 -> ST_ s
write# = writeIntArray#
writeA# = atomicWriteIntArray#

cas# :: M s
    -> I64 -- ^ Source offset
    -> I64 -- ^ Expected old value
    -> I64 -- ^ New value
    -> ST s I64 -- ^ The actual old value
cas# = casIntArray#

fetchAdd :: M s -- ^ Source
         -> I64 -- ^ Source offset
         -> I64 -- ^ Value to add
         -> ST s I64 -- ^ The old value
fetchAdd = fetchAddIntArray#

fetchSub :: M s -- ^ Source
         -> I64 -- ^ Source offset
         -> I64 -- ^ Value to subtract
         -> ST s I64 -- ^ The old value
fetchSub = fetchSubIntArray#

fetchAnd :: M s -- ^ Source
         -> I64 -- ^ Source offset
         -> I64 -- ^ Value to bitwise @and@
         -> ST s I64 -- ^ The old value
fetchAnd = fetchAndIntArray#

fetchNand :: M s -- ^ Source
          -> I64 -- ^ Source offset
          -> I64 -- ^ Value to bitwise @nand@
          -> ST s I64 -- ^ The old value
fetchNand = fetchNandIntArray#
fetchOr  :: M s -- ^ Source
         -> I64 -- ^ Source offset
         -> I64 -- ^ Value to bitwise @or@
         -> ST s I64 -- ^ The old value
fetchOr = fetchOrIntArray#

fetchXor :: M s -- ^ Source
         -> I64 -- ^ Source offset
         -> I64 -- ^ Value to bitwise @xor@
         -> ST s I64 -- ^ The old value
fetchXor = fetchXorIntArray#