summaryrefslogtreecommitdiff
path: root/test/dot_s
diff options
context:
space:
mode:
Diffstat (limited to 'test/dot_s')
-rw-r--r--test/dot_s/alternate-lcomm.wast4
-rw-r--r--test/dot_s/asm_const.s23
-rw-r--r--test/dot_s/asm_const.wast18
-rw-r--r--test/dot_s/basics.s61
-rw-r--r--test/dot_s/basics.wast95
-rw-r--r--test/dot_s/call.wast137
-rw-r--r--test/dot_s/cfg-stackify.wast1153
-rw-r--r--test/dot_s/comparisons_f32.wast270
-rw-r--r--test/dot_s/comparisons_f64.wast270
-rw-r--r--test/dot_s/comparisons_i32.wast134
-rw-r--r--test/dot_s/comparisons_i64.wast134
-rw-r--r--test/dot_s/conv.wast319
-rw-r--r--test/dot_s/copysign-casts.wast34
-rw-r--r--test/dot_s/cpus.wast14
-rw-r--r--test/dot_s/data-offset-folding.wast4
-rw-r--r--test/dot_s/dead-vreg.wast114
-rw-r--r--test/dot_s/exit.wast14
-rw-r--r--test/dot_s/f32.wast206
-rw-r--r--test/dot_s/f64.wast206
-rw-r--r--test/dot_s/fast-isel.wast24
-rw-r--r--test/dot_s/frem.wast32
-rw-r--r--test/dot_s/func.wast75
-rw-r--r--test/dot_s/global.wast32
-rw-r--r--test/dot_s/globl.wast12
-rw-r--r--test/dot_s/i32.wast233
-rw-r--r--test/dot_s/i64.wast233
-rw-r--r--test/dot_s/ident.wast4
-rw-r--r--test/dot_s/immediates.wast244
-rw-r--r--test/dot_s/import.wast33
-rw-r--r--test/dot_s/lcomm-in-text-segment.wast4
-rw-r--r--test/dot_s/legalize.wast3975
-rw-r--r--test/dot_s/load-ext.wast124
-rw-r--r--test/dot_s/load-store-i1.wast102
-rw-r--r--test/dot_s/load.wast52
-rw-r--r--test/dot_s/memops.s94
-rw-r--r--test/dot_s/memops.wast222
-rw-r--r--test/dot_s/memory-addr32.wast23
-rw-r--r--test/dot_s/memory-addr64.wast23
-rw-r--r--test/dot_s/minimal.s12
-rw-r--r--test/dot_s/minimal.wast14
-rw-r--r--test/dot_s/offset-folding.wast44
-rw-r--r--test/dot_s/offset.wast204
-rw-r--r--test/dot_s/permute.wast4
-rw-r--r--test/dot_s/phi.wast82
-rw-r--r--test/dot_s/reg-stackify.wast121
-rw-r--r--test/dot_s/relocation.wast17
-rw-r--r--test/dot_s/return-int32.wast14
-rw-r--r--test/dot_s/return-void.wast12
-rw-r--r--test/dot_s/returned.wast35
-rw-r--r--test/dot_s/select.wast172
-rw-r--r--test/dot_s/signext-zeroext.wast80
-rw-r--r--test/dot_s/store-results.wast91
-rw-r--r--test/dot_s/store-trunc.wast64
-rw-r--r--test/dot_s/store.wast52
-rw-r--r--test/dot_s/switch.wast100
-rw-r--r--test/dot_s/symbolic-offset.wast16
-rw-r--r--test/dot_s/unreachable.wast30
-rw-r--r--test/dot_s/unused-argument.wast34
-rw-r--r--test/dot_s/varargs.wast160
-rw-r--r--test/dot_s/vtable.wast107
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