| (module |
| (type $FUNCSIG$iii (func (param i32 i32) (result i32))) |
| (type $FUNCSIG$i (func (result i32))) |
| (type $FUNCSIG$ii (func (param i32) (result i32))) |
| (type $FUNCSIG$v (func)) |
| (type $FUNCSIG$vii (func (param i32 i32))) |
| (type $FUNCSIG$vi (func (param i32))) |
| (import "env" "blue" (func $blue (result i32))) |
| (import "env" "callee" (func $callee (param i32) (result i32))) |
| (import "env" "evoke_side_effects" (func $evoke_side_effects)) |
| (import "env" "green" (func $green (result i32))) |
| (import "env" "readnone_callee" (func $readnone_callee (result i32))) |
| (import "env" "readonly_callee" (func $readonly_callee (result i32))) |
| (import "env" "red" (func $red (result i32))) |
| (import "env" "stackpointer_callee" (func $stackpointer_callee (param i32 i32) (result i32))) |
| (import "env" "use_2" (func $use_2 (param i32 i32))) |
| (import "env" "use_a" (func $use_a (param i32))) |
| (import "env" "use_b" (func $use_b (param i32))) |
| (import "env" "use_memory" (func $use_memory (param i32) (result i32))) |
| (import "env" "memory" (memory $0 1)) |
| (table 0 anyfunc) |
| (data (i32.const 4) "\10\04\00\00") |
| (data (i32.const 12) "\00\00\00\00") |
| (export "no0" (func $no0)) |
| (export "no1" (func $no1)) |
| (export "yes0" (func $yes0)) |
| (export "yes1" (func $yes1)) |
| (export "sink_trap" (func $sink_trap)) |
| (export "sink_readnone_call" (func $sink_readnone_call)) |
| (export "no_sink_readonly_call" (func $no_sink_readonly_call)) |
| (export "stack_uses" (func $stack_uses)) |
| (export "multiple_uses" (func $multiple_uses)) |
| (export "stackify_store_across_side_effects" (func $stackify_store_across_side_effects)) |
| (export "div_tree" (func $div_tree)) |
| (export "simple_multiple_use" (func $simple_multiple_use)) |
| (export "multiple_uses_in_same_insn" (func $multiple_uses_in_same_insn)) |
| (export "commute" (func $commute)) |
| (export "no_stackify_past_use" (func $no_stackify_past_use)) |
| (export "commute_to_fix_ordering" (func $commute_to_fix_ordering)) |
| (export "multiple_defs" (func $multiple_defs)) |
| (export "no_stackify_call_past_load" (func $no_stackify_call_past_load)) |
| (export "no_stackify_store_past_load" (func $no_stackify_store_past_load)) |
| (export "store_past_invar_load" (func $store_past_invar_load)) |
| (export "ignore_dbg_value" (func $ignore_dbg_value)) |
| (export "no_stackify_past_epilogue" (func $no_stackify_past_epilogue)) |
| (export "stackify_indvar" (func $stackify_indvar)) |
| (export "stackpointer_dependency" (func $stackpointer_dependency)) |
| (export "call_indirect_stackify" (func $call_indirect_stackify)) |
| (func $no0 (param $0 i32) (param $1 i32) (result i32) |
| (set_local $1 |
| (i32.load |
| (get_local $1) |
| ) |
| ) |
| (i32.store |
| (get_local $0) |
| (i32.const 0) |
| ) |
| (return |
| (get_local $1) |
| ) |
| ) |
| (func $no1 (param $0 i32) (param $1 i32) (result i32) |
| (set_local $1 |
| (i32.load |
| (get_local $1) |
| ) |
| ) |
| (i32.store |
| (get_local $0) |
| (i32.const 0) |
| ) |
| (return |
| (get_local $1) |
| ) |
| ) |
| (func $yes0 (param $0 i32) (param $1 i32) (result i32) |
| (i32.store |
| (get_local $0) |
| (i32.const 0) |
| ) |
| (return |
| (i32.load |
| (get_local $1) |
| ) |
| ) |
| ) |
| (func $yes1 (param $0 i32) (result i32) |
| (return |
| (i32.load |
| (get_local $0) |
| ) |
| ) |
| ) |
| (func $sink_trap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) |
| (i32.store |
| (get_local $2) |
| (i32.const 0) |
| ) |
| (return |
| (i32.div_s |
| (get_local $0) |
| (get_local $1) |
| ) |
| ) |
| ) |
| (func $sink_readnone_call (param $0 i32) (param $1 i32) (param $2 i32) (result i32) |
| (i32.store |
| (get_local $2) |
| (i32.const 0) |
| ) |
| (return |
| (call $readnone_callee) |
| ) |
| ) |
| (func $no_sink_readonly_call (param $0 i32) (param $1 i32) (param $2 i32) (result i32) |
| (local $3 i32) |
| (set_local $3 |
| (call $readonly_callee) |
| ) |
| (i32.store |
| (get_local $2) |
| (i32.const 0) |
| ) |
| (return |
| (get_local $3) |
| ) |
| ) |
| (func $stack_uses (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) |
| (block $label$0 |
| (br_if $label$0 |
| (i32.ne |
| (i32.xor |
| (i32.xor |
| (i32.lt_s |
| (get_local $0) |
| (i32.const 1) |
| ) |
| (i32.lt_s |
| (get_local $1) |
| (i32.const 2) |
| ) |
| ) |
| (i32.xor |
| (i32.lt_s |
| (get_local $2) |
| (i32.const 1) |
| ) |
| (i32.lt_s |
| (get_local $3) |
| (i32.const 2) |
| ) |
| ) |
| ) |
| (i32.const 1) |
| ) |
| ) |
| (return |
| (i32.const 0) |
| ) |
| ) |
| (return |
| (i32.const 1) |
| ) |
| ) |
| (func $multiple_uses (param $0 i32) (param $1 i32) (param $2 i32) |
| (local $3 i32) |
| (block $label$0 |
| (br_if $label$0 |
| (i32.ge_u |
| (tee_local $3 |
| (i32.load |
| (get_local $2) |
| ) |
| ) |
| (get_local $1) |
| ) |
| ) |
| (br_if $label$0 |
| (i32.lt_u |
| (get_local $3) |
| (get_local $0) |
| ) |
| ) |
| (i32.store |
| (get_local $2) |
| (get_local $3) |
| ) |
| ) |
| (return) |
| ) |
| (func $stackify_store_across_side_effects (param $0 i32) |
| (i64.store |
| (get_local $0) |
| (i64.const 4611686018427387904) |
| ) |
| (call $evoke_side_effects) |
| (i64.store |
| (get_local $0) |
| (i64.const 4611686018427387904) |
| ) |
| (call $evoke_side_effects) |
| (return) |
| ) |
| (func $div_tree (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result i32) |
| (return |
| (i32.div_s |
| (i32.div_s |
| (i32.div_s |
| (i32.div_s |
| (get_local $0) |
| (get_local $1) |
| ) |
| (i32.div_s |
| (get_local $2) |
| (get_local $3) |
| ) |
| ) |
| (i32.div_s |
| (i32.div_s |
| (get_local $4) |
| (get_local $5) |
| ) |
| (i32.div_s |
| (get_local $6) |
| (get_local $7) |
| ) |
| ) |
| ) |
| (i32.div_s |
| (i32.div_s |
| (i32.div_s |
| (get_local $8) |
| (get_local $9) |
| ) |
| (i32.div_s |
| (get_local $10) |
| (get_local $11) |
| ) |
| ) |
| (i32.div_s |
| (i32.div_s |
| (get_local $12) |
| (get_local $13) |
| ) |
| (i32.div_s |
| (get_local $14) |
| (get_local $15) |
| ) |
| ) |
| ) |
| ) |
| ) |
| ) |
| (func $simple_multiple_use (param $0 i32) (param $1 i32) |
| (call $use_a |
| (tee_local $1 |
| (i32.mul |
| (get_local $1) |
| (get_local $0) |
| ) |
| ) |
| ) |
| (call $use_b |
| (get_local $1) |
| ) |
| (return) |
| ) |
| (func $multiple_uses_in_same_insn (param $0 i32) (param $1 i32) |
| (call $use_2 |
| (tee_local $1 |
| (i32.mul |
| (get_local $1) |
| (get_local $0) |
| ) |
| ) |
| (get_local $1) |
| ) |
| (return) |
| ) |
| (func $commute (result i32) |
| (return |
| (i32.add |
| (i32.add |
| (call $red) |
| (call $green) |
| ) |
| (call $blue) |
| ) |
| ) |
| ) |
| (func $no_stackify_past_use (param $0 i32) (result i32) |
| (local $1 i32) |
| (set_local $1 |
| (call $callee |
| (get_local $0) |
| ) |
| ) |
| (return |
| (i32.div_s |
| (i32.sub |
| (call $callee |
| (i32.add |
| (get_local $0) |
| (i32.const 1) |
| ) |
| ) |
| (get_local $1) |
| ) |
| (get_local $1) |
| ) |
| ) |
| ) |
| (func $commute_to_fix_ordering (param $0 i32) (result i32) |
| (local $1 i32) |
| (return |
| (i32.mul |
| (tee_local $1 |
| (call $callee |
| (get_local $0) |
| ) |
| ) |
| (i32.add |
| (get_local $1) |
| (call $callee |
| (i32.add |
| (get_local $0) |
| (i32.const 1) |
| ) |
| ) |
| ) |
| ) |
| ) |
| ) |
| (func $multiple_defs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) |
| (local $5 f64) |
| (local $6 f64) |
| (local $7 f64) |
| (local $8 f64) |
| (local $9 f64) |
| (set_local $6 |
| (f64.const 0) |
| ) |
| (set_local $2 |
| (i32.and |
| (get_local $2) |
| (i32.const 1) |
| ) |
| ) |
| (set_local $3 |
| (i32.and |
| (get_local $3) |
| (i32.const 1) |
| ) |
| ) |
| (set_local $5 |
| (select |
| (f64.const -11353.57) |
| (f64.const -0.23500000000001364) |
| (i32.eq |
| (i32.or |
| (get_local $1) |
| (i32.const 2) |
| ) |
| (i32.const 14) |
| ) |
| ) |
| ) |
| (set_local $7 |
| (f64.const 0) |
| ) |
| (loop $label$0 |
| (block $label$1 |
| (br_if $label$1 |
| (i32.or |
| (f64.ge |
| (get_local $7) |
| (f64.const 23.2345) |
| ) |
| (f64.ne |
| (get_local $7) |
| (get_local $7) |
| ) |
| ) |
| ) |
| (set_local $8 |
| (get_local $6) |
| ) |
| (loop $label$2 |
| (set_local $8 |
| (f64.add |
| (select |
| (f64.const -11353.57) |
| (tee_local $9 |
| (f64.add |
| (get_local $7) |
| (f64.const -1) |
| ) |
| ) |
| (get_local $2) |
| ) |
| (tee_local $6 |
| (get_local $8) |
| ) |
| ) |
| ) |
| (block $label$3 |
| (br_if $label$3 |
| (get_local $3) |
| ) |
| (set_local $9 |
| (get_local $5) |
| ) |
| ) |
| (set_local $8 |
| (f64.add |
| (get_local $9) |
| (get_local $8) |
| ) |
| ) |
| (br_if $label$2 |
| (f64.lt |
| (get_local $7) |
| (f64.const 23.2345) |
| ) |
| ) |
| ) |
| ) |
| (set_local $7 |
| (f64.add |
| (get_local $7) |
| (f64.const 1) |
| ) |
| ) |
| (br $label$0) |
| ) |
| ) |
| (func $no_stackify_call_past_load (result i32) |
| (local $0 i32) |
| (local $1 i32) |
| (set_local $0 |
| (call $red) |
| ) |
| (set_local $1 |
| (i32.load offset=12 |
| (i32.const 0) |
| ) |
| ) |
| (drop |
| (call $callee |
| (get_local $0) |
| ) |
| ) |
| (return |
| (get_local $1) |
| ) |
| ) |
| (func $no_stackify_store_past_load (param $0 i32) (param $1 i32) (param $2 i32) (result i32) |
| (i32.store |
| (get_local $1) |
| (get_local $0) |
| ) |
| (set_local $2 |
| (i32.load |
| (get_local $2) |
| ) |
| ) |
| (drop |
| (call $callee |
| (get_local $0) |
| ) |
| ) |
| (return |
| (get_local $2) |
| ) |
| ) |
| (func $store_past_invar_load (param $0 i32) (param $1 i32) (param $2 i32) (result i32) |
| (i32.store |
| (get_local $1) |
| (get_local $0) |
| ) |
| (drop |
| (call $callee |
| (get_local $0) |
| ) |
| ) |
| (return |
| (i32.load |
| (get_local $2) |
| ) |
| ) |
| ) |
| (func $ignore_dbg_value |
| (unreachable) |
| ) |
| (func $no_stackify_past_epilogue (result i32) |
| (local $0 i32) |
| (local $1 i32) |
| (i32.store offset=4 |
| (i32.const 0) |
| (tee_local $1 |
| (i32.sub |
| (i32.load offset=4 |
| (i32.const 0) |
| ) |
| (i32.const 16) |
| ) |
| ) |
| ) |
| (set_local $0 |
| (call $use_memory |
| (i32.add |
| (get_local $1) |
| (i32.const 12) |
| ) |
| ) |
| ) |
| (i32.store offset=4 |
| (i32.const 0) |
| (i32.add |
| (get_local $1) |
| (i32.const 16) |
| ) |
| ) |
| (return |
| (get_local $0) |
| ) |
| ) |
| (func $stackify_indvar (param $0 i32) (param $1 i32) |
| (local $2 i32) |
| (set_local $2 |
| (i32.const 0) |
| ) |
| (loop $label$0 |
| (i32.store |
| (get_local $1) |
| (i32.add |
| (get_local $2) |
| (i32.load |
| (get_local $1) |
| ) |
| ) |
| ) |
| (br_if $label$0 |
| (i32.ne |
| (get_local $0) |
| (tee_local $2 |
| (i32.add |
| (get_local $2) |
| (i32.const 1) |
| ) |
| ) |
| ) |
| ) |
| ) |
| (return) |
| ) |
| (func $stackpointer_dependency (param $0 i32) (result i32) |
| (local $1 i32) |
| (set_local $0 |
| (call $stackpointer_callee |
| (get_local $0) |
| (tee_local $1 |
| (i32.load offset=4 |
| (i32.const 0) |
| ) |
| ) |
| ) |
| ) |
| (i32.store offset=4 |
| (i32.const 0) |
| (get_local $1) |
| ) |
| (return |
| (get_local $0) |
| ) |
| ) |
| (func $call_indirect_stackify (param $0 i32) (param $1 i32) (result i32) |
| (return |
| (call_indirect $FUNCSIG$iii |
| (tee_local $0 |
| (i32.load |
| (get_local $0) |
| ) |
| ) |
| (get_local $1) |
| (i32.load |
| (i32.load |
| (get_local $0) |
| ) |
| ) |
| ) |
| ) |
| ) |
| ) |
| ;; METADATA: { "asmConsts": {},"staticBump": 1040, "initializers": [] } |