diff options
Diffstat (limited to 'test/dot_s')
60 files changed, 10216 insertions, 0 deletions
diff --git a/test/dot_s/alternate-lcomm.wast b/test/dot_s/alternate-lcomm.wast new file mode 100644 index 000000000..ff458b577 --- /dev/null +++ b/test/dot_s/alternate-lcomm.wast @@ -0,0 +1,4 @@ +(module + (memory 0 4294967295) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/asm_const.s b/test/dot_s/asm_const.s new file mode 100644 index 000000000..39df173c4 --- /dev/null +++ b/test/dot_s/asm_const.s @@ -0,0 +1,23 @@ + .text + .file "/tmp/tmpkxUaTH/a.out.bc" + .globl main + .type main,@function +main: # @main + .result i32 +# BB#0: + i32.const $push0=, .str + call emscripten_asm_const, $pop0 + i32.const $push1=, 0 + return $pop1 +func_end0: + .size main, func_end0-main + + .type .str,@object # @.str + .data +.str: + .asciz "{ Module.print(\"hello, world!\"); }" + .size .str, 35 + + + .imports + .import emscripten_asm_const "" emscripten_asm_const (param i32) diff --git a/test/dot_s/asm_const.wast b/test/dot_s/asm_const.wast new file mode 100644 index 000000000..d9d001f72 --- /dev/null +++ b/test/dot_s/asm_const.wast @@ -0,0 +1,18 @@ +(module + (memory 0 4294967295 (segment 16 "{ Module.print(\"hello, world!\"); }\00")) + (import $_emscripten_asm_const_vi "env" "_emscripten_asm_const_vi") + (export "main" $main) + (func $main (result i32) + (block $fake_return_waka123 + (block + (call_import $_emscripten_asm_const_vi + (i32.const 0) + ) + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world!\"); }", ["vi"]]} }
\ No newline at end of file diff --git a/test/dot_s/basics.s b/test/dot_s/basics.s new file mode 100644 index 000000000..b9c3baeed --- /dev/null +++ b/test/dot_s/basics.s @@ -0,0 +1,61 @@ + .text + .file "/tmp/tmplu1mMq/a.out.bc" + .globl main + .type main,@function +main: # @main + .param i32, i32 + .result i32 +# BB#0: + i32.const $push0=, .str + call $discard=, puts, $pop0 + i32.const $push1=, 31 + i32.shr_s $push2=, $0, $pop1 + i32.const $push3=, 30 + i32.shr_u $push4=, $pop2, $pop3 + i32.add $push5=, $0, $pop4 + i32.const $push6=, -4 + i32.and $push7=, $pop5, $pop6 + i32.sub $push8=, $0, $pop7 + i32.const $push9=, 1 + i32.ne $push10=, $pop8, $pop9 + block BB0_5 + block BB0_4 + br_if $pop10, BB0_4 +BB0_1: # %.preheader + # =>This Inner Loop Header: Depth=1 + loop BB0_4 + i32.const $push12=, 10 + i32.gt_s $push13=, $0, $pop12 + i32.add $0=, $pop13, $0 + i32.const $push14=, 5 + i32.rem_s $push15=, $0, $pop14 + i32.const $push16=, 3 + i32.ne $push17=, $pop15, $pop16 + block BB0_3 + br_if $pop17, BB0_3 +# BB#2: # in Loop: Header=BB0_1 Depth=1 + i32.const $push18=, 111 + i32.rem_s $push19=, $0, $pop18 + i32.add $0=, $pop19, $0 +BB0_3: # in Loop: Header=BB0_1 Depth=1 + i32.const $push20=, 7 + i32.rem_s $push21=, $0, $pop20 + i32.const $push22=, 0 + i32.eq $push23=, $pop21, $pop22 + br_if $pop23, BB0_5 + br BB0_1 +BB0_4: + i32.const $push11=, -12 + i32.add $0=, $0, $pop11 +BB0_5: # %.loopexit + return $0 +func_end0: + .size main, func_end0-main + + .type .str,@object # @.str + .data +.str: + .asciz "hello, world!\n" + .size .str, 15 + + diff --git a/test/dot_s/basics.wast b/test/dot_s/basics.wast new file mode 100644 index 000000000..88adfaf58 --- /dev/null +++ b/test/dot_s/basics.wast @@ -0,0 +1,95 @@ +(module + (memory 0 4294967295 (segment 16 "hello, world!\n\00")) + (import $puts "env" "puts") + (export "main" $main) + (func $main (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (call_import $puts + (i32.const 16) + ) + (block $BB0_5 + (block $BB0_4 + (br_if + (i32.ne + (i32.sub + (get_local $$0) + (i32.and + (i32.add + (get_local $$0) + (i32.shr_u + (i32.shr_s + (get_local $$0) + (i32.const 31) + ) + (i32.const 30) + ) + ) + (i32.const -4) + ) + ) + (i32.const 1) + ) + $BB0_4 + ) + (loop $BB0_1 + (block + (set_local $$0 + (i32.add + (i32.gt_s + (get_local $$0) + (i32.const 10) + ) + (get_local $$0) + ) + ) + (block $BB0_3 + (br_if + (i32.ne + (i32.rem_s + (get_local $$0) + (i32.const 5) + ) + (i32.const 3) + ) + $BB0_3 + ) + (set_local $$0 + (i32.add + (i32.rem_s + (get_local $$0) + (i32.const 111) + ) + (get_local $$0) + ) + ) + ) + (br_if + (i32.eq + (i32.rem_s + (get_local $$0) + (i32.const 7) + ) + (i32.const 0) + ) + $BB0_5 + ) + (br $BB0_1) + ) + ) + ) + (set_local $$0 + (i32.add + (get_local $$0) + (i32.const -12) + ) + ) + ) + (br $fake_return_waka123 + (get_local $$0) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/call.wast b/test/dot_s/call.wast new file mode 100644 index 000000000..913d2d68d --- /dev/null +++ b/test/dot_s/call.wast @@ -0,0 +1,137 @@ +(module + (memory 0 4294967295) + (type $FUNCSIG_v (func)) + (type $FUNCSIG_i (func)) + (import $i32_nullary "env" "i32_nullary") + (import $i64_nullary "env" "i64_nullary") + (import $float_nullary "env" "float_nullary") + (import $double_nullary "env" "double_nullary") + (import $void_nullary "env" "void_nullary") + (import $i32_unary "env" "i32_unary") + (import $i32_binary "env" "i32_binary") + (export "call_i32_nullary" $call_i32_nullary) + (export "call_i64_nullary" $call_i64_nullary) + (export "call_float_nullary" $call_float_nullary) + (export "call_double_nullary" $call_double_nullary) + (export "call_void_nullary" $call_void_nullary) + (export "call_i32_unary" $call_i32_unary) + (export "call_i32_binary" $call_i32_binary) + (export "call_indirect_void" $call_indirect_void) + (export "call_indirect_i32" $call_indirect_i32) + (export "tail_call_void_nullary" $tail_call_void_nullary) + (export "fastcc_tail_call_void_nullary" $fastcc_tail_call_void_nullary) + (export "coldcc_tail_call_void_nullary" $coldcc_tail_call_void_nullary) + (func $call_i32_nullary (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $i32_nullary) + ) + ) + ) + ) + (func $call_i64_nullary (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $i64_nullary) + ) + ) + ) + ) + (func $call_float_nullary (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $float_nullary) + ) + ) + ) + ) + (func $call_double_nullary (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $double_nullary) + ) + ) + ) + ) + (func $call_void_nullary + (block $fake_return_waka123 + (block + (call_import $void_nullary) + (br $fake_return_waka123) + ) + ) + ) + (func $call_i32_unary (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $i32_unary + (get_local $$0) + ) + ) + ) + ) + ) + (func $call_i32_binary (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $i32_binary + (get_local $$1) + (get_local $$0) + ) + ) + ) + ) + ) + (func $call_indirect_void (param $$0 i32) + (block $fake_return_waka123 + (block + (call_indirect $FUNCSIG_v + (get_local $$0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $call_indirect_i32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_indirect $FUNCSIG_i + (get_local $$0) + ) + ) + ) + ) + ) + (func $tail_call_void_nullary + (block $fake_return_waka123 + (block + (call_import $void_nullary) + (br $fake_return_waka123) + ) + ) + ) + (func $fastcc_tail_call_void_nullary + (block $fake_return_waka123 + (block + (call_import $void_nullary) + (br $fake_return_waka123) + ) + ) + ) + (func $coldcc_tail_call_void_nullary + (block $fake_return_waka123 + (block + (call_import $void_nullary) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/cfg-stackify.wast b/test/dot_s/cfg-stackify.wast new file mode 100644 index 000000000..1c244c230 --- /dev/null +++ b/test/dot_s/cfg-stackify.wast @@ -0,0 +1,1153 @@ +(module + (memory 0 4294967295) + (import $something "env" "something") + (import $bar "env" "bar") + (import $a "env" "a") + (export "test0" $test0) + (export "test1" $test1) + (export "test2" $test2) + (export "doublediamond" $doublediamond) + (export "triangle" $triangle) + (export "diamond" $diamond) + (export "single_block" $single_block) + (export "minimal_loop" $minimal_loop) + (export "simple_loop" $simple_loop) + (export "doubletriangle" $doubletriangle) + (export "ifelse_earlyexits" $ifelse_earlyexits) + (export "doublediamond_in_a_loop" $doublediamond_in_a_loop) + (export "test3" $test3) + (export "test4" $test4) + (export "test5" $test5) + (export "test6" $test6) + (export "test7" $test7) + (export "test8" $test8) + (export "test9" $test9) + (export "test10" $test10) + (export "test11" $test11) + (export "test12" $test12) + (export "test13" $test13) + (func $test0 (param $$0 i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.const 0) + ) + (loop $BB0_3 $BB0_1 + (block + (set_local $$1 + (i32.add + (get_local $$1) + (i32.const 1) + ) + ) + (br_if + (i32.ge_s + (get_local $$1) + (get_local $$0) + ) + $BB0_3 + ) + (call_import $something) + (br $BB0_1) + ) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $test1 (param $$0 i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.const 0) + ) + (loop $BB1_3 $BB1_1 + (block + (set_local $$1 + (i32.add + (get_local $$1) + (i32.const 1) + ) + ) + (br_if + (i32.ge_s + (get_local $$1) + (get_local $$0) + ) + $BB1_3 + ) + (call_import $something) + (br $BB1_1) + ) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $test2 (param $$0 i32) (param $$1 i32) + (block $fake_return_waka123 + (block + (block $BB2_2 + (br_if + (i32.lt_s + (get_local $$1) + (i32.const 1) + ) + $BB2_2 + ) + (loop $BB2_1 + (block + (f64.store align=8 + (get_local $$0) + (f64.mul + (f64.load align=8 + (get_local $$0) + ) + (f64.const 3.2) + ) + ) + (set_local $$1 + (i32.add + (get_local $$1) + (i32.const -1) + ) + ) + (set_local $$0 + (i32.add + (get_local $$0) + (i32.const 8) + ) + ) + (br_if + (get_local $$1) + $BB2_1 + ) + ) + ) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $doublediamond (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (local $$3 i32) + (block $fake_return_waka123 + (block + (set_local $$3 + (i32.store align=4 + (get_local $$2) + (i32.const 0) + ) + ) + (block $BB3_5 + (block $BB3_4 + (br_if + (i32.eq + (get_local $$0) + (i32.const 0) + ) + $BB3_4 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 2) + ) + (block $BB3_3 + (br_if + (i32.eq + (get_local $$1) + (i32.const 0) + ) + $BB3_3 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 4) + ) + (br $BB3_5) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 3) + ) + (br $BB3_5) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 1) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 5) + ) + (br $fake_return_waka123 + (get_local $$3) + ) + ) + ) + ) + (func $triangle (param $$0 i32) (param $$1 i32) (result i32) + (local $$2 i32) + (block $fake_return_waka123 + (block + (set_local $$2 + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + ) + (block $BB4_2 + (br_if + (get_local $$1) + $BB4_2 + ) + (i32.store align=4 + (get_local $$0) + (i32.const 1) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 2) + ) + (br $fake_return_waka123 + (get_local $$2) + ) + ) + ) + ) + (func $diamond (param $$0 i32) (param $$1 i32) (result i32) + (local $$2 i32) + (block $fake_return_waka123 + (block + (set_local $$2 + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + ) + (block $BB5_3 + (block $BB5_2 + (br_if + (i32.eq + (get_local $$1) + (i32.const 0) + ) + $BB5_2 + ) + (i32.store align=4 + (get_local $$0) + (i32.const 2) + ) + (br $BB5_3) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 1) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 3) + ) + (br $fake_return_waka123 + (get_local $$2) + ) + ) + ) + ) + (func $single_block (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + ) + ) + ) + ) + (func $minimal_loop (param $$0 i32) (result i32) + (block + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + (loop $BB7_2 $BB7_1 + (block + (i32.store align=4 + (get_local $$0) + (i32.const 1) + ) + (br $BB7_1) + ) + ) + ) + ) + (func $simple_loop (param $$0 i32) (param $$1 i32) (result i32) + (local $$2 i32) + (block $fake_return_waka123 + (block + (set_local $$2 + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + ) + (loop $BB8_2 $BB8_1 + (block + (i32.store align=4 + (get_local $$0) + (i32.const 1) + ) + (br_if + (i32.eq + (get_local $$1) + (i32.const 0) + ) + $BB8_1 + ) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 2) + ) + (br $fake_return_waka123 + (get_local $$2) + ) + ) + ) + ) + (func $doubletriangle (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (local $$3 i32) + (block $fake_return_waka123 + (block + (set_local $$3 + (i32.store align=4 + (get_local $$2) + (i32.const 0) + ) + ) + (block $BB9_4 + (br_if + (get_local $$0) + $BB9_4 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 2) + ) + (block $BB9_3 + (br_if + (get_local $$1) + $BB9_3 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 3) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 4) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 5) + ) + (br $fake_return_waka123 + (get_local $$3) + ) + ) + ) + ) + (func $ifelse_earlyexits (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (local $$3 i32) + (block $fake_return_waka123 + (block + (set_local $$3 + (i32.store align=4 + (get_local $$2) + (i32.const 0) + ) + ) + (block $BB10_4 + (block $BB10_3 + (br_if + (i32.eq + (get_local $$0) + (i32.const 0) + ) + $BB10_3 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 2) + ) + (br_if + (get_local $$1) + $BB10_4 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 3) + ) + (br $BB10_4) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 1) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 4) + ) + (br $fake_return_waka123 + (get_local $$3) + ) + ) + ) + ) + (func $doublediamond_in_a_loop (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (block + (loop $BB11_7 $BB11_1 + (block + (i32.store align=4 + (get_local $$2) + (i32.const 0) + ) + (block $BB11_6 + (block $BB11_5 + (br_if + (i32.eq + (get_local $$0) + (i32.const 0) + ) + $BB11_5 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 2) + ) + (block $BB11_4 + (br_if + (i32.eq + (get_local $$1) + (i32.const 0) + ) + $BB11_4 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 4) + ) + (br $BB11_6) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 3) + ) + (br $BB11_6) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 1) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 5) + ) + (br $BB11_1) + ) + ) + ) + ) + (func $test3 (param $$0 i32) + (block $fake_return_waka123 + (block + (block $BB12_2 + (br_if + (i32.eq + (i32.const 0) + (i32.const 0) + ) + $BB12_2 + ) + (br $fake_return_waka123) + ) + (loop $BB12_5 $BB12_2 + (block + (br_if + (get_local $$0) + $BB12_5 + ) + (loop $BB12_4 $BB12_3 + (block + (br_if + (i32.ne + (get_local $$0) + (get_local $$0) + ) + $BB12_3 + ) + ) + ) + (call_import $bar) + (br $BB12_2) + ) + ) + (unreachable) + ) + ) + ) + (func $test4 (param $$0 i32) + (block $fake_return_waka123 + (block + (block $BB13_8 + (block $BB13_7 + (block $BB13_4 + (br_if + (i32.gt_s + (get_local $$0) + (i32.const 3) + ) + $BB13_4 + ) + (block $BB13_3 + (br_if + (i32.eq + (get_local $$0) + (i32.const 0) + ) + $BB13_3 + ) + (br_if + (i32.ne + (get_local $$0) + (i32.const 2) + ) + $BB13_7 + ) + ) + (br $fake_return_waka123) + ) + (br_if + (i32.eq + (get_local $$0) + (i32.const 4) + ) + $BB13_8 + ) + (br_if + (i32.ne + (get_local $$0) + (i32.const 622) + ) + $BB13_7 + ) + (br $fake_return_waka123) + ) + (br $fake_return_waka123) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $test5 (param $$0 i32) (param $$1 i32) + (local $$2 i32) + (local $$3 i32) + (block $fake_return_waka123 + (block + (block $BB14_4 + (loop $BB14_3 $BB14_1 + (block + (set_local $$2 + (i32.const 0) + ) + (set_local $$3 + (i32.store align=4 + (get_local $$2) + (get_local $$2) + ) + ) + (set_local $$2 + (i32.const 1) + ) + (br_if + (i32.eq + (i32.and + (get_local $$0) + (get_local $$2) + ) + (i32.const 0) + ) + $BB14_4 + ) + (br_if + (i32.and + (get_local $$1) + (i32.store align=4 + (get_local $$3) + (get_local $$2) + ) + ) + $BB14_1 + ) + ) + ) + (i32.store align=4 + (get_local $$3) + (i32.const 3) + ) + (br $fake_return_waka123) + ) + (i32.store align=4 + (get_local $$3) + (i32.const 2) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $test6 (param $$0 i32) (param $$1 i32) + (local $$2 i32) + (local $$3 i32) + (local $$4 i32) + (block $fake_return_waka123 + (block + (block $BB15_6 + (block $BB15_5 + (loop $BB15_4 $BB15_1 + (block + (set_local $$2 + (i32.const 0) + ) + (i32.store align=4 + (get_local $$2) + (get_local $$2) + ) + (set_local $$3 + (i32.const 1) + ) + (br_if + (i32.eq + (i32.and + (get_local $$0) + (get_local $$3) + ) + (i32.const 0) + ) + $BB15_6 + ) + (i32.store align=4 + (get_local $$2) + (get_local $$3) + ) + (set_local $$4 + (i32.and + (get_local $$1) + (get_local $$3) + ) + ) + (br_if + (i32.eq + (get_local $$4) + (i32.const 0) + ) + $BB15_5 + ) + (i32.store align=4 + (get_local $$2) + (get_local $$3) + ) + (br_if + (get_local $$4) + $BB15_1 + ) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 2) + ) + (br $fake_return_waka123) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 3) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 4) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $test7 (param $$0 i32) (param $$1 i32) + (local $$2 i32) + (local $$3 i32) + (block + (set_local $$3 + (i32.const 0) + ) + (set_local $$2 + (i32.store align=4 + (get_local $$3) + (get_local $$3) + ) + ) + (loop $BB16_5 $BB16_1 + (block + (set_local $$3 + (i32.store align=4 + (get_local $$2) + (i32.const 1) + ) + ) + (block $BB16_4 + (br_if + (i32.eq + (i32.and + (get_local $$0) + (get_local $$3) + ) + (i32.const 0) + ) + $BB16_4 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 3) + ) + (br_if + (i32.and + (get_local $$1) + (get_local $$3) + ) + $BB16_1 + ) + (i32.store align=4 + (get_local $$2) + (i32.const 5) + ) + (unreachable) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 2) + ) + (br_if + (i32.and + (get_local $$1) + (get_local $$3) + ) + $BB16_1 + ) + ) + ) + (i32.store align=4 + (get_local $$2) + (i32.const 4) + ) + (unreachable) + ) + ) + (func $test8 (result i32) + (local $$0 i32) + (block + (set_local $$0 + (i32.const 0) + ) + (loop $BB17_4 $BB17_1 + (block + (block $BB17_3 + (br_if + (i32.eq + (get_local $$0) + (i32.const 0) + ) + $BB17_3 + ) + (br_if + (i32.eq + (get_local $$0) + (i32.const 0) + ) + $BB17_1 + ) + ) + (loop $BB17_4 $BB17_3 + (block + (br_if + (get_local $$0) + $BB17_3 + ) + (br $BB17_1) + ) + ) + ) + ) + ) + ) + (func $test9 + (local $$0 i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.const 0) + ) + (set_local $$0 + (i32.store align=4 + (get_local $$1) + (get_local $$1) + ) + ) + (loop $BB18_5 $BB18_1 + (block + (set_local $$1 + (i32.store align=4 + (get_local $$0) + (i32.const 1) + ) + ) + (br_if + (i32.eq + (i32.and + (call_import $a) + (get_local $$1) + ) + (i32.const 0) + ) + $BB18_5 + ) + (loop $BB18_5 $BB18_2 + (block + (i32.store align=4 + (get_local $$0) + (i32.const 2) + ) + (block $BB18_4 + (br_if + (i32.eq + (i32.and + (call_import $a) + (get_local $$1) + ) + (i32.const 0) + ) + $BB18_4 + ) + (i32.store align=4 + (get_local $$0) + (i32.const 3) + ) + (br_if + (i32.and + (call_import $a) + (get_local $$1) + ) + $BB18_2 + ) + (br $BB18_1) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 4) + ) + (br_if + (i32.and + (call_import $a) + (get_local $$1) + ) + $BB18_2 + ) + (br $BB18_1) + ) + ) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 5) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $test10 + (local $$0 i32) + (local $$1 i32) + (local $$2 i32) + (local $$3 i32) + (local $$4 i32) + (block $fake_return_waka123 + (block + (set_local $$0 + (i32.const 2) + ) + (loop $BB19_7 $BB19_1 + (block + (set_local $$4 + (get_local $$1) + ) + (set_local $$3 + (get_local $$0) + ) + (set_local $$1 + (i32.const 0) + ) + (set_local $$0 + (i32.const 3) + ) + (set_local $$2 + (i32.const 4) + ) + (br_if + (get_local $$4) + $BB19_1 + ) + (block $BB19_6 + (loop $BB19_5 $BB19_2 + (block + (set_local $$4 + (get_local $$3) + ) + (set_local $$3 + (get_local $$2) + ) + (loop $BB19_5 $BB19_3 + (block + (set_local $$2 + (get_local $$4) + ) + (br_if + (i32.gt_u + (get_local $$2) + (i32.const 4) + ) + $BB19_1 + ) + (set_local $$4 + (get_local $$3) + ) + (tableswitch + (get_local $$2) + (table (case $BB19_3) (case $BB19_5) (case $BB19_1) (case $BB19_2) (case $BB19_6)) (case $BB19_3) + ) + ) + ) + ) + ) + (br $fake_return_waka123) + ) + (set_local $$1 + (i32.const 1) + ) + (br $BB19_1) + ) + ) + ) + ) + ) + (func $test11 + (local $$0 i32) + (block $fake_return_waka123 + (block + (set_local $$0 + (i32.const 0) + ) + (i32.store align=4 + (get_local $$0) + (get_local $$0) + ) + (block $BB20_8 + (block $BB20_4 + (br_if + (get_local $$0) + $BB20_4 + ) + (i32.store align=4 + (get_local $$0) + (i32.const 1) + ) + (block $BB20_3 + (br_if + (get_local $$0) + $BB20_3 + ) + (i32.store align=4 + (get_local $$0) + (i32.const 2) + ) + (br_if + (get_local $$0) + $BB20_8 + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 3) + ) + (br $fake_return_waka123) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 4) + ) + (block $BB20_6 + (br_if + (i32.eq + (get_local $$0) + (i32.const 0) + ) + $BB20_6 + ) + (i32.store align=4 + (get_local $$0) + (i32.const 8) + ) + (br $fake_return_waka123) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 5) + ) + (br_if + (get_local $$0) + $BB20_8 + ) + (i32.store align=4 + (get_local $$0) + (i32.const 6) + ) + (br $fake_return_waka123) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 7) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $test12 (param $$0 i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (loop $BB21_8 $BB21_1 + (block + (set_local $$1 + (i32.load align=8 + (get_local $$0) + ) + ) + (block $BB21_7 + (block $BB21_6 + (block $BB21_4 + (br_if + (i32.gt_s + (get_local $$1) + (i32.const 103) + ) + $BB21_4 + ) + (br_if + (i32.eq + (get_local $$1) + (i32.const 42) + ) + $BB21_7 + ) + (br_if + (i32.eq + (get_local $$1) + (i32.const 76) + ) + $BB21_7 + ) + (br $BB21_6) + ) + (br_if + (i32.eq + (get_local $$1) + (i32.const 108) + ) + $BB21_7 + ) + (br_if + (i32.eq + (get_local $$1) + (i32.const 104) + ) + $BB21_7 + ) + ) + (br $fake_return_waka123) + ) + (set_local $$0 + (i32.add + (get_local $$0) + (i32.const 1) + ) + ) + (br $BB21_1) + ) + ) + ) + ) + ) + (func $test13 + (local $$0 i32) + (block $fake_return_waka123 + (block + (block $BB22_2 + (br_if + (i32.eq + (i32.const 0) + (i32.const 0) + ) + $BB22_2 + ) + (br $fake_return_waka123) + ) + (set_local $$0 + (i32.const 0) + ) + (block $BB22_4 + (br_if + (get_local $$0) + $BB22_4 + ) + (set_local $$0 + (i32.const 0) + ) + ) + (block $BB22_5 + (br_if + (i32.eq + (i32.and + (get_local $$0) + (i32.const 1) + ) + (i32.const 0) + ) + $BB22_5 + ) + ) + (unreachable) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/comparisons_f32.wast b/test/dot_s/comparisons_f32.wast new file mode 100644 index 000000000..bcb0ab5f4 --- /dev/null +++ b/test/dot_s/comparisons_f32.wast @@ -0,0 +1,270 @@ +(module + (memory 0 4294967295) + (export "ord_f32" $ord_f32) + (export "uno_f32" $uno_f32) + (export "oeq_f32" $oeq_f32) + (export "une_f32" $une_f32) + (export "olt_f32" $olt_f32) + (export "ole_f32" $ole_f32) + (export "ogt_f32" $ogt_f32) + (export "oge_f32" $oge_f32) + (export "ueq_f32" $ueq_f32) + (export "one_f32" $one_f32) + (export "ult_f32" $ult_f32) + (export "ule_f32" $ule_f32) + (export "ugt_f32" $ugt_f32) + (export "uge_f32" $uge_f32) + (func $ord_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.and + (f32.eq + (get_local $$0) + (get_local $$0) + ) + (f32.eq + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + (func $uno_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f32.ne + (get_local $$0) + (get_local $$0) + ) + (f32.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + (func $oeq_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.eq + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $une_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.ne + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $olt_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.lt + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ole_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.le + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ogt_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.gt + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $oge_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.ge + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ueq_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f32.eq + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f32.ne + (get_local $$0) + (get_local $$0) + ) + (f32.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $one_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.and + (f32.ne + (get_local $$0) + (get_local $$1) + ) + (i32.and + (f32.eq + (get_local $$0) + (get_local $$0) + ) + (f32.eq + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $ult_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f32.lt + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f32.ne + (get_local $$0) + (get_local $$0) + ) + (f32.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $ule_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f32.le + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f32.ne + (get_local $$0) + (get_local $$0) + ) + (f32.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $ugt_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f32.gt + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f32.ne + (get_local $$0) + (get_local $$0) + ) + (f32.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $uge_f32 (param $$0 f32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f32.ge + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f32.ne + (get_local $$0) + (get_local $$0) + ) + (f32.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/comparisons_f64.wast b/test/dot_s/comparisons_f64.wast new file mode 100644 index 000000000..097eba008 --- /dev/null +++ b/test/dot_s/comparisons_f64.wast @@ -0,0 +1,270 @@ +(module + (memory 0 4294967295) + (export "ord_f64" $ord_f64) + (export "uno_f64" $uno_f64) + (export "oeq_f64" $oeq_f64) + (export "une_f64" $une_f64) + (export "olt_f64" $olt_f64) + (export "ole_f64" $ole_f64) + (export "ogt_f64" $ogt_f64) + (export "oge_f64" $oge_f64) + (export "ueq_f64" $ueq_f64) + (export "one_f64" $one_f64) + (export "ult_f64" $ult_f64) + (export "ule_f64" $ule_f64) + (export "ugt_f64" $ugt_f64) + (export "uge_f64" $uge_f64) + (func $ord_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.and + (f64.eq + (get_local $$0) + (get_local $$0) + ) + (f64.eq + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + (func $uno_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f64.ne + (get_local $$0) + (get_local $$0) + ) + (f64.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + (func $oeq_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.eq + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $une_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.ne + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $olt_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.lt + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ole_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.le + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ogt_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.gt + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $oge_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.ge + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ueq_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f64.eq + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f64.ne + (get_local $$0) + (get_local $$0) + ) + (f64.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $one_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.and + (f64.ne + (get_local $$0) + (get_local $$1) + ) + (i32.and + (f64.eq + (get_local $$0) + (get_local $$0) + ) + (f64.eq + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $ult_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f64.lt + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f64.ne + (get_local $$0) + (get_local $$0) + ) + (f64.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $ule_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f64.le + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f64.ne + (get_local $$0) + (get_local $$0) + ) + (f64.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $ugt_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f64.gt + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f64.ne + (get_local $$0) + (get_local $$0) + ) + (f64.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) + (func $uge_f64 (param $$0 f64) (param $$1 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (f64.ge + (get_local $$0) + (get_local $$1) + ) + (i32.or + (f64.ne + (get_local $$0) + (get_local $$0) + ) + (f64.ne + (get_local $$1) + (get_local $$1) + ) + ) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/comparisons_i32.wast b/test/dot_s/comparisons_i32.wast new file mode 100644 index 000000000..b648c1fef --- /dev/null +++ b/test/dot_s/comparisons_i32.wast @@ -0,0 +1,134 @@ +(module + (memory 0 4294967295) + (export "eq_i32" $eq_i32) + (export "ne_i32" $ne_i32) + (export "slt_i32" $slt_i32) + (export "sle_i32" $sle_i32) + (export "ult_i32" $ult_i32) + (export "ule_i32" $ule_i32) + (export "sgt_i32" $sgt_i32) + (export "sge_i32" $sge_i32) + (export "ugt_i32" $ugt_i32) + (export "uge_i32" $uge_i32) + (func $eq_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.eq + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ne_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.ne + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $slt_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.lt_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sle_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.le_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ult_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.lt_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ule_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.le_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sgt_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.gt_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sge_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.ge_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ugt_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.gt_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $uge_i32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.ge_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/comparisons_i64.wast b/test/dot_s/comparisons_i64.wast new file mode 100644 index 000000000..15374c6b4 --- /dev/null +++ b/test/dot_s/comparisons_i64.wast @@ -0,0 +1,134 @@ +(module + (memory 0 4294967295) + (export "eq_i64" $eq_i64) + (export "ne_i64" $ne_i64) + (export "slt_i64" $slt_i64) + (export "sle_i64" $sle_i64) + (export "ult_i64" $ult_i64) + (export "ule_i64" $ule_i64) + (export "sgt_i64" $sgt_i64) + (export "sge_i64" $sge_i64) + (export "ugt_i64" $ugt_i64) + (export "uge_i64" $uge_i64) + (func $eq_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.eq + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ne_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.ne + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $slt_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.lt_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sle_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.le_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ult_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.lt_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ule_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.le_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sgt_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.gt_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sge_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.ge_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $ugt_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.gt_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $uge_i64 (param $$0 i64) (param $$1 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.ge_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/conv.wast b/test/dot_s/conv.wast new file mode 100644 index 000000000..90a5cb8e8 --- /dev/null +++ b/test/dot_s/conv.wast @@ -0,0 +1,319 @@ +(module + (memory 0 4294967295) + (export "i32_wrap_i64" $i32_wrap_i64) + (export "i64_extend_s_i32" $i64_extend_s_i32) + (export "i64_extend_u_i32" $i64_extend_u_i32) + (export "i32_trunc_s_f32" $i32_trunc_s_f32) + (export "i32_trunc_u_f32" $i32_trunc_u_f32) + (export "i32_trunc_s_f64" $i32_trunc_s_f64) + (export "i32_trunc_u_f64" $i32_trunc_u_f64) + (export "i64_trunc_s_f32" $i64_trunc_s_f32) + (export "i64_trunc_u_f32" $i64_trunc_u_f32) + (export "i64_trunc_s_f64" $i64_trunc_s_f64) + (export "i64_trunc_u_f64" $i64_trunc_u_f64) + (export "f32_convert_s_i32" $f32_convert_s_i32) + (export "f32_convert_u_i32" $f32_convert_u_i32) + (export "f64_convert_s_i32" $f64_convert_s_i32) + (export "f64_convert_u_i32" $f64_convert_u_i32) + (export "f32_convert_s_i64" $f32_convert_s_i64) + (export "f32_convert_u_i64" $f32_convert_u_i64) + (export "f64_convert_s_i64" $f64_convert_s_i64) + (export "f64_convert_u_i64" $f64_convert_u_i64) + (export "f64_promote_f32" $f64_promote_f32) + (export "f32_demote_f64" $f32_demote_f64) + (export "anyext" $anyext) + (export "bitcast_i32_to_float" $bitcast_i32_to_float) + (export "bitcast_float_to_i32" $bitcast_float_to_i32) + (export "bitcast_i64_to_double" $bitcast_i64_to_double) + (export "bitcast_double_to_i64" $bitcast_double_to_i64) + (func $i32_wrap_i64 (param $$0 i64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.wrap/i64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i64_extend_s_i32 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.extend_s/i32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i64_extend_u_i32 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.extend_u/i32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i32_trunc_s_f32 (param $$0 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.trunc_s/f32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i32_trunc_u_f32 (param $$0 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.trunc_u/f32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i32_trunc_s_f64 (param $$0 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.trunc_s/f64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i32_trunc_u_f64 (param $$0 f64) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.trunc_u/f64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i64_trunc_s_f32 (param $$0 f32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.trunc_s/f32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i64_trunc_u_f32 (param $$0 f32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.trunc_u/f32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i64_trunc_s_f64 (param $$0 f64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.trunc_s/f64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $i64_trunc_u_f64 (param $$0 f64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.trunc_u/f64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f32_convert_s_i32 (param $$0 i32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.convert_s/i32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f32_convert_u_i32 (param $$0 i32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.convert_u/i32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f64_convert_s_i32 (param $$0 i32) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.convert_s/i32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f64_convert_u_i32 (param $$0 i32) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.convert_u/i32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f32_convert_s_i64 (param $$0 i64) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.convert_s/i64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f32_convert_u_i64 (param $$0 i64) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.convert_u/i64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f64_convert_s_i64 (param $$0 i64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.convert_s/i64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f64_convert_u_i64 (param $$0 i64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.convert_u/i64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f64_promote_f32 (param $$0 f32) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.promote/f32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $f32_demote_f64 (param $$0 f64) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.demote/f64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $anyext (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.shl + (i64.extend_u/i32 + (get_local $$0) + ) + (i64.const 32) + ) + ) + ) + ) + ) + (func $bitcast_i32_to_float (param $$0 i32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.reinterpreti32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $bitcast_float_to_i32 (param $$0 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.reinterpret/f32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $bitcast_i64_to_double (param $$0 i64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.reinterpreti64 + (get_local $$0) + ) + ) + ) + ) + ) + (func $bitcast_double_to_i64 (param $$0 f64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.reinterpret/f64 + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/copysign-casts.wast b/test/dot_s/copysign-casts.wast new file mode 100644 index 000000000..1fbfe760a --- /dev/null +++ b/test/dot_s/copysign-casts.wast @@ -0,0 +1,34 @@ +(module + (memory 0 4294967295) + (export "fold_promote" $fold_promote) + (export "fold_demote" $fold_demote) + (func $fold_promote (param $$0 f64) (param $$1 f32) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.copysign + (get_local $$0) + (f64.promote/f32 + (get_local $$1) + ) + ) + ) + ) + ) + ) + (func $fold_demote (param $$0 f32) (param $$1 f64) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.copysign + (get_local $$0) + (f32.demote/f64 + (get_local $$1) + ) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/cpus.wast b/test/dot_s/cpus.wast new file mode 100644 index 000000000..5c241966c --- /dev/null +++ b/test/dot_s/cpus.wast @@ -0,0 +1,14 @@ +(module + (memory 0 4294967295) + (export "f" $f) + (func $f (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (get_local $$0) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/data-offset-folding.wast b/test/dot_s/data-offset-folding.wast new file mode 100644 index 000000000..a5341932b --- /dev/null +++ b/test/dot_s/data-offset-folding.wast @@ -0,0 +1,4 @@ +(module + (memory 0 4294967295 (segment 2 "\00\00\00\00") (segment 408 "X\00\00\00")) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/dead-vreg.wast b/test/dot_s/dead-vreg.wast new file mode 100644 index 000000000..c2872b352 --- /dev/null +++ b/test/dot_s/dead-vreg.wast @@ -0,0 +1,114 @@ +(module + (memory 0 4294967295) + (export "foo" $foo) + (func $foo (param $$0 i32) (param $$1 i32) (param $$2 i32) + (local $$3 i32) + (local $$4 i32) + (local $$5 i32) + (local $$6 i32) + (local $$7 i32) + (local $$8 i32) + (local $$9 i32) + (block $fake_return_waka123 + (block + (set_local $$4 + (i32.const 1) + ) + (block $BB0_5 + (br_if + (i32.lt_s + (get_local $$2) + (get_local $$4) + ) + $BB0_5 + ) + (set_local $$3 + (i32.shl + (get_local $$1) + (i32.const 2) + ) + ) + (set_local $$5 + (i32.const 0) + ) + (set_local $$6 + (get_local $$5) + ) + (loop $BB0_2 + (block + (set_local $$7 + (get_local $$5) + ) + (set_local $$8 + (get_local $$0) + ) + (set_local $$9 + (get_local $$1) + ) + (block $BB0_4 + (br_if + (i32.lt_s + (get_local $$1) + (get_local $$4) + ) + $BB0_4 + ) + (loop $BB0_3 + (block + (set_local $$9 + (i32.add + (get_local $$9) + (i32.const -1) + ) + ) + (i32.store align=4 + (get_local $$8) + (get_local $$7) + ) + (set_local $$8 + (i32.add + (get_local $$8) + (i32.const 4) + ) + ) + (set_local $$7 + (i32.add + (get_local $$7) + (get_local $$6) + ) + ) + (br_if + (get_local $$9) + $BB0_3 + ) + ) + ) + ) + (set_local $$6 + (i32.add + (get_local $$6) + (get_local $$4) + ) + ) + (set_local $$0 + (i32.add + (get_local $$0) + (get_local $$3) + ) + ) + (br_if + (i32.ne + (get_local $$6) + (get_local $$2) + ) + $BB0_2 + ) + ) + ) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/exit.wast b/test/dot_s/exit.wast new file mode 100644 index 000000000..289673187 --- /dev/null +++ b/test/dot_s/exit.wast @@ -0,0 +1,14 @@ +(module + (memory 0 4294967295) + (import $exit "env" "exit") + (export "main" $main) + (func $main (result i32) + (local $$0 i32) + (block + (call_import $exit + (i32.const 0) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/f32.wast b/test/dot_s/f32.wast new file mode 100644 index 000000000..d8a951dcf --- /dev/null +++ b/test/dot_s/f32.wast @@ -0,0 +1,206 @@ +(module + (memory 0 4294967295) + (import $fmaf "env" "fmaf") + (export "fadd32" $fadd32) + (export "fsub32" $fsub32) + (export "fmul32" $fmul32) + (export "fdiv32" $fdiv32) + (export "fabs32" $fabs32) + (export "fneg32" $fneg32) + (export "copysign32" $copysign32) + (export "sqrt32" $sqrt32) + (export "ceil32" $ceil32) + (export "floor32" $floor32) + (export "trunc32" $trunc32) + (export "nearest32" $nearest32) + (export "nearest32_via_rint" $nearest32_via_rint) + (export "fmin32" $fmin32) + (export "fmax32" $fmax32) + (export "fma32" $fma32) + (func $fadd32 (param $$0 f32) (param $$1 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.add + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fsub32 (param $$0 f32) (param $$1 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.sub + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fmul32 (param $$0 f32) (param $$1 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.mul + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fdiv32 (param $$0 f32) (param $$1 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.div + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fabs32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.abs + (get_local $$0) + ) + ) + ) + ) + ) + (func $fneg32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.neg + (get_local $$0) + ) + ) + ) + ) + ) + (func $copysign32 (param $$0 f32) (param $$1 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.copysign + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sqrt32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.sqrt + (get_local $$0) + ) + ) + ) + ) + ) + (func $ceil32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.ceil + (get_local $$0) + ) + ) + ) + ) + ) + (func $floor32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.floor + (get_local $$0) + ) + ) + ) + ) + ) + (func $trunc32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.trunc + (get_local $$0) + ) + ) + ) + ) + ) + (func $nearest32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.nearest + (get_local $$0) + ) + ) + ) + ) + ) + (func $nearest32_via_rint (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.nearest + (get_local $$0) + ) + ) + ) + ) + ) + (func $fmin32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.min + (get_local $$0) + (f32.const 0) + ) + ) + ) + ) + ) + (func $fmax32 (param $$0 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.max + (get_local $$0) + (f32.const 0) + ) + ) + ) + ) + ) + (func $fma32 (param $$0 f32) (param $$1 f32) (param $$2 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $fmaf + (get_local $$2) + (get_local $$1) + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/f64.wast b/test/dot_s/f64.wast new file mode 100644 index 000000000..4b330c242 --- /dev/null +++ b/test/dot_s/f64.wast @@ -0,0 +1,206 @@ +(module + (memory 0 4294967295) + (import $fma "env" "fma") + (export "fadd64" $fadd64) + (export "fsub64" $fsub64) + (export "fmul64" $fmul64) + (export "fdiv64" $fdiv64) + (export "fabs64" $fabs64) + (export "fneg64" $fneg64) + (export "copysign64" $copysign64) + (export "sqrt64" $sqrt64) + (export "ceil64" $ceil64) + (export "floor64" $floor64) + (export "trunc64" $trunc64) + (export "nearest64" $nearest64) + (export "nearest64_via_rint" $nearest64_via_rint) + (export "fmin64" $fmin64) + (export "fmax64" $fmax64) + (export "fma64" $fma64) + (func $fadd64 (param $$0 f64) (param $$1 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.add + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fsub64 (param $$0 f64) (param $$1 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.sub + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fmul64 (param $$0 f64) (param $$1 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.mul + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fdiv64 (param $$0 f64) (param $$1 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.div + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fabs64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.abs + (get_local $$0) + ) + ) + ) + ) + ) + (func $fneg64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.neg + (get_local $$0) + ) + ) + ) + ) + ) + (func $copysign64 (param $$0 f64) (param $$1 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.copysign + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sqrt64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.sqrt + (get_local $$0) + ) + ) + ) + ) + ) + (func $ceil64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.ceil + (get_local $$0) + ) + ) + ) + ) + ) + (func $floor64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.floor + (get_local $$0) + ) + ) + ) + ) + ) + (func $trunc64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.trunc + (get_local $$0) + ) + ) + ) + ) + ) + (func $nearest64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.nearest + (get_local $$0) + ) + ) + ) + ) + ) + (func $nearest64_via_rint (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.nearest + (get_local $$0) + ) + ) + ) + ) + ) + (func $fmin64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.min + (get_local $$0) + (f64.const 0) + ) + ) + ) + ) + ) + (func $fmax64 (param $$0 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.max + (get_local $$0) + (f64.const 0) + ) + ) + ) + ) + ) + (func $fma64 (param $$0 f64) (param $$1 f64) (param $$2 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $fma + (get_local $$2) + (get_local $$1) + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/fast-isel.wast b/test/dot_s/fast-isel.wast new file mode 100644 index 000000000..31a81ed66 --- /dev/null +++ b/test/dot_s/fast-isel.wast @@ -0,0 +1,24 @@ +(module + (memory 0 4294967295) + (export "immediate_f32" $immediate_f32) + (export "immediate_f64" $immediate_f64) + (func $immediate_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const 2.5) + ) + ) + ) + ) + (func $immediate_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const 2.5) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/frem.wast b/test/dot_s/frem.wast new file mode 100644 index 000000000..9b89de191 --- /dev/null +++ b/test/dot_s/frem.wast @@ -0,0 +1,32 @@ +(module + (memory 0 4294967295) + (import $fmodf "env" "fmodf") + (import $fmod "env" "fmod") + (export "frem32" $frem32) + (export "frem64" $frem64) + (func $frem32 (param $$0 f32) (param $$1 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $fmodf + (get_local $$1) + (get_local $$0) + ) + ) + ) + ) + ) + (func $frem64 (param $$0 f64) (param $$1 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $fmod + (get_local $$1) + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/func.wast b/test/dot_s/func.wast new file mode 100644 index 000000000..01ff04a8f --- /dev/null +++ b/test/dot_s/func.wast @@ -0,0 +1,75 @@ +(module + (memory 0 4294967295) + (export "f0" $f0) + (export "f1" $f1) + (export "f2" $f2) + (export "f3" $f3) + (export "f4" $f4) + (export "f5" $f5) + (func $f0 + (block $fake_return_waka123 + (block + (br $fake_return_waka123) + ) + ) + ) + (func $f1 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) + (func $f2 (param $$0 i32) (param $$1 f32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) + (func $f3 (param $$0 i32) (param $$1 f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123) + ) + ) + ) + (func $f4 (param $$0 i32) (result i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.const 1) + ) + (block $BB4_2 + (br_if + (i32.eq + (i32.and + (get_local $$0) + (get_local $$1) + ) + (i32.const 0) + ) + $BB4_2 + ) + (br $fake_return_waka123 + (i32.const 0) + ) + ) + (br $fake_return_waka123 + (get_local $$1) + ) + ) + ) + ) + (func $f5 (result f32) + (block + (unreachable) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/global.wast b/test/dot_s/global.wast new file mode 100644 index 000000000..0b688eb89 --- /dev/null +++ b/test/dot_s/global.wast @@ -0,0 +1,32 @@ +(module + (memory 0 4294967295 (segment 2 "9\05\00\00")) + (import $memcpy "env" "memcpy") + (export "foo" $foo) + (export "call_memcpy" $call_memcpy) + (func $foo (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 + (i32.const 0) + ) + ) + ) + ) + ) + (func $call_memcpy (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (block $fake_return_waka123 + (block + (call_import $memcpy + (get_local $$2) + (get_local $$1) + (get_local $$0) + ) + (br $fake_return_waka123 + (get_local $$0) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/globl.wast b/test/dot_s/globl.wast new file mode 100644 index 000000000..4e87e4669 --- /dev/null +++ b/test/dot_s/globl.wast @@ -0,0 +1,12 @@ +(module + (memory 0 4294967295) + (export "foo" $foo) + (func $foo + (block $fake_return_waka123 + (block + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/i32.wast b/test/dot_s/i32.wast new file mode 100644 index 000000000..59e22d00f --- /dev/null +++ b/test/dot_s/i32.wast @@ -0,0 +1,233 @@ +(module + (memory 0 4294967295) + (export "add32" $add32) + (export "sub32" $sub32) + (export "mul32" $mul32) + (export "sdiv32" $sdiv32) + (export "udiv32" $udiv32) + (export "srem32" $srem32) + (export "urem32" $urem32) + (export "and32" $and32) + (export "or32" $or32) + (export "xor32" $xor32) + (export "shl32" $shl32) + (export "shr32" $shr32) + (export "sar32" $sar32) + (export "clz32" $clz32) + (export "clz32_zero_undef" $clz32_zero_undef) + (export "ctz32" $ctz32) + (export "ctz32_zero_undef" $ctz32_zero_undef) + (export "popcnt32" $popcnt32) + (func $add32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.add + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sub32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.sub + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $mul32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.mul + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sdiv32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.div_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $udiv32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.div_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $srem32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.rem_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $urem32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.rem_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $and32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.and + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $or32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.or + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $xor32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.xor + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $shl32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.shl + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $shr32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.shr_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sar32 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.shr_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $clz32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.clz + (get_local $$0) + ) + ) + ) + ) + ) + (func $clz32_zero_undef (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.clz + (get_local $$0) + ) + ) + ) + ) + ) + (func $ctz32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.ctz + (get_local $$0) + ) + ) + ) + ) + ) + (func $ctz32_zero_undef (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.ctz + (get_local $$0) + ) + ) + ) + ) + ) + (func $popcnt32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.popcnt + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/i64.wast b/test/dot_s/i64.wast new file mode 100644 index 000000000..14c86d830 --- /dev/null +++ b/test/dot_s/i64.wast @@ -0,0 +1,233 @@ +(module + (memory 0 4294967295) + (export "add64" $add64) + (export "sub64" $sub64) + (export "mul64" $mul64) + (export "sdiv64" $sdiv64) + (export "udiv64" $udiv64) + (export "srem64" $srem64) + (export "urem64" $urem64) + (export "and64" $and64) + (export "or64" $or64) + (export "xor64" $xor64) + (export "shl64" $shl64) + (export "shr64" $shr64) + (export "sar64" $sar64) + (export "clz64" $clz64) + (export "clz64_zero_undef" $clz64_zero_undef) + (export "ctz64" $ctz64) + (export "ctz64_zero_undef" $ctz64_zero_undef) + (export "popcnt64" $popcnt64) + (func $add64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.add + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sub64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.sub + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $mul64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.mul + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sdiv64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.div_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $udiv64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.div_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $srem64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.rem_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $urem64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.rem_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $and64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.and + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $or64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.or + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $xor64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.xor + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $shl64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.shl + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $shr64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.shr_u + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $sar64 (param $$0 i64) (param $$1 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.shr_s + (get_local $$0) + (get_local $$1) + ) + ) + ) + ) + ) + (func $clz64 (param $$0 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.clz + (get_local $$0) + ) + ) + ) + ) + ) + (func $clz64_zero_undef (param $$0 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.clz + (get_local $$0) + ) + ) + ) + ) + ) + (func $ctz64 (param $$0 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.ctz + (get_local $$0) + ) + ) + ) + ) + ) + (func $ctz64_zero_undef (param $$0 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.ctz + (get_local $$0) + ) + ) + ) + ) + ) + (func $popcnt64 (param $$0 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.popcnt + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/ident.wast b/test/dot_s/ident.wast new file mode 100644 index 000000000..ff458b577 --- /dev/null +++ b/test/dot_s/ident.wast @@ -0,0 +1,4 @@ +(module + (memory 0 4294967295) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/immediates.wast b/test/dot_s/immediates.wast new file mode 100644 index 000000000..b77e3c13d --- /dev/null +++ b/test/dot_s/immediates.wast @@ -0,0 +1,244 @@ +(module + (memory 0 4294967295) + (export "zero_i32" $zero_i32) + (export "one_i32" $one_i32) + (export "max_i32" $max_i32) + (export "min_i32" $min_i32) + (export "zero_i64" $zero_i64) + (export "one_i64" $one_i64) + (export "max_i64" $max_i64) + (export "min_i64" $min_i64) + (export "negzero_f32" $negzero_f32) + (export "zero_f32" $zero_f32) + (export "one_f32" $one_f32) + (export "two_f32" $two_f32) + (export "nan_f32" $nan_f32) + (export "negnan_f32" $negnan_f32) + (export "inf_f32" $inf_f32) + (export "neginf_f32" $neginf_f32) + (export "negzero_f64" $negzero_f64) + (export "zero_f64" $zero_f64) + (export "one_f64" $one_f64) + (export "two_f64" $two_f64) + (export "nan_f64" $nan_f64) + (export "negnan_f64" $negnan_f64) + (export "inf_f64" $inf_f64) + (export "neginf_f64" $neginf_f64) + (func $zero_i32 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) + (func $one_i32 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 1) + ) + ) + ) + ) + (func $max_i32 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 2147483647) + ) + ) + ) + ) + (func $min_i32 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const -2147483648) + ) + ) + ) + ) + (func $zero_i64 (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.const 0) + ) + ) + ) + ) + (func $one_i64 (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.const 1) + ) + ) + ) + ) + (func $max_i64 (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.const 9223372036854775807) + ) + ) + ) + ) + (func $min_i64 (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.const -9223372036854775808) + ) + ) + ) + ) + (func $negzero_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const -0) + ) + ) + ) + ) + (func $zero_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const 0) + ) + ) + ) + ) + (func $one_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const 1) + ) + ) + ) + ) + (func $two_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const 2) + ) + ) + ) + ) + (func $nan_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const nan:7fc00000) + ) + ) + ) + ) + (func $negnan_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const nan:ffc00000) + ) + ) + ) + ) + (func $inf_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const inf) + ) + ) + ) + ) + (func $neginf_f32 (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.const -inf) + ) + ) + ) + ) + (func $negzero_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const -0) + ) + ) + ) + ) + (func $zero_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const 0) + ) + ) + ) + ) + (func $one_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const 1) + ) + ) + ) + ) + (func $two_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const 2) + ) + ) + ) + ) + (func $nan_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const nan:7ff8000000000000) + ) + ) + ) + ) + (func $negnan_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const nan:fff8000000000000) + ) + ) + ) + ) + (func $inf_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const inf) + ) + ) + ) + ) + (func $neginf_f64 (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.const -inf) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/import.wast b/test/dot_s/import.wast new file mode 100644 index 000000000..ce68592f1 --- /dev/null +++ b/test/dot_s/import.wast @@ -0,0 +1,33 @@ +(module + (memory 0 4294967295) + (import $printi "env" "printi") + (import $printf "env" "printf") + (import $printv "env" "printv") + (import $split_arg "env" "split_arg") + (import $expanded_arg "env" "expanded_arg") + (import $lowered_result "env" "lowered_result") + (export "f" $f) + (func $f (param $$0 i32) (param $$1 f32) (param $$2 i64) (param $$3 i64) (param $$4 i32) + (block $fake_return_waka123 + (block + (call_import $printi + (get_local $$0) + ) + (call_import $printf + (get_local $$1) + ) + (call_import $printv) + (call_import $split_arg + (get_local $$3) + (get_local $$2) + ) + (call_import $expanded_arg + (get_local $$4) + ) + (call_import $lowered_result) + (br $fake_return_waka123) + ) + ) + ) +) +; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/lcomm-in-text-segment.wast b/test/dot_s/lcomm-in-text-segment.wast new file mode 100644 index 000000000..ff458b577 --- /dev/null +++ b/test/dot_s/lcomm-in-text-segment.wast @@ -0,0 +1,4 @@ +(module + (memory 0 4294967295) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/legalize.wast b/test/dot_s/legalize.wast new file mode 100644 index 000000000..d71f387ac --- /dev/null +++ b/test/dot_s/legalize.wast @@ -0,0 +1,3975 @@ +(module + (memory 0 4294967295) + (import $__lshrti3 "env" "__lshrti3") + (import $__ashlti3 "env" "__ashlti3") + (export "shl_i3" $shl_i3) + (export "shl_i53" $shl_i53) + (export "sext_in_reg_i32_i64" $sext_in_reg_i32_i64) + (export "fpext_f32_f64" $fpext_f32_f64) + (export "fpconv_f64_f32" $fpconv_f64_f32) + (export "bigshift" $bigshift) + (func $shl_i3 (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.shl + (get_local $$0) + (i32.and + (get_local $$1) + (i32.const 7) + ) + ) + ) + ) + ) + ) + (func $shl_i53 (param $$0 i64) (param $$1 i64) (param $$2 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.shl + (get_local $$0) + (i64.and + (get_local $$1) + (i64.const 9007199254740991) + ) + ) + ) + ) + ) + ) + (func $sext_in_reg_i32_i64 (param $$0 i64) (result i64) + (local $$1 i64) + (block $fake_return_waka123 + (block + (set_local $$1 + (i64.const 32) + ) + (br $fake_return_waka123 + (i64.shr_s + (i64.shl + (get_local $$0) + (get_local $$1) + ) + (get_local $$1) + ) + ) + ) + ) + ) + (func $fpext_f32_f64 (param $$0 i32) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.promote/f32 + (f32.load align=4 + (get_local $$0) + ) + ) + ) + ) + ) + ) + (func $fpconv_f64_f32 (param $$0 i32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.demote/f64 + (f64.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + ) + (func $bigshift (param $$0 i32) (param $$1 i64) (param $$2 i64) (param $$3 i64) (param $$4 i64) (param $$5 i64) (param $$6 i64) (param $$7 i64) (param $$8 i64) (param $$9 i64) (param $$10 i64) (param $$11 i64) (param $$12 i64) (param $$13 i64) (param $$14 i64) (param $$15 i64) (param $$16 i64) (param $$17 i64) (param $$18 i64) (param $$19 i64) (param $$20 i64) (param $$21 i64) (param $$22 i64) (param $$23 i64) (param $$24 i64) (param $$25 i64) (param $$26 i64) (param $$27 i64) (param $$28 i64) (param $$29 i64) (param $$30 i64) (param $$31 i64) (param $$32 i64) + (local $$33 i64) + (local $$34 i64) + (local $$35 i64) + (local $$36 i64) + (local $$37 i64) + (local $$38 i64) + (local $$39 i64) + (local $$40 i64) + (local $$41 i64) + (local $$42 i64) + (local $$43 i64) + (local $$44 i64) + (local $$45 i64) + (local $$46 i64) + (local $$47 i64) + (local $$48 i64) + (local $$49 i64) + (local $$50 i32) + (local $$51 i64) + (local $$52 i32) + (local $$53 i32) + (local $$54 i32) + (local $$55 i32) + (local $$56 i32) + (local $$57 i32) + (local $$58 i64) + (local $$59 i64) + (local $$60 i64) + (local $$61 i32) + (local $$62 i32) + (local $$63 i64) + (local $$64 i64) + (local $$65 i64) + (local $$66 i32) + (local $$67 i32) + (local $$68 i64) + (local $$69 i32) + (local $$70 i32) + (local $$71 i64) + (local $$72 i32) + (local $$73 i32) + (local $$74 i32) + (local $$75 i64) + (local $$76 i64) + (local $$77 i64) + (local $$78 i64) + (local $$79 i64) + (local $$80 i64) + (local $$81 i64) + (local $$82 i64) + (local $$83 i64) + (local $$84 i64) + (local $$85 i64) + (local $$86 i64) + (local $$87 i32) + (local $$88 i64) + (local $$89 i64) + (local $$90 i64) + (local $$91 i32) + (local $$92 i64) + (local $$93 i64) + (local $$94 i32) + (local $$95 i64) + (local $$96 i64) + (local $$97 i64) + (local $$98 i64) + (local $$99 i64) + (local $$100 i64) + (local $$101 i64) + (local $$102 i64) + (local $$103 i64) + (local $$104 i64) + (local $$105 i64) + (local $$106 i64) + (local $$107 i64) + (local $$108 i64) + (local $$109 i32) + (local $$110 i64) + (local $$111 i64) + (local $$112 i64) + (local $$113 i64) + (local $$114 i64) + (local $$115 i64) + (local $$116 i64) + (local $$117 i64) + (local $$118 i64) + (local $$119 i64) + (local $$120 i64) + (local $$121 i64) + (local $$122 i64) + (local $$123 i64) + (local $$124 i64) + (local $$125 i64) + (local $$126 i64) + (local $$127 i64) + (local $$128 i64) + (local $$129 i64) + (local $$130 i64) + (local $$131 i64) + (local $$132 i64) + (local $$133 i64) + (local $$134 i64) + (local $$135 i32) + (local $$136 i64) + (local $$137 i64) + (local $$138 i64) + (local $$139 i64) + (local $$140 i64) + (local $$141 i64) + (local $$142 i64) + (local $$143 i64) + (local $$144 i64) + (local $$145 i64) + (local $$146 i64) + (local $$147 i64) + (local $$148 i64) + (local $$149 i64) + (local $$150 i64) + (local $$151 i64) + (local $$152 i64) + (local $$153 i64) + (local $$154 i64) + (local $$155 i64) + (local $$156 i64) + (local $$157 i64) + (local $$158 i64) + (local $$159 i64) + (local $$160 i64) + (local $$161 i64) + (local $$162 i64) + (local $$163 i64) + (local $$164 i64) + (local $$165 i64) + (local $$166 i64) + (local $$167 i64) + (local $$168 i64) + (local $$169 i64) + (local $$170 i64) + (local $$171 i64) + (local $$172 i64) + (local $$173 i64) + (local $$174 i64) + (local $$175 i64) + (local $$176 i64) + (local $$177 i64) + (local $$178 i64) + (local $$179 i64) + (local $$180 i64) + (local $$181 i32) + (local $$182 i32) + (local $$183 i32) + (local $$184 i32) + (local $$185 i32) + (local $$186 i32) + (local $$187 i32) + (local $$188 i32) + (local $$189 i32) + (local $$190 i32) + (local $$191 i32) + (local $$192 i32) + (local $$193 i32) + (local $$194 i32) + (local $$195 i32) + (local $$196 i32) + (local $$197 i32) + (local $$198 i32) + (local $$199 i32) + (local $$200 i32) + (local $$201 i32) + (local $$202 i32) + (local $$203 i32) + (local $$204 i32) + (local $$205 i32) + (local $$206 i32) + (local $$207 i32) + (local $$208 i32) + (local $$209 i32) + (local $$210 i32) + (local $$211 i32) + (local $$212 i32) + (local $$213 i32) + (local $$214 i32) + (local $$215 i32) + (local $$216 i32) + (local $$217 i32) + (local $$218 i32) + (local $$219 i32) + (local $$220 i32) + (local $$221 i32) + (local $$222 i32) + (local $$223 i32) + (local $$224 i32) + (local $$225 i32) + (local $$226 i32) + (local $$227 i32) + (local $$228 i32) + (local $$229 i32) + (local $$230 i32) + (local $$231 i32) + (local $$232 i32) + (local $$233 i32) + (local $$234 i32) + (local $$235 i32) + (local $$236 i32) + (local $$237 i32) + (local $$238 i32) + (local $$239 i32) + (local $$240 i32) + (local $$241 i32) + (local $$242 i32) + (local $$243 i32) + (local $$244 i32) + (local $$245 i32) + (local $$246 i32) + (local $$247 i32) + (local $$248 i32) + (local $$249 i32) + (local $$250 i32) + (local $$251 i32) + (local $$252 i32) + (local $$253 i32) + (local $$254 i32) + (local $$255 i32) + (local $$256 i32) + (local $$257 i32) + (local $$258 i32) + (local $$259 i32) + (local $$260 i32) + (local $$261 i32) + (local $$262 i32) + (local $$263 i32) + (local $$264 i32) + (local $$265 i32) + (local $$266 i32) + (local $$267 i32) + (local $$268 i32) + (local $$269 i32) + (local $$270 i32) + (local $$271 i32) + (local $$272 i32) + (local $$273 i32) + (local $$274 i32) + (local $$275 i32) + (local $$276 i32) + (local $$277 i32) + (local $$278 i32) + (local $$279 i32) + (local $$280 i32) + (local $$281 i32) + (local $$282 i32) + (local $$283 i32) + (local $$284 i32) + (local $$285 i32) + (local $$286 i32) + (local $$287 i32) + (local $$288 i32) + (local $$289 i32) + (local $$290 i32) + (local $$291 i32) + (local $$292 i32) + (local $$293 i32) + (local $$294 i32) + (local $$295 i32) + (local $$296 i32) + (local $$297 i32) + (local $$298 i32) + (local $$299 i32) + (local $$300 i32) + (local $$301 i32) + (local $$302 i32) + (local $$303 i32) + (local $$304 i32) + (local $$305 i32) + (local $$306 i32) + (local $$307 i32) + (local $$308 i32) + (local $$309 i32) + (local $$310 i32) + (local $$311 i32) + (local $$312 i32) + (block $fake_return_waka123 + (block + (set_local $$181 + (i32.const 0) + ) + (set_local $$181 + (i32.load align=4 + (get_local $$181) + ) + ) + (set_local $$182 + (i32.const 1024) + ) + (set_local $$279 + (i32.sub + (get_local $$181) + (get_local $$182) + ) + ) + (set_local $$182 + (i32.const 0) + ) + (set_local $$279 + (i32.store align=4 + (get_local $$182) + (get_local $$279) + ) + ) + (set_local $$184 + (i32.const 480) + ) + (set_local $$184 + (i32.add + (get_local $$279) + (get_local $$184) + ) + ) + (call_import $__lshrti3 + (i64.sub + (i64.const 896) + (get_local $$17) + ) + (get_local $$2) + (get_local $$1) + (get_local $$184) + ) + (set_local $$33 + (i64.add + (get_local $$17) + (i64.const -768) + ) + ) + (set_local $$185 + (i32.const 464) + ) + (set_local $$185 + (i32.add + (get_local $$279) + (get_local $$185) + ) + ) + (call_import $__ashlti3 + (get_local $$33) + (get_local $$4) + (get_local $$3) + (get_local $$185) + ) + (set_local $$186 + (i32.const 496) + ) + (set_local $$186 + (i32.add + (get_local $$279) + (get_local $$186) + ) + ) + (call_import $__ashlti3 + (i64.add + (get_local $$17) + (i64.const -896) + ) + (get_local $$2) + (get_local $$1) + (get_local $$186) + ) + (set_local $$34 + (i64.sub + (i64.const 640) + (get_local $$17) + ) + ) + (set_local $$187 + (i32.const 352) + ) + (set_local $$187 + (i32.add + (get_local $$279) + (get_local $$187) + ) + ) + (call_import $__lshrti3 + (get_local $$34) + (get_local $$6) + (get_local $$5) + (get_local $$187) + ) + (set_local $$35 + (i64.add + (get_local $$17) + (i64.const -512) + ) + ) + (set_local $$188 + (i32.const 336) + ) + (set_local $$188 + (i32.add + (get_local $$279) + (get_local $$188) + ) + ) + (call_import $__ashlti3 + (get_local $$35) + (get_local $$8) + (get_local $$7) + (get_local $$188) + ) + (set_local $$36 + (i64.add + (get_local $$17) + (i64.const -640) + ) + ) + (set_local $$189 + (i32.const 368) + ) + (set_local $$189 + (i32.add + (get_local $$279) + (get_local $$189) + ) + ) + (call_import $__ashlti3 + (get_local $$36) + (get_local $$6) + (get_local $$5) + (get_local $$189) + ) + (set_local $$37 + (i64.sub + (i64.const 768) + (get_local $$17) + ) + ) + (set_local $$190 + (i32.const 432) + ) + (set_local $$190 + (i32.add + (get_local $$279) + (get_local $$190) + ) + ) + (call_import $__lshrti3 + (get_local $$37) + (get_local $$4) + (get_local $$3) + (get_local $$190) + ) + (set_local $$38 + (i64.const 384) + ) + (set_local $$39 + (i64.sub + (get_local $$38) + (get_local $$17) + ) + ) + (set_local $$191 + (i32.const 864) + ) + (set_local $$191 + (i32.add + (get_local $$279) + (get_local $$191) + ) + ) + (call_import $__lshrti3 + (get_local $$39) + (get_local $$10) + (get_local $$9) + (get_local $$191) + ) + (set_local $$40 + (i64.add + (get_local $$17) + (i64.const -256) + ) + ) + (set_local $$192 + (i32.const 848) + ) + (set_local $$192 + (i32.add + (get_local $$279) + (get_local $$192) + ) + ) + (call_import $__ashlti3 + (get_local $$40) + (get_local $$12) + (get_local $$11) + (get_local $$192) + ) + (set_local $$41 + (i64.add + (get_local $$17) + (i64.const -384) + ) + ) + (set_local $$193 + (i32.const 880) + ) + (set_local $$193 + (i32.add + (get_local $$279) + (get_local $$193) + ) + ) + (call_import $__ashlti3 + (get_local $$41) + (get_local $$10) + (get_local $$9) + (get_local $$193) + ) + (set_local $$194 + (i32.const 1008) + ) + (set_local $$194 + (i32.add + (get_local $$279) + (get_local $$194) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$16) + (get_local $$15) + (get_local $$194) + ) + (set_local $$42 + (i64.const 128) + ) + (set_local $$51 + (i64.sub + (get_local $$42) + (get_local $$17) + ) + ) + (set_local $$195 + (i32.const 960) + ) + (set_local $$195 + (i32.add + (get_local $$279) + (get_local $$195) + ) + ) + (call_import $__lshrti3 + (get_local $$51) + (get_local $$14) + (get_local $$13) + (get_local $$195) + ) + (set_local $$43 + (i64.add + (get_local $$17) + (i64.const -128) + ) + ) + (set_local $$196 + (i32.const 976) + ) + (set_local $$196 + (i32.add + (get_local $$279) + (get_local $$196) + ) + ) + (call_import $__ashlti3 + (get_local $$43) + (get_local $$14) + (get_local $$13) + (get_local $$196) + ) + (set_local $$44 + (i64.const 256) + ) + (set_local $$45 + (i64.sub + (get_local $$44) + (get_local $$17) + ) + ) + (set_local $$197 + (i32.const 816) + ) + (set_local $$197 + (i32.add + (get_local $$279) + (get_local $$197) + ) + ) + (call_import $__lshrti3 + (get_local $$45) + (get_local $$12) + (get_local $$11) + (get_local $$197) + ) + (set_local $$46 + (i64.const 512) + ) + (set_local $$47 + (i64.sub + (get_local $$46) + (get_local $$17) + ) + ) + (set_local $$198 + (i32.const 240) + ) + (set_local $$198 + (i32.add + (get_local $$279) + (get_local $$198) + ) + ) + (call_import $__lshrti3 + (get_local $$47) + (get_local $$8) + (get_local $$7) + (get_local $$198) + ) + (set_local $$199 + (i32.const 912) + ) + (set_local $$199 + (i32.add + (get_local $$279) + (get_local $$199) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$12) + (get_local $$11) + (get_local $$199) + ) + (set_local $$200 + (i32.const 928) + ) + (set_local $$200 + (i32.add + (get_local $$279) + (get_local $$200) + ) + ) + (call_import $__lshrti3 + (get_local $$51) + (get_local $$10) + (get_local $$9) + (get_local $$200) + ) + (set_local $$201 + (i32.const 944) + ) + (set_local $$201 + (i32.add + (get_local $$279) + (get_local $$201) + ) + ) + (call_import $__ashlti3 + (get_local $$43) + (get_local $$10) + (get_local $$9) + (get_local $$201) + ) + (set_local $$48 + (i64.sub + (get_local $$44) + (get_local $$47) + ) + ) + (set_local $$202 + (i32.const 80) + ) + (set_local $$202 + (i32.add + (get_local $$279) + (get_local $$202) + ) + ) + (call_import $__ashlti3 + (get_local $$48) + (get_local $$8) + (get_local $$7) + (get_local $$202) + ) + (set_local $$203 + (i32.const 96) + ) + (set_local $$203 + (i32.add + (get_local $$279) + (get_local $$203) + ) + ) + (call_import $__lshrti3 + (i64.sub + (get_local $$42) + (get_local $$48) + ) + (get_local $$6) + (get_local $$5) + (get_local $$203) + ) + (set_local $$49 + (i64.sub + (get_local $$42) + (get_local $$47) + ) + ) + (set_local $$204 + (i32.const 112) + ) + (set_local $$204 + (i32.add + (get_local $$279) + (get_local $$204) + ) + ) + (call_import $__ashlti3 + (get_local $$49) + (get_local $$6) + (get_local $$5) + (get_local $$204) + ) + (set_local $$205 + (i32.const 48) + ) + (set_local $$205 + (i32.add + (get_local $$279) + (get_local $$205) + ) + ) + (call_import $__lshrti3 + (get_local $$47) + (get_local $$4) + (get_local $$3) + (get_local $$205) + ) + (set_local $$206 + (i32.const 176) + ) + (set_local $$206 + (i32.add + (get_local $$279) + (get_local $$206) + ) + ) + (call_import $__lshrti3 + (get_local $$45) + (get_local $$8) + (get_local $$7) + (get_local $$206) + ) + (set_local $$207 + (i32.const 288) + ) + (set_local $$207 + (i32.add + (get_local $$279) + (get_local $$207) + ) + ) + (call_import $__lshrti3 + (get_local $$34) + (get_local $$2) + (get_local $$1) + (get_local $$207) + ) + (set_local $$208 + (i32.const 272) + ) + (set_local $$208 + (i32.add + (get_local $$279) + (get_local $$208) + ) + ) + (call_import $__ashlti3 + (get_local $$35) + (get_local $$4) + (get_local $$3) + (get_local $$208) + ) + (set_local $$209 + (i32.const 304) + ) + (set_local $$209 + (i32.add + (get_local $$279) + (get_local $$209) + ) + ) + (call_import $__ashlti3 + (get_local $$36) + (get_local $$2) + (get_local $$1) + (get_local $$209) + ) + (set_local $$210 + (i32.const 128) + ) + (set_local $$210 + (i32.add + (get_local $$279) + (get_local $$210) + ) + ) + (call_import $__lshrti3 + (get_local $$45) + (get_local $$6) + (get_local $$5) + (get_local $$210) + ) + (set_local $$211 + (i32.const 144) + ) + (set_local $$211 + (i32.add + (get_local $$279) + (get_local $$211) + ) + ) + (call_import $__ashlti3 + (i64.sub + (get_local $$38) + (get_local $$47) + ) + (get_local $$8) + (get_local $$7) + (get_local $$211) + ) + (set_local $$212 + (i32.const 160) + ) + (set_local $$212 + (i32.add + (get_local $$279) + (get_local $$212) + ) + ) + (call_import $__lshrti3 + (get_local $$51) + (get_local $$8) + (get_local $$7) + (get_local $$212) + ) + (set_local $$213 + (i32.const 0) + ) + (set_local $$213 + (i32.add + (get_local $$279) + (get_local $$213) + ) + ) + (call_import $__lshrti3 + (get_local $$47) + (get_local $$2) + (get_local $$1) + (get_local $$213) + ) + (set_local $$214 + (i32.const 16) + ) + (set_local $$214 + (i32.add + (get_local $$279) + (get_local $$214) + ) + ) + (call_import $__ashlti3 + (get_local $$49) + (get_local $$4) + (get_local $$3) + (get_local $$214) + ) + (set_local $$215 + (i32.const 32) + ) + (set_local $$215 + (i32.add + (get_local $$279) + (get_local $$215) + ) + ) + (call_import $__lshrti3 + (get_local $$39) + (get_local $$4) + (get_local $$3) + (get_local $$215) + ) + (set_local $$216 + (i32.const 64) + ) + (set_local $$216 + (i32.add + (get_local $$279) + (get_local $$216) + ) + ) + (call_import $__ashlti3 + (get_local $$48) + (get_local $$6) + (get_local $$5) + (get_local $$216) + ) + (set_local $$217 + (i32.const 896) + ) + (set_local $$217 + (i32.add + (get_local $$279) + (get_local $$217) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$10) + (get_local $$9) + (get_local $$217) + ) + (set_local $$218 + (i32.const 256) + ) + (set_local $$218 + (i32.add + (get_local $$279) + (get_local $$218) + ) + ) + (call_import $__ashlti3 + (get_local $$35) + (get_local $$2) + (get_local $$1) + (get_local $$218) + ) + (set_local $$219 + (i32.const 192) + ) + (set_local $$219 + (i32.add + (get_local $$279) + (get_local $$219) + ) + ) + (call_import $__lshrti3 + (get_local $$47) + (get_local $$6) + (get_local $$5) + (get_local $$219) + ) + (set_local $$220 + (i32.const 208) + ) + (set_local $$220 + (i32.add + (get_local $$279) + (get_local $$220) + ) + ) + (call_import $__ashlti3 + (get_local $$49) + (get_local $$8) + (get_local $$7) + (get_local $$220) + ) + (set_local $$221 + (i32.const 224) + ) + (set_local $$221 + (i32.add + (get_local $$279) + (get_local $$221) + ) + ) + (call_import $__lshrti3 + (get_local $$39) + (get_local $$8) + (get_local $$7) + (get_local $$221) + ) + (set_local $$222 + (i32.const 768) + ) + (set_local $$222 + (i32.add + (get_local $$279) + (get_local $$222) + ) + ) + (call_import $__lshrti3 + (get_local $$45) + (get_local $$10) + (get_local $$9) + (get_local $$222) + ) + (set_local $$49 + (i64.sub + (get_local $$42) + (get_local $$45) + ) + ) + (set_local $$223 + (i32.const 784) + ) + (set_local $$223 + (i32.add + (get_local $$279) + (get_local $$223) + ) + ) + (call_import $__ashlti3 + (get_local $$49) + (get_local $$12) + (get_local $$11) + (get_local $$223) + ) + (set_local $$224 + (i32.const 800) + ) + (set_local $$224 + (i32.add + (get_local $$279) + (get_local $$224) + ) + ) + (call_import $__lshrti3 + (get_local $$51) + (get_local $$12) + (get_local $$11) + (get_local $$224) + ) + (set_local $$225 + (i32.const 992) + ) + (set_local $$225 + (i32.add + (get_local $$279) + (get_local $$225) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$14) + (get_local $$13) + (get_local $$225) + ) + (set_local $$226 + (i32.const 832) + ) + (set_local $$226 + (i32.add + (get_local $$279) + (get_local $$226) + ) + ) + (call_import $__ashlti3 + (get_local $$40) + (get_local $$10) + (get_local $$9) + (get_local $$226) + ) + (set_local $$227 + (i32.const 384) + ) + (set_local $$227 + (i32.add + (get_local $$279) + (get_local $$227) + ) + ) + (call_import $__lshrti3 + (get_local $$37) + (get_local $$2) + (get_local $$1) + (get_local $$227) + ) + (set_local $$228 + (i32.const 400) + ) + (set_local $$228 + (i32.add + (get_local $$279) + (get_local $$228) + ) + ) + (call_import $__ashlti3 + (i64.sub + (get_local $$42) + (get_local $$37) + ) + (get_local $$4) + (get_local $$3) + (get_local $$228) + ) + (set_local $$229 + (i32.const 416) + ) + (set_local $$229 + (i32.add + (get_local $$279) + (get_local $$229) + ) + ) + (call_import $__lshrti3 + (get_local $$34) + (get_local $$4) + (get_local $$3) + (get_local $$229) + ) + (set_local $$230 + (i32.const 320) + ) + (set_local $$230 + (i32.add + (get_local $$279) + (get_local $$230) + ) + ) + (call_import $__ashlti3 + (get_local $$35) + (get_local $$6) + (get_local $$5) + (get_local $$230) + ) + (set_local $$231 + (i32.const 448) + ) + (set_local $$231 + (i32.add + (get_local $$279) + (get_local $$231) + ) + ) + (call_import $__ashlti3 + (get_local $$33) + (get_local $$2) + (get_local $$1) + (get_local $$231) + ) + (set_local $$232 + (i32.const 736) + ) + (set_local $$232 + (i32.add + (get_local $$279) + (get_local $$232) + ) + ) + (call_import $__lshrti3 + (get_local $$39) + (get_local $$2) + (get_local $$1) + (get_local $$232) + ) + (set_local $$233 + (i32.const 720) + ) + (set_local $$233 + (i32.add + (get_local $$279) + (get_local $$233) + ) + ) + (call_import $__ashlti3 + (get_local $$40) + (get_local $$4) + (get_local $$3) + (get_local $$233) + ) + (set_local $$234 + (i32.const 752) + ) + (set_local $$234 + (i32.add + (get_local $$279) + (get_local $$234) + ) + ) + (call_import $__ashlti3 + (get_local $$41) + (get_local $$2) + (get_local $$1) + (get_local $$234) + ) + (set_local $$235 + (i32.const 592) + ) + (set_local $$235 + (i32.add + (get_local $$279) + (get_local $$235) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$8) + (get_local $$7) + (get_local $$235) + ) + (set_local $$236 + (i32.const 608) + ) + (set_local $$236 + (i32.add + (get_local $$279) + (get_local $$236) + ) + ) + (call_import $__lshrti3 + (get_local $$51) + (get_local $$6) + (get_local $$5) + (get_local $$236) + ) + (set_local $$237 + (i32.const 624) + ) + (set_local $$237 + (i32.add + (get_local $$279) + (get_local $$237) + ) + ) + (call_import $__ashlti3 + (get_local $$43) + (get_local $$6) + (get_local $$5) + (get_local $$237) + ) + (set_local $$238 + (i32.const 688) + ) + (set_local $$238 + (i32.add + (get_local $$279) + (get_local $$238) + ) + ) + (call_import $__lshrti3 + (get_local $$45) + (get_local $$4) + (get_local $$3) + (get_local $$238) + ) + (set_local $$239 + (i32.const 640) + ) + (set_local $$239 + (i32.add + (get_local $$279) + (get_local $$239) + ) + ) + (call_import $__lshrti3 + (get_local $$45) + (get_local $$2) + (get_local $$1) + (get_local $$239) + ) + (set_local $$240 + (i32.const 656) + ) + (set_local $$240 + (i32.add + (get_local $$279) + (get_local $$240) + ) + ) + (call_import $__ashlti3 + (get_local $$49) + (get_local $$4) + (get_local $$3) + (get_local $$240) + ) + (set_local $$241 + (i32.const 672) + ) + (set_local $$241 + (i32.add + (get_local $$279) + (get_local $$241) + ) + ) + (call_import $__lshrti3 + (get_local $$51) + (get_local $$4) + (get_local $$3) + (get_local $$241) + ) + (set_local $$242 + (i32.const 576) + ) + (set_local $$242 + (i32.add + (get_local $$279) + (get_local $$242) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$6) + (get_local $$5) + (get_local $$242) + ) + (set_local $$243 + (i32.const 704) + ) + (set_local $$243 + (i32.add + (get_local $$279) + (get_local $$243) + ) + ) + (call_import $__ashlti3 + (get_local $$40) + (get_local $$2) + (get_local $$1) + (get_local $$243) + ) + (set_local $$244 + (i32.const 528) + ) + (set_local $$244 + (i32.add + (get_local $$279) + (get_local $$244) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$4) + (get_local $$3) + (get_local $$244) + ) + (set_local $$245 + (i32.const 544) + ) + (set_local $$245 + (i32.add + (get_local $$279) + (get_local $$245) + ) + ) + (call_import $__lshrti3 + (get_local $$51) + (get_local $$2) + (get_local $$1) + (get_local $$245) + ) + (set_local $$246 + (i32.const 560) + ) + (set_local $$246 + (i32.add + (get_local $$279) + (get_local $$246) + ) + ) + (call_import $__ashlti3 + (get_local $$43) + (get_local $$2) + (get_local $$1) + (get_local $$246) + ) + (set_local $$247 + (i32.const 512) + ) + (set_local $$247 + (i32.add + (get_local $$279) + (get_local $$247) + ) + ) + (call_import $__ashlti3 + (get_local $$17) + (get_local $$2) + (get_local $$1) + (get_local $$247) + ) + (set_local $$39 + (i64.load align=8 offset=480 + (get_local $$279) + ) + ) + (set_local $$43 + (i64.load align=8 offset=464 + (get_local $$279) + ) + ) + (set_local $$34 + (i64.load align=8 offset=496 + (get_local $$279) + ) + ) + (set_local $$51 + (i64.const 0) + ) + (set_local $$49 + (i64.load align=8 offset=352 + (get_local $$279) + ) + ) + (set_local $$36 + (i64.load align=8 offset=336 + (get_local $$279) + ) + ) + (set_local $$38 + (i64.load align=8 offset=368 + (get_local $$279) + ) + ) + (set_local $$41 + (i64.load align=8 offset=432 + (get_local $$279) + ) + ) + (set_local $$58 + (i64.load align=8 offset=864 + (get_local $$279) + ) + ) + (set_local $$59 + (i64.load align=8 offset=848 + (get_local $$279) + ) + ) + (set_local $$60 + (i64.load align=8 offset=880 + (get_local $$279) + ) + ) + (set_local $$63 + (i64.load align=8 offset=1008 + (get_local $$279) + ) + ) + (set_local $$64 + (i64.load align=8 offset=960 + (get_local $$279) + ) + ) + (set_local $$65 + (i64.load align=8 offset=976 + (get_local $$279) + ) + ) + (set_local $$68 + (i64.load align=8 offset=816 + (get_local $$279) + ) + ) + (set_local $$71 + (i64.load align=8 offset=240 + (get_local $$279) + ) + ) + (set_local $$50 + (i64.lt_u + (get_local $$33) + (get_local $$42) + ) + ) + (set_local $$52 + (i64.eq + (get_local $$33) + (get_local $$51) + ) + ) + (set_local $$53 + (i64.lt_u + (get_local $$35) + (get_local $$42) + ) + ) + (set_local $$54 + (i64.eq + (get_local $$35) + (get_local $$51) + ) + ) + (set_local $$55 + (i64.lt_u + (get_local $$37) + (get_local $$42) + ) + ) + (set_local $$56 + (i64.lt_u + (get_local $$35) + (get_local $$44) + ) + ) + (set_local $$57 + (i64.lt_u + (get_local $$40) + (get_local $$42) + ) + ) + (set_local $$61 + (i64.eq + (get_local $$40) + (get_local $$51) + ) + ) + (set_local $$62 + (i64.lt_u + (get_local $$17) + (get_local $$42) + ) + ) + (set_local $$66 + (i64.eq + (get_local $$17) + (get_local $$51) + ) + ) + (set_local $$67 + (i64.lt_u + (get_local $$45) + (get_local $$42) + ) + ) + (set_local $$69 + (i64.lt_u + (get_local $$17) + (get_local $$44) + ) + ) + (set_local $$70 + (i64.lt_u + (get_local $$47) + (get_local $$42) + ) + ) + (set_local $$72 + (i64.lt_u + (get_local $$47) + (get_local $$44) + ) + ) + (set_local $$73 + (i64.lt_u + (get_local $$17) + (get_local $$46) + ) + ) + (set_local $$74 + (i32.const 8) + ) + (set_local $$248 + (i32.const 480) + ) + (set_local $$248 + (i32.add + (get_local $$279) + (get_local $$248) + ) + ) + (set_local $$17 + (i64.load align=8 + (i32.add + (get_local $$248) + (get_local $$74) + ) + ) + ) + (set_local $$249 + (i32.const 464) + ) + (set_local $$249 + (i32.add + (get_local $$279) + (get_local $$249) + ) + ) + (set_local $$35 + (i64.load align=8 + (i32.add + (get_local $$249) + (get_local $$74) + ) + ) + ) + (set_local $$250 + (i32.const 496) + ) + (set_local $$250 + (i32.add + (get_local $$279) + (get_local $$250) + ) + ) + (set_local $$40 + (i64.load align=8 + (i32.add + (get_local $$250) + (get_local $$74) + ) + ) + ) + (set_local $$251 + (i32.const 352) + ) + (set_local $$251 + (i32.add + (get_local $$279) + (get_local $$251) + ) + ) + (set_local $$44 + (i64.load align=8 + (i32.add + (get_local $$251) + (get_local $$74) + ) + ) + ) + (set_local $$252 + (i32.const 336) + ) + (set_local $$252 + (i32.add + (get_local $$279) + (get_local $$252) + ) + ) + (set_local $$33 + (i64.load align=8 + (i32.add + (get_local $$252) + (get_local $$74) + ) + ) + ) + (set_local $$253 + (i32.const 368) + ) + (set_local $$253 + (i32.add + (get_local $$279) + (get_local $$253) + ) + ) + (set_local $$46 + (i64.load align=8 + (i32.add + (get_local $$253) + (get_local $$74) + ) + ) + ) + (set_local $$254 + (i32.const 432) + ) + (set_local $$254 + (i32.add + (get_local $$279) + (get_local $$254) + ) + ) + (set_local $$75 + (i64.load align=8 + (i32.add + (get_local $$254) + (get_local $$74) + ) + ) + ) + (set_local $$255 + (i32.const 864) + ) + (set_local $$255 + (i32.add + (get_local $$279) + (get_local $$255) + ) + ) + (set_local $$76 + (i64.load align=8 + (i32.add + (get_local $$255) + (get_local $$74) + ) + ) + ) + (set_local $$256 + (i32.const 848) + ) + (set_local $$256 + (i32.add + (get_local $$279) + (get_local $$256) + ) + ) + (set_local $$77 + (i64.load align=8 + (i32.add + (get_local $$256) + (get_local $$74) + ) + ) + ) + (set_local $$257 + (i32.const 880) + ) + (set_local $$257 + (i32.add + (get_local $$279) + (get_local $$257) + ) + ) + (set_local $$78 + (i64.load align=8 + (i32.add + (get_local $$257) + (get_local $$74) + ) + ) + ) + (set_local $$258 + (i32.const 1008) + ) + (set_local $$258 + (i32.add + (get_local $$279) + (get_local $$258) + ) + ) + (set_local $$79 + (i64.load align=8 + (i32.add + (get_local $$258) + (get_local $$74) + ) + ) + ) + (set_local $$259 + (i32.const 960) + ) + (set_local $$259 + (i32.add + (get_local $$279) + (get_local $$259) + ) + ) + (set_local $$80 + (i64.load align=8 + (i32.add + (get_local $$259) + (get_local $$74) + ) + ) + ) + (set_local $$260 + (i32.const 976) + ) + (set_local $$260 + (i32.add + (get_local $$279) + (get_local $$260) + ) + ) + (set_local $$81 + (i64.load align=8 + (i32.add + (get_local $$260) + (get_local $$74) + ) + ) + ) + (set_local $$261 + (i32.const 816) + ) + (set_local $$261 + (i32.add + (get_local $$279) + (get_local $$261) + ) + ) + (set_local $$82 + (i64.load align=8 + (i32.add + (get_local $$261) + (get_local $$74) + ) + ) + ) + (set_local $$262 + (i32.const 240) + ) + (set_local $$262 + (i32.add + (get_local $$279) + (get_local $$262) + ) + ) + (set_local $$83 + (i64.load align=8 + (i32.add + (get_local $$262) + (get_local $$74) + ) + ) + ) + (set_local $$84 + (i64.load align=8 offset=912 + (get_local $$279) + ) + ) + (set_local $$85 + (i64.load align=8 offset=928 + (get_local $$279) + ) + ) + (set_local $$86 + (i64.load align=8 offset=944 + (get_local $$279) + ) + ) + (set_local $$88 + (i64.load align=8 offset=80 + (get_local $$279) + ) + ) + (set_local $$89 + (i64.load align=8 offset=96 + (get_local $$279) + ) + ) + (set_local $$90 + (i64.load align=8 offset=112 + (get_local $$279) + ) + ) + (set_local $$92 + (i64.load align=8 offset=48 + (get_local $$279) + ) + ) + (set_local $$93 + (i64.load align=8 offset=176 + (get_local $$279) + ) + ) + (set_local $$95 + (i64.load align=8 offset=288 + (get_local $$279) + ) + ) + (set_local $$96 + (i64.load align=8 offset=272 + (get_local $$279) + ) + ) + (set_local $$87 + (i64.lt_u + (get_local $$48) + (get_local $$42) + ) + ) + (set_local $$91 + (i64.eq + (get_local $$48) + (get_local $$51) + ) + ) + (set_local $$94 + (i64.eq + (get_local $$47) + (get_local $$51) + ) + ) + (set_local $$42 + (i64.load align=8 offset=304 + (get_local $$279) + ) + ) + (set_local $$263 + (i32.const 912) + ) + (set_local $$263 + (i32.add + (get_local $$279) + (get_local $$263) + ) + ) + (set_local $$47 + (i64.load align=8 + (i32.add + (get_local $$263) + (get_local $$74) + ) + ) + ) + (set_local $$264 + (i32.const 928) + ) + (set_local $$264 + (i32.add + (get_local $$279) + (get_local $$264) + ) + ) + (set_local $$48 + (i64.load align=8 + (i32.add + (get_local $$264) + (get_local $$74) + ) + ) + ) + (set_local $$265 + (i32.const 944) + ) + (set_local $$265 + (i32.add + (get_local $$279) + (get_local $$265) + ) + ) + (set_local $$97 + (i64.load align=8 + (i32.add + (get_local $$265) + (get_local $$74) + ) + ) + ) + (set_local $$266 + (i32.const 80) + ) + (set_local $$266 + (i32.add + (get_local $$279) + (get_local $$266) + ) + ) + (set_local $$98 + (i64.load align=8 + (i32.add + (get_local $$266) + (get_local $$74) + ) + ) + ) + (set_local $$267 + (i32.const 96) + ) + (set_local $$267 + (i32.add + (get_local $$279) + (get_local $$267) + ) + ) + (set_local $$99 + (i64.load align=8 + (i32.add + (get_local $$267) + (get_local $$74) + ) + ) + ) + (set_local $$268 + (i32.const 112) + ) + (set_local $$268 + (i32.add + (get_local $$279) + (get_local $$268) + ) + ) + (set_local $$100 + (i64.load align=8 + (i32.add + (get_local $$268) + (get_local $$74) + ) + ) + ) + (set_local $$269 + (i32.const 48) + ) + (set_local $$269 + (i32.add + (get_local $$279) + (get_local $$269) + ) + ) + (set_local $$101 + (i64.load align=8 + (i32.add + (get_local $$269) + (get_local $$74) + ) + ) + ) + (set_local $$270 + (i32.const 176) + ) + (set_local $$270 + (i32.add + (get_local $$279) + (get_local $$270) + ) + ) + (set_local $$102 + (i64.load align=8 + (i32.add + (get_local $$270) + (get_local $$74) + ) + ) + ) + (set_local $$271 + (i32.const 288) + ) + (set_local $$271 + (i32.add + (get_local $$279) + (get_local $$271) + ) + ) + (set_local $$103 + (i64.load align=8 + (i32.add + (get_local $$271) + (get_local $$74) + ) + ) + ) + (set_local $$272 + (i32.const 272) + ) + (set_local $$272 + (i32.add + (get_local $$279) + (get_local $$272) + ) + ) + (set_local $$104 + (i64.load align=8 + (i32.add + (get_local $$272) + (get_local $$74) + ) + ) + ) + (set_local $$273 + (i32.const 304) + ) + (set_local $$273 + (i32.add + (get_local $$279) + (get_local $$273) + ) + ) + (set_local $$105 + (i64.load align=8 + (i32.add + (get_local $$273) + (get_local $$74) + ) + ) + ) + (set_local $$106 + (i64.load align=8 offset=128 + (get_local $$279) + ) + ) + (set_local $$107 + (i64.load align=8 offset=144 + (get_local $$279) + ) + ) + (set_local $$108 + (i64.load align=8 offset=160 + (get_local $$279) + ) + ) + (set_local $$110 + (i64.load align=8 + (get_local $$279) + ) + ) + (set_local $$111 + (i64.load align=8 offset=16 + (get_local $$279) + ) + ) + (set_local $$112 + (i64.load align=8 offset=32 + (get_local $$279) + ) + ) + (set_local $$113 + (i64.load align=8 offset=64 + (get_local $$279) + ) + ) + (set_local $$114 + (i64.load align=8 offset=896 + (get_local $$279) + ) + ) + (set_local $$109 + (i64.eq + (get_local $$45) + (get_local $$51) + ) + ) + (set_local $$45 + (i64.load align=8 offset=256 + (get_local $$279) + ) + ) + (set_local $$274 + (i32.const 128) + ) + (set_local $$274 + (i32.add + (get_local $$279) + (get_local $$274) + ) + ) + (set_local $$115 + (i64.load align=8 + (i32.add + (get_local $$274) + (get_local $$74) + ) + ) + ) + (set_local $$275 + (i32.const 144) + ) + (set_local $$275 + (i32.add + (get_local $$279) + (get_local $$275) + ) + ) + (set_local $$116 + (i64.load align=8 + (i32.add + (get_local $$275) + (get_local $$74) + ) + ) + ) + (set_local $$276 + (i32.const 160) + ) + (set_local $$276 + (i32.add + (get_local $$279) + (get_local $$276) + ) + ) + (set_local $$117 + (i64.load align=8 + (i32.add + (get_local $$276) + (get_local $$74) + ) + ) + ) + (set_local $$277 + (i32.const 0) + ) + (set_local $$277 + (i32.add + (get_local $$279) + (get_local $$277) + ) + ) + (set_local $$118 + (i64.load align=8 + (i32.add + (get_local $$277) + (get_local $$74) + ) + ) + ) + (set_local $$278 + (i32.const 16) + ) + (set_local $$278 + (i32.add + (get_local $$279) + (get_local $$278) + ) + ) + (set_local $$119 + (i64.load align=8 + (i32.add + (get_local $$278) + (get_local $$74) + ) + ) + ) + (set_local $$279 + (i32.const 32) + ) + (set_local $$279 + (i32.add + (get_local $$279) + (get_local $$279) + ) + ) + (set_local $$120 + (i64.load align=8 + (i32.add + (get_local $$279) + (get_local $$74) + ) + ) + ) + (set_local $$280 + (i32.const 64) + ) + (set_local $$280 + (i32.add + (get_local $$279) + (get_local $$280) + ) + ) + (set_local $$121 + (i64.load align=8 + (i32.add + (get_local $$280) + (get_local $$74) + ) + ) + ) + (set_local $$281 + (i32.const 896) + ) + (set_local $$281 + (i32.add + (get_local $$279) + (get_local $$281) + ) + ) + (set_local $$122 + (i64.load align=8 + (i32.add + (get_local $$281) + (get_local $$74) + ) + ) + ) + (set_local $$282 + (i32.const 256) + ) + (set_local $$282 + (i32.add + (get_local $$279) + (get_local $$282) + ) + ) + (set_local $$123 + (i64.load align=8 + (i32.add + (get_local $$282) + (get_local $$74) + ) + ) + ) + (set_local $$124 + (i64.load align=8 offset=192 + (get_local $$279) + ) + ) + (set_local $$125 + (i64.load align=8 offset=208 + (get_local $$279) + ) + ) + (set_local $$126 + (i64.load align=8 offset=224 + (get_local $$279) + ) + ) + (set_local $$127 + (i64.load align=8 offset=768 + (get_local $$279) + ) + ) + (set_local $$128 + (i64.load align=8 offset=784 + (get_local $$279) + ) + ) + (set_local $$129 + (i64.load align=8 offset=800 + (get_local $$279) + ) + ) + (set_local $$130 + (i64.load align=8 offset=992 + (get_local $$279) + ) + ) + (set_local $$131 + (i64.load align=8 offset=832 + (get_local $$279) + ) + ) + (set_local $$132 + (i64.load align=8 offset=384 + (get_local $$279) + ) + ) + (set_local $$133 + (i64.load align=8 offset=400 + (get_local $$279) + ) + ) + (set_local $$134 + (i64.load align=8 offset=416 + (get_local $$279) + ) + ) + (set_local $$136 + (i64.load align=8 offset=320 + (get_local $$279) + ) + ) + (set_local $$135 + (i64.eq + (get_local $$37) + (get_local $$51) + ) + ) + (set_local $$37 + (i64.load align=8 offset=448 + (get_local $$279) + ) + ) + (set_local $$283 + (i32.const 192) + ) + (set_local $$283 + (i32.add + (get_local $$279) + (get_local $$283) + ) + ) + (set_local $$137 + (i64.load align=8 + (i32.add + (get_local $$283) + (get_local $$74) + ) + ) + ) + (set_local $$284 + (i32.const 208) + ) + (set_local $$284 + (i32.add + (get_local $$279) + (get_local $$284) + ) + ) + (set_local $$138 + (i64.load align=8 + (i32.add + (get_local $$284) + (get_local $$74) + ) + ) + ) + (set_local $$285 + (i32.const 224) + ) + (set_local $$285 + (i32.add + (get_local $$279) + (get_local $$285) + ) + ) + (set_local $$139 + (i64.load align=8 + (i32.add + (get_local $$285) + (get_local $$74) + ) + ) + ) + (set_local $$286 + (i32.const 768) + ) + (set_local $$286 + (i32.add + (get_local $$279) + (get_local $$286) + ) + ) + (set_local $$140 + (i64.load align=8 + (i32.add + (get_local $$286) + (get_local $$74) + ) + ) + ) + (set_local $$287 + (i32.const 784) + ) + (set_local $$287 + (i32.add + (get_local $$279) + (get_local $$287) + ) + ) + (set_local $$141 + (i64.load align=8 + (i32.add + (get_local $$287) + (get_local $$74) + ) + ) + ) + (set_local $$288 + (i32.const 800) + ) + (set_local $$288 + (i32.add + (get_local $$279) + (get_local $$288) + ) + ) + (set_local $$142 + (i64.load align=8 + (i32.add + (get_local $$288) + (get_local $$74) + ) + ) + ) + (set_local $$289 + (i32.const 992) + ) + (set_local $$289 + (i32.add + (get_local $$279) + (get_local $$289) + ) + ) + (set_local $$143 + (i64.load align=8 + (i32.add + (get_local $$289) + (get_local $$74) + ) + ) + ) + (set_local $$290 + (i32.const 832) + ) + (set_local $$290 + (i32.add + (get_local $$279) + (get_local $$290) + ) + ) + (set_local $$144 + (i64.load align=8 + (i32.add + (get_local $$290) + (get_local $$74) + ) + ) + ) + (set_local $$291 + (i32.const 384) + ) + (set_local $$291 + (i32.add + (get_local $$279) + (get_local $$291) + ) + ) + (set_local $$145 + (i64.load align=8 + (i32.add + (get_local $$291) + (get_local $$74) + ) + ) + ) + (set_local $$292 + (i32.const 400) + ) + (set_local $$292 + (i32.add + (get_local $$279) + (get_local $$292) + ) + ) + (set_local $$146 + (i64.load align=8 + (i32.add + (get_local $$292) + (get_local $$74) + ) + ) + ) + (set_local $$293 + (i32.const 416) + ) + (set_local $$293 + (i32.add + (get_local $$279) + (get_local $$293) + ) + ) + (set_local $$147 + (i64.load align=8 + (i32.add + (get_local $$293) + (get_local $$74) + ) + ) + ) + (set_local $$294 + (i32.const 320) + ) + (set_local $$294 + (i32.add + (get_local $$279) + (get_local $$294) + ) + ) + (set_local $$148 + (i64.load align=8 + (i32.add + (get_local $$294) + (get_local $$74) + ) + ) + ) + (set_local $$295 + (i32.const 448) + ) + (set_local $$295 + (i32.add + (get_local $$279) + (get_local $$295) + ) + ) + (set_local $$149 + (i64.load align=8 + (i32.add + (get_local $$295) + (get_local $$74) + ) + ) + ) + (set_local $$150 + (i64.load align=8 offset=736 + (get_local $$279) + ) + ) + (set_local $$151 + (i64.load align=8 offset=720 + (get_local $$279) + ) + ) + (set_local $$152 + (i64.load align=8 offset=752 + (get_local $$279) + ) + ) + (set_local $$153 + (i64.load align=8 offset=592 + (get_local $$279) + ) + ) + (set_local $$154 + (i64.load align=8 offset=608 + (get_local $$279) + ) + ) + (set_local $$155 + (i64.load align=8 offset=624 + (get_local $$279) + ) + ) + (set_local $$156 + (i64.load align=8 offset=688 + (get_local $$279) + ) + ) + (set_local $$296 + (i32.const 736) + ) + (set_local $$296 + (i32.add + (get_local $$279) + (get_local $$296) + ) + ) + (set_local $$157 + (i64.load align=8 + (i32.add + (get_local $$296) + (get_local $$74) + ) + ) + ) + (set_local $$297 + (i32.const 720) + ) + (set_local $$297 + (i32.add + (get_local $$279) + (get_local $$297) + ) + ) + (set_local $$158 + (i64.load align=8 + (i32.add + (get_local $$297) + (get_local $$74) + ) + ) + ) + (set_local $$298 + (i32.const 752) + ) + (set_local $$298 + (i32.add + (get_local $$279) + (get_local $$298) + ) + ) + (set_local $$159 + (i64.load align=8 + (i32.add + (get_local $$298) + (get_local $$74) + ) + ) + ) + (set_local $$299 + (i32.const 592) + ) + (set_local $$299 + (i32.add + (get_local $$279) + (get_local $$299) + ) + ) + (set_local $$160 + (i64.load align=8 + (i32.add + (get_local $$299) + (get_local $$74) + ) + ) + ) + (set_local $$300 + (i32.const 608) + ) + (set_local $$300 + (i32.add + (get_local $$279) + (get_local $$300) + ) + ) + (set_local $$161 + (i64.load align=8 + (i32.add + (get_local $$300) + (get_local $$74) + ) + ) + ) + (set_local $$301 + (i32.const 624) + ) + (set_local $$301 + (i32.add + (get_local $$279) + (get_local $$301) + ) + ) + (set_local $$162 + (i64.load align=8 + (i32.add + (get_local $$301) + (get_local $$74) + ) + ) + ) + (set_local $$302 + (i32.const 688) + ) + (set_local $$302 + (i32.add + (get_local $$279) + (get_local $$302) + ) + ) + (set_local $$163 + (i64.load align=8 + (i32.add + (get_local $$302) + (get_local $$74) + ) + ) + ) + (set_local $$164 + (i64.load align=8 offset=640 + (get_local $$279) + ) + ) + (set_local $$165 + (i64.load align=8 offset=656 + (get_local $$279) + ) + ) + (set_local $$166 + (i64.load align=8 offset=672 + (get_local $$279) + ) + ) + (set_local $$167 + (i64.load align=8 offset=576 + (get_local $$279) + ) + ) + (set_local $$168 + (i64.load align=8 offset=704 + (get_local $$279) + ) + ) + (set_local $$303 + (i32.const 640) + ) + (set_local $$303 + (i32.add + (get_local $$279) + (get_local $$303) + ) + ) + (set_local $$169 + (i64.load align=8 + (i32.add + (get_local $$303) + (get_local $$74) + ) + ) + ) + (set_local $$304 + (i32.const 656) + ) + (set_local $$304 + (i32.add + (get_local $$279) + (get_local $$304) + ) + ) + (set_local $$170 + (i64.load align=8 + (i32.add + (get_local $$304) + (get_local $$74) + ) + ) + ) + (set_local $$305 + (i32.const 672) + ) + (set_local $$305 + (i32.add + (get_local $$279) + (get_local $$305) + ) + ) + (set_local $$171 + (i64.load align=8 + (i32.add + (get_local $$305) + (get_local $$74) + ) + ) + ) + (set_local $$306 + (i32.const 576) + ) + (set_local $$306 + (i32.add + (get_local $$279) + (get_local $$306) + ) + ) + (set_local $$172 + (i64.load align=8 + (i32.add + (get_local $$306) + (get_local $$74) + ) + ) + ) + (set_local $$307 + (i32.const 704) + ) + (set_local $$307 + (i32.add + (get_local $$279) + (get_local $$307) + ) + ) + (set_local $$173 + (i64.load align=8 + (i32.add + (get_local $$307) + (get_local $$74) + ) + ) + ) + (set_local $$174 + (i64.load align=8 offset=528 + (get_local $$279) + ) + ) + (set_local $$175 + (i64.load align=8 offset=544 + (get_local $$279) + ) + ) + (set_local $$176 + (i64.load align=8 offset=560 + (get_local $$279) + ) + ) + (set_local $$308 + (i32.const 528) + ) + (set_local $$308 + (i32.add + (get_local $$279) + (get_local $$308) + ) + ) + (set_local $$177 + (i64.load align=8 + (i32.add + (get_local $$308) + (get_local $$74) + ) + ) + ) + (set_local $$309 + (i32.const 544) + ) + (set_local $$309 + (i32.add + (get_local $$279) + (get_local $$309) + ) + ) + (set_local $$178 + (i64.load align=8 + (i32.add + (get_local $$309) + (get_local $$74) + ) + ) + ) + (set_local $$310 + (i32.const 560) + ) + (set_local $$310 + (i32.add + (get_local $$279) + (get_local $$310) + ) + ) + (set_local $$179 + (i64.load align=8 + (i32.add + (get_local $$310) + (get_local $$74) + ) + ) + ) + (set_local $$180 + (i64.load align=8 offset=512 + (get_local $$279) + ) + ) + (set_local $$311 + (i32.const 512) + ) + (set_local $$311 + (i32.add + (get_local $$279) + (get_local $$311) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (get_local $$74) + ) + (i64.select + (get_local $$73) + (i64.select + (get_local $$69) + (i64.select + (get_local $$62) + (i64.load align=8 + (i32.add + (get_local $$311) + (get_local $$74) + ) + ) + (get_local $$51) + ) + (get_local $$51) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (get_local $$0) + (i64.select + (get_local $$73) + (i64.select + (get_local $$69) + (i64.select + (get_local $$62) + (get_local $$180) + (get_local $$51) + ) + (get_local $$51) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 24) + ) + (i64.select + (get_local $$73) + (i64.select + (get_local $$69) + (i64.select + (get_local $$66) + (get_local $$4) + (i64.select + (get_local $$62) + (i64.or + (get_local $$177) + (get_local $$178) + ) + (get_local $$179) + ) + ) + (get_local $$51) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 16) + ) + (i64.select + (get_local $$73) + (i64.select + (get_local $$69) + (i64.select + (get_local $$66) + (get_local $$3) + (i64.select + (get_local $$62) + (i64.or + (get_local $$174) + (get_local $$175) + ) + (get_local $$176) + ) + ) + (get_local $$51) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 56) + ) + (i64.select + (get_local $$73) + (i64.select + (get_local $$66) + (get_local $$8) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$66) + (get_local $$8) + (i64.select + (get_local $$62) + (i64.or + (get_local $$160) + (get_local $$161) + ) + (get_local $$162) + ) + ) + (i64.select + (get_local $$67) + (get_local $$163) + (get_local $$51) + ) + ) + (i64.select + (get_local $$61) + (get_local $$4) + (i64.select + (get_local $$57) + (i64.or + (get_local $$158) + (get_local $$157) + ) + (get_local $$159) + ) + ) + ) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 48) + ) + (i64.select + (get_local $$73) + (i64.select + (get_local $$66) + (get_local $$7) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$66) + (get_local $$7) + (i64.select + (get_local $$62) + (i64.or + (get_local $$153) + (get_local $$154) + ) + (get_local $$155) + ) + ) + (i64.select + (get_local $$67) + (get_local $$156) + (get_local $$51) + ) + ) + (i64.select + (get_local $$61) + (get_local $$3) + (i64.select + (get_local $$57) + (i64.or + (get_local $$151) + (get_local $$150) + ) + (get_local $$152) + ) + ) + ) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 40) + ) + (i64.select + (get_local $$73) + (i64.select + (get_local $$66) + (get_local $$6) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$62) + (get_local $$172) + (get_local $$51) + ) + (i64.select + (get_local $$109) + (get_local $$2) + (i64.select + (get_local $$67) + (i64.or + (get_local $$169) + (get_local $$170) + ) + (get_local $$171) + ) + ) + ) + (i64.select + (get_local $$57) + (get_local $$173) + (get_local $$51) + ) + ) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 32) + ) + (i64.select + (get_local $$73) + (i64.select + (get_local $$66) + (get_local $$5) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$62) + (get_local $$167) + (get_local $$51) + ) + (i64.select + (get_local $$109) + (get_local $$1) + (i64.select + (get_local $$67) + (i64.or + (get_local $$164) + (get_local $$165) + ) + (get_local $$166) + ) + ) + ) + (i64.select + (get_local $$57) + (get_local $$168) + (get_local $$51) + ) + ) + ) + (get_local $$51) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 120) + ) + (i64.select + (get_local $$66) + (get_local $$16) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$66) + (get_local $$16) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$66) + (get_local $$16) + (i64.select + (get_local $$62) + (i64.or + (get_local $$79) + (get_local $$80) + ) + (get_local $$81) + ) + ) + (i64.select + (get_local $$67) + (get_local $$82) + (get_local $$51) + ) + ) + (i64.select + (get_local $$61) + (get_local $$12) + (i64.select + (get_local $$57) + (i64.or + (get_local $$77) + (get_local $$76) + ) + (get_local $$78) + ) + ) + ) + ) + (i64.select + (get_local $$72) + (i64.select + (get_local $$70) + (get_local $$83) + (get_local $$51) + ) + (get_local $$51) + ) + ) + (i64.select + (get_local $$54) + (get_local $$8) + (i64.select + (get_local $$56) + (i64.or + (i64.select + (get_local $$54) + (get_local $$8) + (i64.select + (get_local $$53) + (i64.or + (get_local $$33) + (get_local $$44) + ) + (get_local $$46) + ) + ) + (i64.select + (get_local $$55) + (get_local $$75) + (get_local $$51) + ) + ) + (i64.select + (get_local $$52) + (get_local $$4) + (i64.select + (get_local $$50) + (i64.or + (get_local $$35) + (get_local $$17) + ) + (get_local $$40) + ) + ) + ) + ) + ) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 112) + ) + (i64.select + (get_local $$66) + (get_local $$15) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$66) + (get_local $$15) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$66) + (get_local $$15) + (i64.select + (get_local $$62) + (i64.or + (get_local $$63) + (get_local $$64) + ) + (get_local $$65) + ) + ) + (i64.select + (get_local $$67) + (get_local $$68) + (get_local $$51) + ) + ) + (i64.select + (get_local $$61) + (get_local $$11) + (i64.select + (get_local $$57) + (i64.or + (get_local $$59) + (get_local $$58) + ) + (get_local $$60) + ) + ) + ) + ) + (i64.select + (get_local $$72) + (i64.select + (get_local $$70) + (get_local $$71) + (get_local $$51) + ) + (get_local $$51) + ) + ) + (i64.select + (get_local $$54) + (get_local $$7) + (i64.select + (get_local $$56) + (i64.or + (i64.select + (get_local $$54) + (get_local $$7) + (i64.select + (get_local $$53) + (i64.or + (get_local $$36) + (get_local $$49) + ) + (get_local $$38) + ) + ) + (i64.select + (get_local $$55) + (get_local $$41) + (get_local $$51) + ) + ) + (i64.select + (get_local $$52) + (get_local $$3) + (i64.select + (get_local $$50) + (i64.or + (get_local $$43) + (get_local $$39) + ) + (get_local $$34) + ) + ) + ) + ) + ) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 104) + ) + (i64.select + (get_local $$66) + (get_local $$14) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$66) + (get_local $$14) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$62) + (get_local $$143) + (get_local $$51) + ) + (i64.select + (get_local $$109) + (get_local $$10) + (i64.select + (get_local $$67) + (i64.or + (get_local $$140) + (get_local $$141) + ) + (get_local $$142) + ) + ) + ) + (i64.select + (get_local $$57) + (get_local $$144) + (get_local $$51) + ) + ) + ) + (i64.select + (get_local $$72) + (i64.select + (get_local $$94) + (get_local $$6) + (i64.select + (get_local $$70) + (i64.or + (get_local $$137) + (get_local $$138) + ) + (get_local $$139) + ) + ) + (get_local $$51) + ) + ) + (i64.select + (get_local $$54) + (get_local $$6) + (i64.select + (get_local $$56) + (i64.or + (i64.select + (get_local $$53) + (get_local $$148) + (get_local $$51) + ) + (i64.select + (get_local $$135) + (get_local $$2) + (i64.select + (get_local $$55) + (i64.or + (get_local $$145) + (get_local $$146) + ) + (get_local $$147) + ) + ) + ) + (i64.select + (get_local $$50) + (get_local $$149) + (get_local $$51) + ) + ) + ) + ) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 96) + ) + (i64.select + (get_local $$66) + (get_local $$13) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$66) + (get_local $$13) + (i64.select + (get_local $$69) + (i64.or + (i64.select + (get_local $$62) + (get_local $$130) + (get_local $$51) + ) + (i64.select + (get_local $$109) + (get_local $$9) + (i64.select + (get_local $$67) + (i64.or + (get_local $$127) + (get_local $$128) + ) + (get_local $$129) + ) + ) + ) + (i64.select + (get_local $$57) + (get_local $$131) + (get_local $$51) + ) + ) + ) + (i64.select + (get_local $$72) + (i64.select + (get_local $$94) + (get_local $$5) + (i64.select + (get_local $$70) + (i64.or + (get_local $$124) + (get_local $$125) + ) + (get_local $$126) + ) + ) + (get_local $$51) + ) + ) + (i64.select + (get_local $$54) + (get_local $$5) + (i64.select + (get_local $$56) + (i64.or + (i64.select + (get_local $$53) + (get_local $$136) + (get_local $$51) + ) + (i64.select + (get_local $$135) + (get_local $$1) + (i64.select + (get_local $$55) + (i64.or + (get_local $$132) + (get_local $$133) + ) + (get_local $$134) + ) + ) + ) + (i64.select + (get_local $$50) + (get_local $$37) + (get_local $$51) + ) + ) + ) + ) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 72) + ) + (i64.select + (get_local $$66) + (get_local $$10) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$69) + (i64.select + (get_local $$62) + (get_local $$122) + (get_local $$51) + ) + (get_local $$51) + ) + (i64.select + (get_local $$94) + (get_local $$2) + (i64.select + (get_local $$72) + (i64.or + (i64.select + (get_local $$94) + (get_local $$2) + (i64.select + (get_local $$70) + (i64.or + (get_local $$118) + (get_local $$119) + ) + (get_local $$120) + ) + ) + (i64.select + (get_local $$87) + (get_local $$121) + (get_local $$51) + ) + ) + (i64.select + (get_local $$109) + (get_local $$6) + (i64.select + (get_local $$67) + (i64.or + (get_local $$115) + (get_local $$116) + ) + (get_local $$117) + ) + ) + ) + ) + ) + (i64.select + (get_local $$56) + (i64.select + (get_local $$53) + (get_local $$123) + (get_local $$51) + ) + (get_local $$51) + ) + ) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 64) + ) + (i64.select + (get_local $$66) + (get_local $$9) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$69) + (i64.select + (get_local $$62) + (get_local $$114) + (get_local $$51) + ) + (get_local $$51) + ) + (i64.select + (get_local $$94) + (get_local $$1) + (i64.select + (get_local $$72) + (i64.or + (i64.select + (get_local $$94) + (get_local $$1) + (i64.select + (get_local $$70) + (i64.or + (get_local $$110) + (get_local $$111) + ) + (get_local $$112) + ) + ) + (i64.select + (get_local $$87) + (get_local $$113) + (get_local $$51) + ) + ) + (i64.select + (get_local $$109) + (get_local $$5) + (i64.select + (get_local $$67) + (i64.or + (get_local $$106) + (get_local $$107) + ) + (get_local $$108) + ) + ) + ) + ) + ) + (i64.select + (get_local $$56) + (i64.select + (get_local $$53) + (get_local $$45) + (get_local $$51) + ) + (get_local $$51) + ) + ) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 88) + ) + (i64.select + (get_local $$66) + (get_local $$12) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$69) + (i64.select + (get_local $$66) + (get_local $$12) + (i64.select + (get_local $$62) + (i64.or + (get_local $$47) + (get_local $$48) + ) + (get_local $$97) + ) + ) + (get_local $$51) + ) + (i64.select + (get_local $$94) + (get_local $$4) + (i64.select + (get_local $$72) + (i64.or + (i64.select + (get_local $$70) + (get_local $$101) + (get_local $$51) + ) + (i64.select + (get_local $$91) + (get_local $$8) + (i64.select + (get_local $$87) + (i64.or + (get_local $$98) + (get_local $$99) + ) + (get_local $$100) + ) + ) + ) + (i64.select + (get_local $$67) + (get_local $$102) + (get_local $$51) + ) + ) + ) + ) + (i64.select + (get_local $$56) + (i64.select + (get_local $$54) + (get_local $$4) + (i64.select + (get_local $$53) + (i64.or + (get_local $$104) + (get_local $$103) + ) + (get_local $$105) + ) + ) + (get_local $$51) + ) + ) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 80) + ) + (i64.select + (get_local $$66) + (get_local $$11) + (i64.select + (get_local $$73) + (i64.or + (i64.select + (get_local $$69) + (i64.select + (get_local $$66) + (get_local $$11) + (i64.select + (get_local $$62) + (i64.or + (get_local $$84) + (get_local $$85) + ) + (get_local $$86) + ) + ) + (get_local $$51) + ) + (i64.select + (get_local $$94) + (get_local $$3) + (i64.select + (get_local $$72) + (i64.or + (i64.select + (get_local $$70) + (get_local $$92) + (get_local $$51) + ) + (i64.select + (get_local $$91) + (get_local $$7) + (i64.select + (get_local $$87) + (i64.or + (get_local $$88) + (get_local $$89) + ) + (get_local $$90) + ) + ) + ) + (i64.select + (get_local $$67) + (get_local $$93) + (get_local $$51) + ) + ) + ) + ) + (i64.select + (get_local $$56) + (i64.select + (get_local $$54) + (get_local $$3) + (i64.select + (get_local $$53) + (i64.or + (get_local $$96) + (get_local $$95) + ) + (get_local $$42) + ) + ) + (get_local $$51) + ) + ) + ) + ) + (set_local $$183 + (i32.const 1024) + ) + (set_local $$279 + (i32.add + (get_local $$279) + (get_local $$183) + ) + ) + (set_local $$183 + (i32.const 0) + ) + (set_local $$279 + (i32.store align=4 + (get_local $$183) + (get_local $$279) + ) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/load-ext.wast b/test/dot_s/load-ext.wast new file mode 100644 index 000000000..58b6845ff --- /dev/null +++ b/test/dot_s/load-ext.wast @@ -0,0 +1,124 @@ +(module + (memory 0 4294967295) + (export "sext_i8_i32" $sext_i8_i32) + (export "zext_i8_i32" $zext_i8_i32) + (export "sext_i16_i32" $sext_i16_i32) + (export "zext_i16_i32" $zext_i16_i32) + (export "sext_i8_i64" $sext_i8_i64) + (export "zext_i8_i64" $zext_i8_i64) + (export "sext_i16_i64" $sext_i16_i64) + (export "zext_i16_i64" $zext_i16_i64) + (export "sext_i32_i64" $sext_i32_i64) + (export "zext_i32_i64" $zext_i32_i64) + (func $sext_i8_i32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + (func $zext_i8_i32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + (func $sext_i16_i32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=16 + (get_local $$0) + ) + ) + ) + ) + ) + (func $zext_i16_i32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=16 + (get_local $$0) + ) + ) + ) + ) + ) + (func $sext_i8_i64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + (func $zext_i8_i64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + (func $sext_i16_i64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=16 + (get_local $$0) + ) + ) + ) + ) + ) + (func $zext_i16_i64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=16 + (get_local $$0) + ) + ) + ) + ) + ) + (func $sext_i32_i64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=32 + (get_local $$0) + ) + ) + ) + ) + ) + (func $zext_i32_i64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=32 + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/load-store-i1.wast b/test/dot_s/load-store-i1.wast new file mode 100644 index 000000000..9a453362f --- /dev/null +++ b/test/dot_s/load-store-i1.wast @@ -0,0 +1,102 @@ +(module + (memory 0 4294967295) + (export "load_u_i1_i32" $load_u_i1_i32) + (export "load_s_i1_i32" $load_s_i1_i32) + (export "load_u_i1_i64" $load_u_i1_i64) + (export "load_s_i1_i64" $load_s_i1_i64) + (export "store_i32_i1" $store_i32_i1) + (export "store_i64_i1" $store_i64_i1) + (func $load_u_i1_i32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + (func $load_s_i1_i32 (param $$0 i32) (result i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.const 31) + ) + (br $fake_return_waka123 + (i32.shr_s + (i32.shl + (i32.load align=8 + (get_local $$0) + ) + (get_local $$1) + ) + (get_local $$1) + ) + ) + ) + ) + ) + (func $load_u_i1_i64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + (func $load_s_i1_i64 (param $$0 i32) (result i64) + (local $$1 i64) + (block $fake_return_waka123 + (block + (set_local $$1 + (i64.const 63) + ) + (br $fake_return_waka123 + (i64.shr_s + (i64.shl + (i64.load align=8 + (get_local $$0) + ) + (get_local $$1) + ) + (get_local $$1) + ) + ) + ) + ) + ) + (func $store_i32_i1 (param $$0 i32) (param $$1 i32) + (block $fake_return_waka123 + (block + (i32.store align=8 + (get_local $$0) + (i32.and + (get_local $$1) + (i32.const 1) + ) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $store_i64_i1 (param $$0 i32) (param $$1 i64) + (block $fake_return_waka123 + (block + (i64.store align=8 + (get_local $$0) + (i64.and + (get_local $$1) + (i64.const 1) + ) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/load.wast b/test/dot_s/load.wast new file mode 100644 index 000000000..8177bb15c --- /dev/null +++ b/test/dot_s/load.wast @@ -0,0 +1,52 @@ +(module + (memory 0 4294967295) + (export "ldi32" $ldi32) + (export "ldi64" $ldi64) + (export "ldf32" $ldf32) + (export "ldf64" $ldf64) + (func $ldi32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 + (get_local $$0) + ) + ) + ) + ) + ) + (func $ldi64 (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) + (func $ldf32 (param $$0 i32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.load align=4 + (get_local $$0) + ) + ) + ) + ) + ) + (func $ldf64 (param $$0 i32) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.load align=8 + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/memops.s b/test/dot_s/memops.s new file mode 100644 index 000000000..cf8d1db38 --- /dev/null +++ b/test/dot_s/memops.s @@ -0,0 +1,94 @@ + .text + .file "/tmp/tmpG0LbqO/a.out.bc" + .type _Z6reporti,@function +_Z6reporti: # @_Z6reporti + .param i32 +# BB#0: + i32.const $push0=, 8 + i32.store $discard=, 0($pop0), $0 + i32.const $push1=, .str + call emscripten_asm_const, $pop1 + return +func_end0: + .size _Z6reporti, func_end0-_Z6reporti + + .globl main + .type main,@function +main: # @main + .result i32 + .local i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 # XXX this was 1 short in the backend output, an extra one was added manually +# BB#0: + i32.const $7=, __stack_pointer + i32.load $7=, 0($7) + i32.const $8=, 1048576 + i32.sub $12=, $7, $8 + i32.const $8=, __stack_pointer + i32.store $12=, 0($8), $12 + i32.const $1=, 0 + copy_local $0=, $1 + copy_local $6=, $1 +BB1_1: # %.preheader1 + # =>This Loop Header: Depth=1 + # Child Loop BB1_2 Depth 2 + # Child Loop BB1_3 Depth 2 + loop BB1_5 + copy_local $4=, $1 +BB1_2: # Parent Loop BB1_1 Depth=1 + # => This Inner Loop Header: Depth=2 + loop BB1_3 + i32.const $10=, 0 + i32.add $10=, $12, $10 + i32.add $push1=, $10, $4 + i32.add $push0=, $6, $4 + i32.store8 $discard=, 0($pop1), $pop0 + i32.const $2=, 1 + i32.add $4=, $4, $2 + i32.const $3=, 1048576 + i32.ne $push2=, $4, $3 + copy_local $5=, $1 + br_if $pop2, BB1_2 +BB1_3: # %.preheader + # Parent Loop BB1_1 Depth=1 + # => This Inner Loop Header: Depth=2 + loop BB1_4 + i32.const $11=, 0 + i32.add $11=, $12, $11 + i32.add $push3=, $11, $5 + i32.load8_u $push4=, 0($pop3) + i32.and $push5=, $pop4, $2 + i32.add $6=, $pop5, $6 + i32.add $5=, $5, $2 + i32.ne $push6=, $5, $3 + br_if $pop6, BB1_3 +BB1_4: # in Loop: Header=BB1_1 Depth=1 + i32.const $push7=, 3 + i32.mul $push8=, $6, $pop7 + i32.const $push9=, 5 + i32.div_s $push10=, $6, $pop9 + i32.add $push11=, $pop8, $pop10 + i32.const $push12=, 17 + i32.add $push13=, $pop11, $pop12 + i32.const $push14=, 65535 + i32.and $6=, $pop13, $pop14 + i32.add $0=, $0, $2 + i32.const $push15=, 100 + i32.ne $push16=, $0, $pop15 + br_if $pop16, BB1_1 +BB1_5: + call _Z6reporti, $6 + i32.const $push17=, 0 + i32.const $9=, 1048576 + i32.add $12=, $12, $9 + i32.const $9=, __stack_pointer + i32.store $12=, 0($9), $12 + return $pop17 +func_end1: + .size main, func_end1-main + + .type .str,@object # @.str + .data +.str: + .asciz "{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }" + .size .str, 51 + + diff --git a/test/dot_s/memops.wast b/test/dot_s/memops.wast new file mode 100644 index 000000000..f0a3c5390 --- /dev/null +++ b/test/dot_s/memops.wast @@ -0,0 +1,222 @@ +(module + (memory 0 4294967295 (segment 16 "{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }\00")) + (import $_emscripten_asm_const_vi "env" "_emscripten_asm_const_vi") + (export "_Z6reporti" $_Z6reporti) + (export "main" $main) + (func $_Z6reporti (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 + (i32.const 8) + (get_local $$0) + ) + (call_import $_emscripten_asm_const_vi + (i32.const 0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $main (result i32) + (local $$0 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) + (block $fake_return_waka123 + (block + (set_local $$7 + (i32.const 0) + ) + (set_local $$7 + (i32.load align=4 + (get_local $$7) + ) + ) + (set_local $$8 + (i32.const 1048576) + ) + (set_local $$12 + (i32.sub + (get_local $$7) + (get_local $$8) + ) + ) + (set_local $$8 + (i32.const 0) + ) + (set_local $$12 + (i32.store align=4 + (get_local $$8) + (get_local $$12) + ) + ) + (set_local $$1 + (i32.const 0) + ) + (set_local $$0 + (get_local $$1) + ) + (set_local $$6 + (get_local $$1) + ) + (loop $BB1_5 $BB1_1 + (block + (set_local $$4 + (get_local $$1) + ) + (loop $BB1_3 $BB1_2 + (block + (set_local $$10 + (i32.const 0) + ) + (set_local $$10 + (i32.add + (get_local $$12) + (get_local $$10) + ) + ) + (i32.store align=8 + (i32.add + (get_local $$10) + (get_local $$4) + ) + (i32.add + (get_local $$6) + (get_local $$4) + ) + ) + (set_local $$2 + (i32.const 1) + ) + (set_local $$4 + (i32.add + (get_local $$4) + (get_local $$2) + ) + ) + (set_local $$3 + (i32.const 1048576) + ) + (set_local $$5 + (get_local $$1) + ) + (br_if + (i32.ne + (get_local $$4) + (get_local $$3) + ) + $BB1_2 + ) + ) + ) + (loop $BB1_4 $BB1_3 + (block + (set_local $$11 + (i32.const 0) + ) + (set_local $$11 + (i32.add + (get_local $$12) + (get_local $$11) + ) + ) + (set_local $$6 + (i32.add + (i32.and + (i32.load align=8 + (i32.add + (get_local $$11) + (get_local $$5) + ) + ) + (get_local $$2) + ) + (get_local $$6) + ) + ) + (set_local $$5 + (i32.add + (get_local $$5) + (get_local $$2) + ) + ) + (br_if + (i32.ne + (get_local $$5) + (get_local $$3) + ) + $BB1_3 + ) + ) + ) + (set_local $$6 + (i32.and + (i32.add + (i32.add + (i32.mul + (get_local $$6) + (i32.const 3) + ) + (i32.div_s + (get_local $$6) + (i32.const 5) + ) + ) + (i32.const 17) + ) + (i32.const 65535) + ) + ) + (set_local $$0 + (i32.add + (get_local $$0) + (get_local $$2) + ) + ) + (br_if + (i32.ne + (get_local $$0) + (i32.const 100) + ) + $BB1_1 + ) + ) + ) + (call $_Z6reporti + (get_local $$6) + ) + (set_local $$9 + (i32.const 1048576) + ) + (set_local $$12 + (i32.add + (get_local $$12) + (get_local $$9) + ) + ) + (set_local $$9 + (i32.const 0) + ) + (set_local $$12 + (i32.store align=4 + (get_local $$9) + (get_local $$12) + ) + ) + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }", ["vi"]]} }
\ No newline at end of file diff --git a/test/dot_s/memory-addr32.wast b/test/dot_s/memory-addr32.wast new file mode 100644 index 000000000..475da10d6 --- /dev/null +++ b/test/dot_s/memory-addr32.wast @@ -0,0 +1,23 @@ +(module + (memory 0 4294967295) + (export "memory_size" $memory_size) + (export "grow_memory" $grow_memory) + (func $memory_size (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (memory_size) + ) + ) + ) + ) + (func $grow_memory (param $$0 i32) + (block $fake_return_waka123 + (block + (memory_size) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/memory-addr64.wast b/test/dot_s/memory-addr64.wast new file mode 100644 index 000000000..f20ad55a7 --- /dev/null +++ b/test/dot_s/memory-addr64.wast @@ -0,0 +1,23 @@ +(module + (memory 0 4294967295) + (export "memory_size" $memory_size) + (export "grow_memory" $grow_memory) + (func $memory_size (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (memory_size) + ) + ) + ) + ) + (func $grow_memory (param $$0 i64) + (block $fake_return_waka123 + (block + (memory_size) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/minimal.s b/test/dot_s/minimal.s new file mode 100644 index 000000000..c329a6eec --- /dev/null +++ b/test/dot_s/minimal.s @@ -0,0 +1,12 @@ + .text + .file "/tmp/tmpAEEklZ/a.out.bc" + .globl main + .type main,@function +main: # @main + .result i32 +# BB#0: + i32.const $push0=, 5 + return $pop0 +func_end0: + .size main, func_end0-main + diff --git a/test/dot_s/minimal.wast b/test/dot_s/minimal.wast new file mode 100644 index 000000000..3db3bf1de --- /dev/null +++ b/test/dot_s/minimal.wast @@ -0,0 +1,14 @@ +(module + (memory 0 4294967295) + (export "main" $main) + (func $main (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 5) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/offset-folding.wast b/test/dot_s/offset-folding.wast new file mode 100644 index 000000000..f53b26d9a --- /dev/null +++ b/test/dot_s/offset-folding.wast @@ -0,0 +1,44 @@ +(module + (memory 0 4294967295) + (export "test0" $test0) + (export "test1" $test1) + (export "test2" $test2) + (export "test3" $test3) + (func $test0 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) + (func $test1 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) + (func $test2 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) + (func $test3 (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.const 0) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/offset.wast b/test/dot_s/offset.wast new file mode 100644 index 000000000..7fafb078e --- /dev/null +++ b/test/dot_s/offset.wast @@ -0,0 +1,204 @@ +(module + (memory 0 4294967295 (segment 2 "\00\00\00\00")) + (export "load_i32_with_folded_offset" $load_i32_with_folded_offset) + (export "load_i32_with_unfolded_offset" $load_i32_with_unfolded_offset) + (export "load_i64_with_folded_offset" $load_i64_with_folded_offset) + (export "load_i64_with_unfolded_offset" $load_i64_with_unfolded_offset) + (export "store_i32_with_folded_offset" $store_i32_with_folded_offset) + (export "store_i32_with_unfolded_offset" $store_i32_with_unfolded_offset) + (export "store_i64_with_folded_offset" $store_i64_with_folded_offset) + (export "store_i64_with_unfolded_offset" $store_i64_with_unfolded_offset) + (export "load_i32_from_numeric_address" $load_i32_from_numeric_address) + (export "load_i32_from_global_address" $load_i32_from_global_address) + (export "store_i32_to_numeric_address" $store_i32_to_numeric_address) + (export "store_i32_to_global_address" $store_i32_to_global_address) + (export "load_i8_s_with_folded_offset" $load_i8_s_with_folded_offset) + (export "load_i8_u_with_folded_offset" $load_i8_u_with_folded_offset) + (export "store_i8_with_folded_offset" $store_i8_with_folded_offset) + (func $load_i32_with_folded_offset (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 offset=24 + (get_local $$0) + ) + ) + ) + ) + ) + (func $load_i32_with_unfolded_offset (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 + (i32.add + (get_local $$0) + (i32.const 24) + ) + ) + ) + ) + ) + ) + (func $load_i64_with_folded_offset (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=8 offset=24 + (get_local $$0) + ) + ) + ) + ) + ) + (func $load_i64_with_unfolded_offset (param $$0 i32) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.load align=8 + (i32.add + (get_local $$0) + (i32.const 24) + ) + ) + ) + ) + ) + ) + (func $store_i32_with_folded_offset (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 offset=24 + (get_local $$0) + (i32.const 0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $store_i32_with_unfolded_offset (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 + (i32.add + (get_local $$0) + (i32.const 24) + ) + (i32.const 0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $store_i64_with_folded_offset (param $$0 i32) + (block $fake_return_waka123 + (block + (i64.store align=8 offset=24 + (get_local $$0) + (i64.const 0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $store_i64_with_unfolded_offset (param $$0 i32) + (block $fake_return_waka123 + (block + (i64.store align=8 + (i32.add + (get_local $$0) + (i32.const 24) + ) + (i64.const 0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $load_i32_from_numeric_address (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 offset=42 + (i32.const 0) + ) + ) + ) + ) + ) + (func $load_i32_from_global_address (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 offset=2 + (i32.const 0) + ) + ) + ) + ) + ) + (func $store_i32_to_numeric_address + (local $$0 i32) + (block $fake_return_waka123 + (block + (set_local $$0 + (i32.const 0) + ) + (i32.store align=4 offset=42 + (get_local $$0) + (get_local $$0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $store_i32_to_global_address + (local $$0 i32) + (block $fake_return_waka123 + (block + (set_local $$0 + (i32.const 0) + ) + (i32.store align=4 offset=2 + (get_local $$0) + (get_local $$0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $load_i8_s_with_folded_offset (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=8 offset=24 + (get_local $$0) + ) + ) + ) + ) + ) + (func $load_i8_u_with_folded_offset (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=8 offset=24 + (get_local $$0) + ) + ) + ) + ) + ) + (func $store_i8_with_folded_offset (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=8 offset=24 + (get_local $$0) + (i32.const 0) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/permute.wast b/test/dot_s/permute.wast new file mode 100644 index 000000000..9e984ca19 --- /dev/null +++ b/test/dot_s/permute.wast @@ -0,0 +1,4 @@ +(module + (memory 0 4294967295 (segment 4 "hE?\8ds\0e7\db[g\8f\955it\c4k\0b\e2\ef\bcld\e0\fd\8c\9e\86&~\d8\94\89+\c8\a4\c2\f2\fb\12\1cej\d99\b7\b3W\c6w\af\ae\caM>\92ub\96\84\b6\b0N\ec;q\11\f7\bf\e31\e6\a7\90\fc\03\e4\aa\d7\cc- \15\83DH\80r\fa\01X\eb:_\00A\cd\e9o`n\ac(\ad\ba0\dcyS#\f4$\"\82\7f}\8e\f6\93L\'\bb\bdZ\ed4\18\f3\c0\cf\ff\a3\f8\07\05\9c\d3\0f\a0\06m%\\\f9^B<\e7\b1\17\98]\0c\dd\c5\f5p\e5\fezJ\ab,F\a5@\08R\85!\b8\1a\ce\d5\04\nI\a6\d1\9f\8a\c9\a9|\97\9aG\be8Y\8b\c1\1b\d4\ea\b9\19\14\9b\9163\d0\1d\d2\df=C\1f\0dc\e1\c7QUv\02\b5aK\b4\tV\c3x\e8\a1\1e\81\de/{\da\d6Pf\10T\f0)\88\16\ee\a8\9d\f1\cbO*\b2\99\132\87.\a2")) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/phi.wast b/test/dot_s/phi.wast new file mode 100644 index 000000000..72f094e85 --- /dev/null +++ b/test/dot_s/phi.wast @@ -0,0 +1,82 @@ +(module + (memory 0 4294967295) + (export "test0" $test0) + (export "test1" $test1) + (func $test0 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (block $BB0_2 + (br_if + (i32.gt_s + (get_local $$0) + (i32.const -1) + ) + $BB0_2 + ) + (set_local $$0 + (i32.div_s + (get_local $$0) + (i32.const 3) + ) + ) + ) + (br $fake_return_waka123 + (get_local $$0) + ) + ) + ) + ) + (func $test1 (param $$0 i32) (result i32) + (local $$1 i32) + (local $$2 i32) + (local $$3 i32) + (local $$4 i32) + (local $$5 i32) + (block $fake_return_waka123 + (block + (set_local $$2 + (i32.const 1) + ) + (set_local $$3 + (i32.const 0) + ) + (set_local $$4 + (get_local $$2) + ) + (set_local $$5 + (get_local $$3) + ) + (loop $BB1_2 $BB1_1 + (block + (set_local $$5 + (i32.add + (get_local $$5) + (get_local $$2) + ) + ) + (set_local $$1 + (get_local $$4) + ) + (set_local $$4 + (get_local $$3) + ) + (set_local $$3 + (get_local $$1) + ) + (br_if + (i32.lt_s + (get_local $$5) + (get_local $$0) + ) + $BB1_1 + ) + ) + ) + (br $fake_return_waka123 + (get_local $$4) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/reg-stackify.wast b/test/dot_s/reg-stackify.wast new file mode 100644 index 000000000..c714fbb29 --- /dev/null +++ b/test/dot_s/reg-stackify.wast @@ -0,0 +1,121 @@ +(module + (memory 0 4294967295) + (export "no0" $no0) + (export "no1" $no1) + (export "yes0" $yes0) + (export "yes1" $yes1) + (export "stack_uses" $stack_uses) + (func $no0 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.load align=4 + (get_local $$1) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + (br $fake_return_waka123 + (get_local $$1) + ) + ) + ) + ) + (func $no1 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.load align=4 + (get_local $$1) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + (br $fake_return_waka123 + (get_local $$1) + ) + ) + ) + ) + (func $yes0 (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + (br $fake_return_waka123 + (i32.load align=4 + (get_local $$1) + ) + ) + ) + ) + ) + (func $yes1 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 + (get_local $$0) + ) + ) + ) + ) + ) + (func $stack_uses (param $$0 i32) (param $$1 i32) (param $$2 i32) (param $$3 i32) (result i32) + (local $$4 i32) + (local $$5 i32) + (block $fake_return_waka123 + (block + (set_local $$4 + (i32.const 1) + ) + (set_local $$5 + (i32.const 2) + ) + (block $BB4_2 + (br_if + (i32.ne + (i32.xor + (i32.xor + (i32.lt_s + (get_local $$0) + (get_local $$4) + ) + (i32.lt_s + (get_local $$1) + (get_local $$5) + ) + ) + (i32.xor + (i32.lt_s + (get_local $$2) + (get_local $$4) + ) + (i32.lt_s + (get_local $$3) + (get_local $$5) + ) + ) + ) + (get_local $$4) + ) + $BB4_2 + ) + (br $fake_return_waka123 + (i32.const 0) + ) + ) + (br $fake_return_waka123 + (get_local $$4) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/relocation.wast b/test/dot_s/relocation.wast new file mode 100644 index 000000000..0b87203fb --- /dev/null +++ b/test/dot_s/relocation.wast @@ -0,0 +1,17 @@ +(module + (memory 0 4294967295 (segment 2 "\06\00\00\00") (segment 6 "\02\00\00\00")) + (export "main" $main) + (func $main (result i32) + (local $$0 i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.load align=4 + (i32.const 0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/return-int32.wast b/test/dot_s/return-int32.wast new file mode 100644 index 000000000..6bc521154 --- /dev/null +++ b/test/dot_s/return-int32.wast @@ -0,0 +1,14 @@ +(module + (memory 0 4294967295) + (export "return_i32" $return_i32) + (func $return_i32 (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (get_local $$0) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/return-void.wast b/test/dot_s/return-void.wast new file mode 100644 index 000000000..59f5aeb06 --- /dev/null +++ b/test/dot_s/return-void.wast @@ -0,0 +1,12 @@ +(module + (memory 0 4294967295) + (export "return_void" $return_void) + (func $return_void + (block $fake_return_waka123 + (block + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/returned.wast b/test/dot_s/returned.wast new file mode 100644 index 000000000..003b54e57 --- /dev/null +++ b/test/dot_s/returned.wast @@ -0,0 +1,35 @@ +(module + (memory 0 4294967295) + (import $_Znwm "env" "_Znwm") + (import $_ZN5AppleC1Ev "env" "_ZN5AppleC1Ev") + (import $memcpy "env" "memcpy") + (export "_Z3foov" $_Z3foov) + (export "_Z3barPvS_l" $_Z3barPvS_l) + (func $_Z3foov (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $_ZN5AppleC1Ev + (call_import $_Znwm + (i32.const 1) + ) + ) + ) + ) + ) + ) + (func $_Z3barPvS_l (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call_import $memcpy + (get_local $$2) + (get_local $$1) + (get_local $$0) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/select.wast b/test/dot_s/select.wast new file mode 100644 index 000000000..54f788fcf --- /dev/null +++ b/test/dot_s/select.wast @@ -0,0 +1,172 @@ +(module + (memory 0 4294967295) + (export "select_i32_bool" $select_i32_bool) + (export "select_i32_eq" $select_i32_eq) + (export "select_i32_ne" $select_i32_ne) + (export "select_i64_bool" $select_i64_bool) + (export "select_i64_eq" $select_i64_eq) + (export "select_i64_ne" $select_i64_ne) + (export "select_f32_bool" $select_f32_bool) + (export "select_f32_eq" $select_f32_eq) + (export "select_f32_ne" $select_f32_ne) + (export "select_f64_bool" $select_f64_bool) + (export "select_f64_eq" $select_f64_eq) + (export "select_f64_ne" $select_f64_ne) + (func $select_i32_bool (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) + (func $select_i32_eq (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.select + (get_local $$0) + (get_local $$2) + (get_local $$1) + ) + ) + ) + ) + ) + (func $select_i32_ne (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) + (func $select_i64_bool (param $$0 i32) (param $$1 i64) (param $$2 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) + (func $select_i64_eq (param $$0 i32) (param $$1 i64) (param $$2 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.select + (get_local $$0) + (get_local $$2) + (get_local $$1) + ) + ) + ) + ) + ) + (func $select_i64_ne (param $$0 i32) (param $$1 i64) (param $$2 i64) (result i64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i64.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) + (func $select_f32_bool (param $$0 i32) (param $$1 f32) (param $$2 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) + (func $select_f32_eq (param $$0 i32) (param $$1 f32) (param $$2 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.select + (get_local $$0) + (get_local $$2) + (get_local $$1) + ) + ) + ) + ) + ) + (func $select_f32_ne (param $$0 i32) (param $$1 f32) (param $$2 f32) (result f32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f32.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) + (func $select_f64_bool (param $$0 i32) (param $$1 f64) (param $$2 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) + (func $select_f64_eq (param $$0 i32) (param $$1 f64) (param $$2 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.select + (get_local $$0) + (get_local $$2) + (get_local $$1) + ) + ) + ) + ) + ) + (func $select_f64_ne (param $$0 i32) (param $$1 f64) (param $$2 f64) (result f64) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (f64.select + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/signext-zeroext.wast b/test/dot_s/signext-zeroext.wast new file mode 100644 index 000000000..87140b506 --- /dev/null +++ b/test/dot_s/signext-zeroext.wast @@ -0,0 +1,80 @@ +(module + (memory 0 4294967295) + (export "z2s_func" $z2s_func) + (export "s2z_func" $s2z_func) + (export "z2s_call" $z2s_call) + (export "s2z_call" $s2z_call) + (func $z2s_func (param $$0 i32) (result i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.const 24) + ) + (br $fake_return_waka123 + (i32.shr_s + (i32.shl + (get_local $$0) + (get_local $$1) + ) + (get_local $$1) + ) + ) + ) + ) + ) + (func $s2z_func (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.and + (get_local $$0) + (i32.const 255) + ) + ) + ) + ) + ) + (func $z2s_call (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (call $z2s_func + (i32.and + (get_local $$0) + (i32.const 255) + ) + ) + ) + ) + ) + ) + (func $s2z_call (param $$0 i32) (result i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.const 24) + ) + (br $fake_return_waka123 + (i32.shr_s + (i32.shl + (call $s2z_func + (i32.shr_s + (i32.shl + (get_local $$0) + (get_local $$1) + ) + (get_local $$1) + ) + ) + (get_local $$1) + ) + (get_local $$1) + ) + ) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/store-results.wast b/test/dot_s/store-results.wast new file mode 100644 index 000000000..3359b2433 --- /dev/null +++ b/test/dot_s/store-results.wast @@ -0,0 +1,91 @@ +(module + (memory 0 4294967295) + (export "single_block" $single_block) + (export "foo" $foo) + (export "bar" $bar) + (func $single_block (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (i32.store align=4 + (get_local $$0) + (i32.const 0) + ) + ) + ) + ) + ) + (func $foo + (local $$0 i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$0 + (i32.const 0) + ) + (set_local $$1 + (get_local $$0) + ) + (loop $BB1_2 $BB1_1 + (block + (set_local $$1 + (i32.add + (get_local $$1) + (i32.const 1) + ) + ) + (i32.store align=4 offset=2 + (get_local $$0) + (get_local $$0) + ) + (br_if + (i32.ne + (get_local $$1) + (i32.const 256) + ) + $BB1_1 + ) + ) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $bar + (local $$0 i32) + (local $$1 f32) + (block $fake_return_waka123 + (block + (set_local $$1 + (f32.const 0) + ) + (set_local $$0 + (i32.const 0) + ) + (loop $BB2_2 $BB2_1 + (block + (set_local $$1 + (f32.add + (get_local $$1) + (f32.const 1) + ) + ) + (i32.store align=4 offset=2 + (get_local $$0) + (get_local $$0) + ) + (br_if + (f32.ne + (get_local $$1) + (f32.const 256) + ) + $BB2_1 + ) + ) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/store-trunc.wast b/test/dot_s/store-trunc.wast new file mode 100644 index 000000000..6700d0b73 --- /dev/null +++ b/test/dot_s/store-trunc.wast @@ -0,0 +1,64 @@ +(module + (memory 0 4294967295) + (export "trunc_i8_i32" $trunc_i8_i32) + (export "trunc_i16_i32" $trunc_i16_i32) + (export "trunc_i8_i64" $trunc_i8_i64) + (export "trunc_i16_i64" $trunc_i16_i64) + (export "trunc_i32_i64" $trunc_i32_i64) + (func $trunc_i8_i32 (param $$0 i32) (param $$1 i32) + (block $fake_return_waka123 + (block + (i32.store align=8 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $trunc_i16_i32 (param $$0 i32) (param $$1 i32) + (block $fake_return_waka123 + (block + (i32.store align=16 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $trunc_i8_i64 (param $$0 i32) (param $$1 i64) + (block $fake_return_waka123 + (block + (i64.store align=8 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $trunc_i16_i64 (param $$0 i32) (param $$1 i64) + (block $fake_return_waka123 + (block + (i64.store align=16 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $trunc_i32_i64 (param $$0 i32) (param $$1 i64) + (block $fake_return_waka123 + (block + (i64.store align=32 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/store.wast b/test/dot_s/store.wast new file mode 100644 index 000000000..23cb3541f --- /dev/null +++ b/test/dot_s/store.wast @@ -0,0 +1,52 @@ +(module + (memory 0 4294967295) + (export "sti32" $sti32) + (export "sti64" $sti64) + (export "stf32" $stf32) + (export "stf64" $stf64) + (func $sti32 (param $$0 i32) (param $$1 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $sti64 (param $$0 i32) (param $$1 i64) + (block $fake_return_waka123 + (block + (i64.store align=8 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $stf32 (param $$0 i32) (param $$1 f32) + (block $fake_return_waka123 + (block + (f32.store align=4 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $stf64 (param $$0 i32) (param $$1 f64) + (block $fake_return_waka123 + (block + (f64.store align=8 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/switch.wast b/test/dot_s/switch.wast new file mode 100644 index 000000000..29c46e0c4 --- /dev/null +++ b/test/dot_s/switch.wast @@ -0,0 +1,100 @@ +(module + (memory 0 4294967295) + (import $foo1 "env" "foo1") + (import $foo0 "env" "foo0") + (import $foo2 "env" "foo2") + (import $foo3 "env" "foo3") + (import $foo4 "env" "foo4") + (import $foo5 "env" "foo5") + (export "bar32" $bar32) + (export "bar64" $bar64) + (func $bar32 (param $$0 i32) + (block $fake_return_waka123 + (block + (block $BB0_8 + (br_if + (i32.gt_u + (get_local $$0) + (i32.const 23) + ) + $BB0_8 + ) + (block $BB0_7 + (block $BB0_6 + (block $BB0_5 + (block $BB0_4 + (block $BB0_3 + (block $BB0_2 + (tableswitch + (get_local $$0) + (table (case $BB0_3) (case $BB0_3) (case $BB0_3) (case $BB0_3) (case $BB0_3) (case $BB0_3) (case $BB0_3) (case $BB0_2) (case $BB0_2) (case $BB0_2) (case $BB0_2) (case $BB0_2) (case $BB0_2) (case $BB0_2) (case $BB0_2) (case $BB0_4) (case $BB0_4) (case $BB0_4) (case $BB0_4) (case $BB0_4) (case $BB0_4) (case $BB0_5) (case $BB0_6) (case $BB0_7)) (case $BB0_3) + ) + ) + (call_import $foo1) + (br $BB0_8) + ) + (call_import $foo0) + (br $BB0_8) + ) + (call_import $foo2) + (br $BB0_8) + ) + (call_import $foo3) + (br $BB0_8) + ) + (call_import $foo4) + (br $BB0_8) + ) + (call_import $foo5) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $bar64 (param $$0 i64) + (block $fake_return_waka123 + (block + (block $BB1_8 + (br_if + (i64.gt_u + (get_local $$0) + (i64.const 23) + ) + $BB1_8 + ) + (block $BB1_7 + (block $BB1_6 + (block $BB1_5 + (block $BB1_4 + (block $BB1_3 + (block $BB1_2 + (tableswitch + (i32.wrap/i64 + (get_local $$0) + ) + (table (case $BB1_3) (case $BB1_3) (case $BB1_3) (case $BB1_3) (case $BB1_3) (case $BB1_3) (case $BB1_3) (case $BB1_2) (case $BB1_2) (case $BB1_2) (case $BB1_2) (case $BB1_2) (case $BB1_2) (case $BB1_2) (case $BB1_2) (case $BB1_4) (case $BB1_4) (case $BB1_4) (case $BB1_4) (case $BB1_4) (case $BB1_4) (case $BB1_5) (case $BB1_6) (case $BB1_7)) (case $BB1_3) + ) + ) + (call_import $foo1) + (br $BB1_8) + ) + (call_import $foo0) + (br $BB1_8) + ) + (call_import $foo2) + (br $BB1_8) + ) + (call_import $foo3) + (br $BB1_8) + ) + (call_import $foo4) + (br $BB1_8) + ) + (call_import $foo5) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/symbolic-offset.wast b/test/dot_s/symbolic-offset.wast new file mode 100644 index 000000000..d28ceec85 --- /dev/null +++ b/test/dot_s/symbolic-offset.wast @@ -0,0 +1,16 @@ +(module + (memory 0 4294967295 (segment 2 "\01\00\00\00\00\00\00\00\00\00\00\00")) + (export "f" $f) + (func $f (param $$0 i32) (param $$1 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 offset=6 + (get_local $$0) + (get_local $$1) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/unreachable.wast b/test/dot_s/unreachable.wast new file mode 100644 index 000000000..1a51e8e09 --- /dev/null +++ b/test/dot_s/unreachable.wast @@ -0,0 +1,30 @@ +(module + (memory 0 4294967295) + (import $abort "env" "abort") + (export "f1" $f1) + (export "f2" $f2) + (export "f3" $f3) + (func $f1 (result i32) + (block + (call_import $abort) + (unreachable) + ) + ) + (func $f2 + (block $fake_return_waka123 + (block + (unreachable) + (br $fake_return_waka123) + ) + ) + ) + (func $f3 + (block $fake_return_waka123 + (block + (unreachable) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/unused-argument.wast b/test/dot_s/unused-argument.wast new file mode 100644 index 000000000..1f5418909 --- /dev/null +++ b/test/dot_s/unused-argument.wast @@ -0,0 +1,34 @@ +(module + (memory 0 4294967295) + (import $return_something "env" "return_something") + (export "unused_first" $unused_first) + (export "unused_second" $unused_second) + (export "call_something" $call_something) + (func $unused_first (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (get_local $$1) + ) + ) + ) + ) + (func $unused_second (param $$0 i32) (param $$1 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (get_local $$0) + ) + ) + ) + ) + (func $call_something + (block $fake_return_waka123 + (block + (call_import $return_something) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/varargs.wast b/test/dot_s/varargs.wast new file mode 100644 index 000000000..27e95ece7 --- /dev/null +++ b/test/dot_s/varargs.wast @@ -0,0 +1,160 @@ +(module + (memory 0 4294967295) + (import $callee "env" "callee") + (export "end" $end) + (export "copy" $copy) + (export "arg_i8" $arg_i8) + (export "arg_i32" $arg_i32) + (export "arg_i128" $arg_i128) + (export "caller_none" $caller_none) + (export "caller_some" $caller_some) + (func $end (param $$0 i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123) + ) + ) + ) + (func $copy (param $$0 i32) (param $$1 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 + (get_local $$0) + (i32.load align=4 + (get_local $$1) + ) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $arg_i8 (param $$0 i32) (result i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.load align=4 + (get_local $$0) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.add + (get_local $$1) + (i32.const 4) + ) + ) + (br $fake_return_waka123 + (i32.load align=4 + (get_local $$1) + ) + ) + ) + ) + ) + (func $arg_i32 (param $$0 i32) (result i32) + (local $$1 i32) + (block $fake_return_waka123 + (block + (set_local $$1 + (i32.and + (i32.add + (i32.load align=4 + (get_local $$0) + ) + (i32.const 3) + ) + (i32.const -4) + ) + ) + (i32.store align=4 + (get_local $$0) + (i32.add + (get_local $$1) + (i32.const 4) + ) + ) + (br $fake_return_waka123 + (i32.load align=4 + (get_local $$1) + ) + ) + ) + ) + ) + (func $arg_i128 (param $$0 i32) (param $$1 i32) + (local $$2 i32) + (local $$3 i32) + (local $$4 i32) + (local $$5 i64) + (block $fake_return_waka123 + (block + (set_local $$2 + (i32.and + (i32.add + (i32.load align=4 + (get_local $$1) + ) + (i32.const 7) + ) + (i32.const -8) + ) + ) + (set_local $$3 + (i32.const 8) + ) + (set_local $$4 + (i32.store align=4 + (get_local $$1) + (i32.add + (get_local $$2) + (get_local $$3) + ) + ) + ) + (set_local $$5 + (i64.load align=8 + (get_local $$2) + ) + ) + (i32.store align=4 + (get_local $$1) + (i32.add + (get_local $$2) + (i32.const 16) + ) + ) + (i64.store align=8 + (i32.add + (get_local $$0) + (get_local $$3) + ) + (i64.load align=8 + (get_local $$4) + ) + ) + (i64.store align=8 + (get_local $$0) + (get_local $$5) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $caller_none + (block $fake_return_waka123 + (block + (call_import $callee) + (br $fake_return_waka123) + ) + ) + ) + (func $caller_some + (block $fake_return_waka123 + (block + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file diff --git a/test/dot_s/vtable.wast b/test/dot_s/vtable.wast new file mode 100644 index 000000000..9337d790a --- /dev/null +++ b/test/dot_s/vtable.wast @@ -0,0 +1,107 @@ +(module + (memory 0 4294967295 (segment 16 "1A\00") (segment 32 "1B\00") (segment 48 "1C\00") (segment 64 "1D\00") (segment 68 "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (segment 88 "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (segment 108 "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (segment 128 "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (segment 150 "\00\00\00\00\10\00\00\00") (segment 159 "\00\00\00\00\00\00\00\00\96\00\00\00") (segment 171 "\00\00\00\00\00\00\00\00\96\00\00\00") (segment 183 "\00\00\00\00\00\00\00\00\9f\00\00\00") (segment 196 "\00\00\00\00")) + (import $_ZdlPv "env" "_ZdlPv") + (export "_ZN1A3fooEv" $_ZN1A3fooEv) + (export "_ZN1B3fooEv" $_ZN1B3fooEv) + (export "_ZN1C3fooEv" $_ZN1C3fooEv) + (export "_ZN1D3fooEv" $_ZN1D3fooEv) + (export "_ZN1AD0Ev" $_ZN1AD0Ev) + (export "_ZN1BD0Ev" $_ZN1BD0Ev) + (export "_ZN1CD0Ev" $_ZN1CD0Ev) + (export "_ZN1AD2Ev" $_ZN1AD2Ev) + (export "_ZN1DD0Ev" $_ZN1DD0Ev) + (func $_ZN1A3fooEv (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 offset=196 + (i32.const 0) + (i32.const 2) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $_ZN1B3fooEv (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 offset=196 + (i32.const 0) + (i32.const 4) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $_ZN1C3fooEv (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 offset=196 + (i32.const 0) + (i32.const 6) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $_ZN1D3fooEv (param $$0 i32) + (block $fake_return_waka123 + (block + (i32.store align=4 offset=196 + (i32.const 0) + (i32.const 8) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $_ZN1AD0Ev (param $$0 i32) + (block $fake_return_waka123 + (block + (call_import $_ZdlPv + (get_local $$0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $_ZN1BD0Ev (param $$0 i32) + (block $fake_return_waka123 + (block + (call_import $_ZdlPv + (get_local $$0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $_ZN1CD0Ev (param $$0 i32) + (block $fake_return_waka123 + (block + (call_import $_ZdlPv + (get_local $$0) + ) + (br $fake_return_waka123) + ) + ) + ) + (func $_ZN1AD2Ev (param $$0 i32) (result i32) + (block $fake_return_waka123 + (block + (br $fake_return_waka123 + (get_local $$0) + ) + ) + ) + ) + (func $_ZN1DD0Ev (param $$0 i32) + (block $fake_return_waka123 + (block + (call_import $_ZdlPv + (get_local $$0) + ) + (br $fake_return_waka123) + ) + ) + ) +) +;; METADATA: { "asmConsts": {} }
\ No newline at end of file |