Skip to content

Instantly share code, notes, and snippets.

@tibbe
Created June 9, 2014 11:15
Show Gist options
  • Save tibbe/02e6dfdb5a63a9793651 to your computer and use it in GitHub Desktop.
Save tibbe/02e6dfdb5a63a9793651 to your computer and use it in GitHub Desktop.
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE UnboxedTuples #-}
module Test where
import GHC.Exts
add :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s, Int# #)
add mba ix n s = fetchAddIntArray# mba ix n s
nand :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s, Int# #)
nand mba ix n s = fetchNandIntArray# mba ix n s
cas :: MutableByteArray# s -> Int# -> Int# -> Int# -> State# s -> (# State# s, Int# #)
cas mba ix old val s = casIntArray# mba ix old val s
read :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s
read mba ix n s = writeIntArray# mba ix n s
write :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #)
write mba ix s = atomicReadIntArray# mba ix s
.data
.align 3
.align 0
.globl __stginit_main:Test
__stginit_main:Test:
.data
.align 3
.align 0
.globl Test.write_closure
Test.write_closure:
.quad Test.write_info
.text
.align 3
Test.write_info_dsp:
.text
.align 3
.quad 12884901902
.quad 0
.quad 15
.globl Test.write_info
Test.write_info:
_c1CK:
shlq $3,%rsi
leaq 16(%r14),%rax
addq %rsi,%rax
movq (%rax),%rax
movq %rax,%rbx
jmp *(%rbp)
.long Test.write_info - Test.write_info_dsp
.data
.align 3
.align 0
.globl Test.read_closure
Test.read_closure:
.quad Test.read_info
.text
.align 3
Test.read_info_dsp:
.text
.align 3
.quad 17179869204
.quad 0
.quad 15
.globl Test.read_info
Test.read_info:
_c1CX:
movq %rdi,16(%r14,%rsi,8)
jmp *(%rbp)
.long Test.read_info - Test.read_info_dsp
.data
.align 3
.align 0
.globl Test.cas_closure
Test.cas_closure:
.quad Test.cas_info
.text
.align 3
.globl Test.cas_slow
Test.cas_slow:
_c1D5:
movq 24(%rbp),%r8
movq 16(%rbp),%rdi
movq 8(%rbp),%rsi
movq (%rbp),%r14
addq $32,%rbp
jmp Test.cas_info
.text
.align 3
Test.cas_info_dsp:
.text
.align 3
.quad Test.cas_slow-(Test.cas_info)+0
.quad 900
.quad 0
.quad 21474836480
.quad 0
.quad 15
.globl Test.cas_info
Test.cas_info:
_c1Dd:
shlq $3,%rsi
leaq 16(%r14),%rax
addq %rsi,%rax
movq %rax,%rbx
movq %rdi,%rax
lock
cmpxchgq %r8,(%rbx)
movq %rax,%rbx
jmp *(%rbp)
.long Test.cas_info - Test.cas_info_dsp
.data
.align 3
.align 0
.globl Test.nand_closure
Test.nand_closure:
.quad Test.nand_info
.text
.align 3
Test.nand_info_dsp:
.text
.align 3
.quad 17179869204
.quad 0
.quad 15
.globl Test.nand_info
Test.nand_info:
_c1Dx:
shlq $3,%rsi
leaq 16(%r14),%rax
addq %rsi,%rax
movq %rax,%rbx
movq (%rax),%rax
_n1DF:
movq %rax,%rcx
movq %rax,%rdx
andq %rdi,%rdx
notq %rdx
lock
cmpxchgq %rdx,(%rbx)
jne _n1DF
movq %rcx,%rbx
jmp *(%rbp)
.long Test.nand_info - Test.nand_info_dsp
.data
.align 3
.align 0
.globl Test.add_closure
Test.add_closure:
.quad Test.add_info
.text
.align 3
Test.add_info_dsp:
.text
.align 3
.quad 17179869204
.quad 0
.quad 15
.globl Test.add_info
Test.add_info:
_c1DQ:
shlq $3,%rsi
leaq 16(%r14),%rax
addq %rsi,%rax
lock
xaddq %rdi,(%rax)
movq %rdi,%rbx
jmp *(%rbp)
.long Test.add_info - Test.add_info_dsp
.const_data
.align 3
.align 0
S1E1_srt:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment