Skip to content

Instantly share code, notes, and snippets.

@eholk
Last active January 12, 2017 01:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eholk/a9cf2a5cc4340ed5dde991792f3ee4b1 to your computer and use it in GitHub Desktop.
Save eholk/a9cf2a5cc4340ed5dde991792f3ee4b1 to your computer and use it in GitHub Desktop.
(module
(type $rustfn-0-2 (func (param i32) (result i32)))
(type $rustfn-0-4 (func))
(type $rustfn-0-5 (func))
(type $__wasm_start (func))
(type $rustfn-0-19 (func (param i32 i32) (result i32)))
(type $rustfn-0-33 (func (param i32 i32) (result i32)))
(type $rustfn-0-44 (func (param i32 i32) (result i32)))
(type $rustfn-0-53 (func (param i32 i32)))
(memory $0 1024 1024)
(export "memory" (memory $0))
(export "fibonacci_recursive" (func $fibonacci_recursive))
(export "main" (func $main))
(export "rust_entry" (func $__wasm_start))
(export "_i32_as_PartialEq_::eq" (func $_i32_as_PartialEq_::eq))
(export "_i32_as_PartialEq_::ne" (func $_i32_as_PartialEq_::ne))
(export "_i32_as_Add_::add" (func $_i32_as_Add_::add))
(export "_i32_as_Sub_::sub" (func $_i32_as_Sub_::sub))
(export "_i32_as_AddAssign_::add_assign" (func $_i32_as_AddAssign_::add_assign))
(start $__wasm_start)
(func $fibonacci_recursive (type $rustfn-0-2) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i32)
(local $10 i32)
(local $11 i32)
(local $12 i32)
(local $13 i32)
(local $14 i32)
(local $15 i32)
(local $16 i32)
(local $17 i32)
(local $18 i32)
(local $19 i32)
(local $20 i64)
[unreachable] [unreachable] (block
[unreachable] (block $block$1$break
[none] (set_local $18
[i32] (i32.load
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$1$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$5$break
[none] (block $block$2$break
[none] (block $bb0
[none] (set_local $1
[i32] (get_local $0)
)
[none] (set_local $4
[i32] (get_local $1)
)
[none] (set_local $3
[i32] (i32.eq
[i32] (get_local $4)
[i32] (i32.const 0)
)
)
)
[none] (if
[i32] (get_local $3)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
[unreachable] [unreachable] (block
[unreachable] (block
[none] (block $block$3$break
[none] (block $bb3
[none] (set_local $6
[i32] (get_local $1)
)
[none] (set_local $5
[i32] (i32.eq
[i32] (get_local $6)
[i32] (i32.const 1)
)
)
)
[none] (if
[i32] (get_local $5)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$3$break)
)
)
)
[unreachable] [unreachable] (block
[none] (block $bb2
[none] (set_local $2
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$5$break)
)
)
)
)
)
)
[unreachable] [unreachable] (block
[none] (block $bb1
[none] (set_local $2
[i32] (i32.const 1)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$5$break)
)
)
)
[unreachable] [unreachable] (block
[none] (block $block$13$break
[none] (block $bb4
)
[none] (if
[i32] (get_local $2)
[unreachable] [unreachable] (block
[unreachable] (block
[none] (block $bb5
[none] (set_local $7
[i32] (get_local $1)
)
[none] (set_local $17
[i32] (get_local $7)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$13$break)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (block
[unreachable] (block $block$8$break
[none] (block $bb6
[none] (set_local $10
[i32] (get_local $1)
)
[none] (set_local $20
[i64] (i64.sub
[i64] (i64.extend_s/i32
[i32] (get_local $10)
)
[i64] (i64.extend_s/i32
[i32] (i32.const 1)
)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (tee_local $11
[i32] (i32.sub
[i32] (i32.load
[i32] (i32.const 0)
)
[i32] (i32.const 64)
)
)
)
[none] (i32.store
[i32] (get_local $11)
[i32] (i32.wrap/i64
[i64] (get_local $20)
)
)
[none] (i32.store offset=4
[i32] (get_local $11)
[i32] (i32.wrap/i64
[i64] (i64.shr_u
[i64] (get_local $20)
[i64] (i64.const 32)
)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$8$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$9$break
[none] (block $bb7
[none] (set_local $9
[i32] (i32.load
[i32] (get_local $11)
)
)
[none] (set_local $8
[i32] (call $fibonacci_recursive
[i32] (get_local $9)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$9$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$10$break
[none] (block $bb8
[none] (set_local $14
[i32] (get_local $1)
)
[none] (set_local $20
[i64] (i64.sub
[i64] (i64.extend_s/i32
[i32] (get_local $14)
)
[i64] (i64.extend_s/i32
[i32] (i32.const 2)
)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (tee_local $15
[i32] (i32.sub
[i32] (i32.load
[i32] (i32.const 0)
)
[i32] (i32.const 64)
)
)
)
[none] (i32.store
[i32] (get_local $15)
[i32] (i32.wrap/i64
[i64] (get_local $20)
)
)
[none] (i32.store offset=4
[i32] (get_local $15)
[i32] (i32.wrap/i64
[i64] (i64.shr_u
[i64] (get_local $20)
[i64] (i64.const 32)
)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$10$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$11$break
[none] (block $bb9
[none] (set_local $13
[i32] (i32.load
[i32] (get_local $15)
)
)
[none] (set_local $12
[i32] (call $fibonacci_recursive
[i32] (get_local $13)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$11$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$12$break
[none] (block $bb10
[none] (set_local $20
[i64] (i64.add
[i64] (i64.extend_s/i32
[i32] (get_local $8)
)
[i64] (i64.extend_s/i32
[i32] (get_local $12)
)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (tee_local $16
[i32] (i32.sub
[i32] (i32.load
[i32] (i32.const 0)
)
[i32] (i32.const 64)
)
)
)
[none] (i32.store
[i32] (get_local $16)
[i32] (i32.wrap/i64
[i64] (get_local $20)
)
)
[none] (i32.store offset=4
[i32] (get_local $16)
[i32] (i32.wrap/i64
[i64] (i64.shr_u
[i64] (get_local $20)
[i64] (i64.const 32)
)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$12$break)
)
)
[unreachable] [unreachable] (block
[none] (block $bb11
[none] (set_local $17
[i32] (i32.load
[i32] (get_local $16)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$13$break)
)
)
)
)
)
)
)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $bb12
[none] (i32.store
[i32] (i32.const 0)
[i32] (get_local $18)
)
[unreachable] (return
[i32] (get_local $17)
)
)
)
)
)
)
)
(func $panic (type $rustfn-0-4)
(local $0 i32)
(local $1 i32)
(local $2 i64)
[unreachable] (unreachable)
)
(func $main (type $rustfn-0-5)
(local $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i64)
[none] [none] (block
[unreachable] (block $block$1$break
[none] (set_local $4
[i32] (i32.load
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$1$break)
)
)
[none] [none] (block
[unreachable] (block $block$2$break
[none] (block $bb0
[none] (set_local $0
[i32] (call $fibonacci_recursive
[i32] (i32.const 10)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
)
[none] [none] (block
[none] (block $bb1
[none] (set_local $3
[i32] (get_local $0)
)
[none] (set_local $2
[i32] (i32.eq
[i32] (get_local $3)
[i32] (i32.const 55)
)
)
[none] (set_local $1
[i32] (i32.eqz
[i32] (get_local $2)
)
)
)
[none] (if
[i32] (get_local $1)
[unreachable] [unreachable] (block
[unreachable] (block
[unreachable] (block $bb2
[i32] (call $panic)
[unreachable] (unreachable)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (block
[unreachable] (block $bb3
[none] (i32.store
[i32] (i32.const 0)
[i32] (get_local $4)
)
[unreachable] (return)
)
)
)
)
)
)
)
)
(func $__wasm_start (type $__wasm_start)
[none] [none] (block
[none] (i32.store
[i32] (i32.const 0)
[i32] (i32.const 65535)
)
[none] (call $main)
)
)
(func $_i32_as_PartialEq_::eq (type $rustfn-0-19) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i64)
[unreachable] [unreachable] (block
[unreachable] (block $block$1$break
[none] (set_local $7
[i32] (i32.load
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$1$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$2$break
[none] (block $bb0
[none] (set_local $2
[i32] (get_local $0)
)
[none] (set_local $3
[i32] (get_local $1)
)
[none] (set_local $4
[i32] (get_local $2)
)
[none] (set_local $5
[i32] (get_local $3)
)
[none] (set_local $6
[i32] (i32.eq
[i32] (get_local $4)
[i32] (get_local $5)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $bb1
[none] (i32.store
[i32] (i32.const 0)
[i32] (get_local $7)
)
[unreachable] (return
[i32] (get_local $6)
)
)
)
)
)
)
(func $_i32_as_PartialEq_::ne (type $rustfn-0-19) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i64)
[unreachable] [unreachable] (block
[unreachable] (block $block$1$break
[none] (set_local $7
[i32] (i32.load
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$1$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$2$break
[none] (block $bb0
[none] (set_local $2
[i32] (get_local $0)
)
[none] (set_local $3
[i32] (get_local $1)
)
[none] (set_local $4
[i32] (get_local $2)
)
[none] (set_local $5
[i32] (get_local $3)
)
[none] (set_local $6
[i32] (i32.ne
[i32] (get_local $4)
[i32] (get_local $5)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $bb1
[none] (i32.store
[i32] (i32.const 0)
[i32] (get_local $7)
)
[unreachable] (return
[i32] (get_local $6)
)
)
)
)
)
)
(func $_i32_as_Add_::add (type $rustfn-0-33) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i32)
(local $10 i64)
[unreachable] [unreachable] (block
[unreachable] (block $block$1$break
[none] (set_local $8
[i32] (i32.load
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$1$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$2$break
[none] (block $bb0
[none] (set_local $2
[i32] (get_local $0)
)
[none] (set_local $3
[i32] (get_local $1)
)
[none] (set_local $4
[i32] (get_local $2)
)
[none] (set_local $5
[i32] (get_local $3)
)
[none] (set_local $10
[i64] (i64.add
[i64] (i64.extend_s/i32
[i32] (get_local $4)
)
[i64] (i64.extend_s/i32
[i32] (get_local $5)
)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (tee_local $6
[i32] (i32.sub
[i32] (i32.load
[i32] (i32.const 0)
)
[i32] (i32.const 64)
)
)
)
[none] (i32.store
[i32] (get_local $6)
[i32] (i32.wrap/i64
[i64] (get_local $10)
)
)
[none] (i32.store offset=4
[i32] (get_local $6)
[i32] (i32.wrap/i64
[i64] (i64.shr_u
[i64] (get_local $10)
[i64] (i64.const 32)
)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $bb1
[none] (set_local $7
[i32] (i32.load
[i32] (get_local $6)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (get_local $8)
)
[unreachable] (return
[i32] (get_local $7)
)
)
)
)
)
)
(func $_i32_as_Sub_::sub (type $rustfn-0-44) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i32)
(local $10 i64)
[unreachable] [unreachable] (block
[unreachable] (block $block$1$break
[none] (set_local $8
[i32] (i32.load
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$1$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$2$break
[none] (block $bb0
[none] (set_local $2
[i32] (get_local $0)
)
[none] (set_local $3
[i32] (get_local $1)
)
[none] (set_local $4
[i32] (get_local $2)
)
[none] (set_local $5
[i32] (get_local $3)
)
[none] (set_local $10
[i64] (i64.sub
[i64] (i64.extend_s/i32
[i32] (get_local $4)
)
[i64] (i64.extend_s/i32
[i32] (get_local $5)
)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (tee_local $6
[i32] (i32.sub
[i32] (i32.load
[i32] (i32.const 0)
)
[i32] (i32.const 64)
)
)
)
[none] (i32.store
[i32] (get_local $6)
[i32] (i32.wrap/i64
[i64] (get_local $10)
)
)
[none] (i32.store offset=4
[i32] (get_local $6)
[i32] (i32.wrap/i64
[i64] (i64.shr_u
[i64] (get_local $10)
[i64] (i64.const 32)
)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $bb1
[none] (set_local $7
[i32] (i32.load
[i32] (get_local $6)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (get_local $8)
)
[unreachable] (return
[i32] (get_local $7)
)
)
)
)
)
)
(func $_i32_as_AddAssign_::add_assign (type $rustfn-0-53) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i64)
[unreachable] [unreachable] (block
[unreachable] (block $block$1$break
[none] (set_local $6
[i32] (i32.load
[i32] (i32.const 0)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$1$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $block$2$break
[none] (block $bb0
[none] (set_local $2
[i32] (get_local $0)
)
[none] (set_local $3
[i32] (get_local $1)
)
[none] (set_local $4
[i32] (get_local $3)
)
[none] (set_local $8
[i64] (i64.add
[i64] (i64.extend_s/i32
[i32] (get_local $2)
)
[i64] (i64.extend_s/i32
[i32] (get_local $4)
)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (tee_local $5
[i32] (i32.sub
[i32] (i32.load
[i32] (i32.const 0)
)
[i32] (i32.const 64)
)
)
)
[none] (i32.store
[i32] (get_local $5)
[i32] (i32.wrap/i64
[i64] (get_local $8)
)
)
[none] (i32.store offset=4
[i32] (get_local $5)
[i32] (i32.wrap/i64
[i64] (i64.shr_u
[i64] (get_local $8)
[i64] (i64.const 32)
)
)
)
)
[unreachable] [unreachable] (block
[unreachable] (br $block$2$break)
)
)
[unreachable] [unreachable] (block
[unreachable] (block $bb1
[none] (set_local $2
[i32] (i32.load
[i32] (get_local $5)
)
)
[none] (i32.store
[i32] (i32.const 0)
[i32] (get_local $6)
)
[unreachable] (return)
)
)
)
)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment