summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-12-12 13:30:05 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-12-12 13:30:05 -0800
commit500c47b78571f6bcffba00ae2519782814c9d29e (patch)
treea86a2597290a4e91dd4a011ced56b7022dc0b02d
parent53bfa6cae963c62c40c1eac305ae94b6dea6e59c (diff)
downloadbinaryen-500c47b78571f6bcffba00ae2519782814c9d29e.tar.gz
binaryen-500c47b78571f6bcffba00ae2519782814c9d29e.tar.bz2
binaryen-500c47b78571f6bcffba00ae2519782814c9d29e.zip
finish escaping and add many more .s files
-rw-r--r--src/s2wasm.h1
-rw-r--r--src/wasm.h9
-rw-r--r--test/dot_s/basics.wast2
-rw-r--r--test/dot_s/exit.wast11
-rw-r--r--test/dot_s/f32.wast175
-rw-r--r--test/dot_s/f64.wast175
-rw-r--r--test/dot_s/fast-isel.wast21
-rw-r--r--test/dot_s/frem.wast27
-rw-r--r--test/dot_s/func.wast68
-rw-r--r--test/dot_s/global.wast28
-rw-r--r--test/dot_s/globl.wast10
-rw-r--r--test/dot_s/i32.wast214
-rw-r--r--test/dot_s/i64.wast214
-rw-r--r--test/dot_s/immediates.wast219
-rw-r--r--test/dot_s/import.wast25
-rw-r--r--test/dot_s/legalize.wast78
-rw-r--r--test/dot_s/load-ext.wast113
-rw-r--r--test/dot_s/load-store-i1.wast95
-rw-r--r--test/dot_s/load.wast58
-rw-r--r--test/dot_s/memory-addr32.wast20
-rw-r--r--test/dot_s/memory-addr64.wast20
-rw-r--r--test/dot_s/offset-folding.wast39
-rw-r--r--test/dot_s/permute.wast3
-rw-r--r--test/dot_s/phi.wast79
-rw-r--r--test/dot_s/reg-stackify.wast115
-rw-r--r--test/dot_s/return-int32.wast12
-rw-r--r--test/dot_s/return-void.wast10
-rw-r--r--test/dot_s/returned.wast29
-rw-r--r--test/dot_s/select.wast159
-rw-r--r--test/dot_s/store-results.wast87
-rw-r--r--test/dot_s/store-trunc.wast69
-rw-r--r--test/dot_s/store.wast58
-rw-r--r--test/dot_s/unreachable.wast25
-rw-r--r--test/dot_s/unused-argument.wast29
-rw-r--r--test/dot_s/varargs.wast144
35 files changed, 2438 insertions, 3 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h
index 6f209a436..85d9f6c9e 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -190,6 +190,7 @@ private:
case 'f': str.push_back('\f'); s += 2; continue;
case 'b': str.push_back('\b'); s += 2; continue;
case '\\': str.push_back('\\'); s += 2; continue;
+ case '"': str.push_back('"'); s += 2; continue;
default: {
if (isdigit(s[1])) {
int code = (s[1] - '0')*8*8 + (s[2] - '0')*8 + (s[3] - '0');
diff --git a/src/wasm.h b/src/wasm.h
index d53c4e629..3f3b7c271 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -1045,8 +1045,13 @@ public:
case '\f': o << "\\f"; break;
case '\b': o << "\\b"; break;
case '\\': o << "\\\\"; break;
- case 0: o << "\\0"; break;
- default: o << c; // TODO: escaping
+ default: {
+ if (c >= 32 && c < 127) {
+ o << c;
+ } else {
+ o << std::hex << '\\' << (c/16) << (c%16) << std::dec;
+ }
+ }
}
}
o << "\")";
diff --git a/test/dot_s/basics.wast b/test/dot_s/basics.wast
index c8e652cb4..12d5d4766 100644
--- a/test/dot_s/basics.wast
+++ b/test/dot_s/basics.wast
@@ -1,5 +1,5 @@
(module
- (memory 0 4294967295 (segment 16 "hello, world!\n\0"))
+ (memory 0 4294967295 (segment 16 "hello, world!\n\00"))
(func $main (param $$0 i32) (param $$1 i32) (result i32)
(block $fake_return_waka123
(block
diff --git a/test/dot_s/exit.wast b/test/dot_s/exit.wast
new file mode 100644
index 000000000..38770ac34
--- /dev/null
+++ b/test/dot_s/exit.wast
@@ -0,0 +1,11 @@
+(module
+ (memory 0 4294967295)
+ (func $main (result i32)
+ (local $$0 i32)
+ (block
+ (call $exit
+ (i32.const 0)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/f32.wast b/test/dot_s/f32.wast
new file mode 100644
index 000000000..93cb3a548
--- /dev/null
+++ b/test/dot_s/f32.wast
@@ -0,0 +1,175 @@
+(module
+ (memory 0 4294967295)
+ (func $fadd32 (param $$0 f32) (param $$1 f32) (result f32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f32.add
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fsub32 (param $$0 f32) (param $$1 f32) (result f32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f32.sub
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fmul32 (param $$0 f32) (param $$1 f32) (result f32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f32.mul
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fdiv32 (param $$0 f32) (param $$1 f32) (result f32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f32.div
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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 $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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
+ (f32.const 0)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fmax32 (param $$0 f32) (result f32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f32.max
+ (f32.const 0)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/f64.wast b/test/dot_s/f64.wast
new file mode 100644
index 000000000..b29ce79ef
--- /dev/null
+++ b/test/dot_s/f64.wast
@@ -0,0 +1,175 @@
+(module
+ (memory 0 4294967295)
+ (func $fadd64 (param $$0 f64) (param $$1 f64) (result f64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f64.add
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fsub64 (param $$0 f64) (param $$1 f64) (result f64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f64.sub
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fmul64 (param $$0 f64) (param $$1 f64) (result f64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f64.mul
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fdiv64 (param $$0 f64) (param $$1 f64) (result f64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f64.div
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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 $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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
+ (f64.const 0)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $fmax64 (param $$0 f64) (result f64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (f64.max
+ (f64.const 0)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/fast-isel.wast b/test/dot_s/fast-isel.wast
new file mode 100644
index 000000000..e8b14ae0c
--- /dev/null
+++ b/test/dot_s/fast-isel.wast
@@ -0,0 +1,21 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/frem.wast b/test/dot_s/frem.wast
new file mode 100644
index 000000000..7b4918bbc
--- /dev/null
+++ b/test/dot_s/frem.wast
@@ -0,0 +1,27 @@
+(module
+ (memory 0 4294967295)
+ (func $frem32 (param $$0 f32) (param $$1 f32) (result f32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (call $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 $fmod
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/func.wast b/test/dot_s/func.wast
new file mode 100644
index 000000000..36d29dee4
--- /dev/null
+++ b/test/dot_s/func.wast
@@ -0,0 +1,68 @@
+(module
+ (memory 0 4294967295)
+ (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 $$1)
+ (get_local $$0)
+ )
+ (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)
+ )
+ )
+)
diff --git a/test/dot_s/global.wast b/test/dot_s/global.wast
new file mode 100644
index 000000000..08aaee176
--- /dev/null
+++ b/test/dot_s/global.wast
@@ -0,0 +1,28 @@
+(module
+ (memory 0 4294967295 (segment 2 "9\05\00\00") (segment 6 "\00\00\00\00") (segment 10 "\01\00\00\00") (segment 14 "*\00\00\00") (segment 18 "\0ffffffff\0ffffffff\0ffffffff\0ffffffff") (segment 24 "\00\00\00\00\00\00\00\00") (segment 33 "\00\00\00\00\00\00\00\00") (segment 42 "\0ffffffff\0ffffffff\0ffffffff\0ffffffff\0ffffffff\0ffffffff\0ffffffff\0ffffffff") (segment 50 "\00\00\00\00") (segment 54 "\00\00\00\fffffff80") (segment 58 "\00\00\00@") (segment 63 "\00\00\00\00\00\00\00\00") (segment 72 "\00\00\00\00\00\00\00\00") (segment 81 "\00\00\00\00\00\00\00\00"))
+ (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 $memcpy
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$0)
+ )
+ (br $fake_return_waka123
+ (get_local $$0)
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/globl.wast b/test/dot_s/globl.wast
new file mode 100644
index 000000000..b8b72a722
--- /dev/null
+++ b/test/dot_s/globl.wast
@@ -0,0 +1,10 @@
+(module
+ (memory 0 4294967295)
+ (func $foo
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/i32.wast b/test/dot_s/i32.wast
new file mode 100644
index 000000000..9873a7080
--- /dev/null
+++ b/test/dot_s/i32.wast
@@ -0,0 +1,214 @@
+(module
+ (memory 0 4294967295)
+ (func $add32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.add
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $sub32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.sub
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $mul32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.mul
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $sdiv32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.div_s
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $udiv32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.div_u
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $srem32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.rem_s
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $urem32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.rem_u
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $and32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.and
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $or32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.or
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $xor32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.xor
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $shl32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.shl
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $shr32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.shr_u
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $sar32 (param $$0 i32) (param $$1 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.shr_s
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/i64.wast b/test/dot_s/i64.wast
new file mode 100644
index 000000000..03687f5d3
--- /dev/null
+++ b/test/dot_s/i64.wast
@@ -0,0 +1,214 @@
+(module
+ (memory 0 4294967295)
+ (func $add64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.add
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $sub64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.sub
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $mul64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.mul
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $sdiv64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.div_s
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $udiv64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.div_u
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $srem64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.rem_s
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $urem64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.rem_u
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $and64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.and
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $or64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.or
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $xor64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.xor
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $shl64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.shl
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $shr64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.shr_u
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $sar64 (param $$0 i64) (param $$1 i64) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.shr_s
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/immediates.wast b/test/dot_s/immediates.wast
new file mode 100644
index 000000000..b9e7bb4aa
--- /dev/null
+++ b/test/dot_s/immediates.wast
@@ -0,0 +1,219 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/import.wast b/test/dot_s/import.wast
new file mode 100644
index 000000000..bf8078c25
--- /dev/null
+++ b/test/dot_s/import.wast
@@ -0,0 +1,25 @@
+(module
+ (memory 0 4294967295)
+ (func $f (param $$0 i32) (param $$1 f32) (param $$2 i64) (param $$3 i64) (param $$4 i32)
+ (block $fake_return_waka123
+ (block
+ (call $printi
+ (get_local $$0)
+ )
+ (call $printf
+ (get_local $$1)
+ )
+ (call $printv)
+ (call $split_arg
+ (get_local $$3)
+ (get_local $$2)
+ )
+ (call $expanded_arg
+ (get_local $$4)
+ )
+ (call $lowered_result)
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/legalize.wast b/test/dot_s/legalize.wast
new file mode 100644
index 000000000..5289818d3
--- /dev/null
+++ b/test/dot_s/legalize.wast
@@ -0,0 +1,78 @@
+(module
+ (memory 0 4294967295)
+ (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
+ (i32.and
+ (i32.const 7)
+ (get_local $$1)
+ )
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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
+ (i64.and
+ (i64.const 9007199254740991)
+ (get_local $$1)
+ )
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (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
+ (get_local $$1)
+ (i64.shl
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ )
+ (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)
+ )
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/load-ext.wast b/test/dot_s/load-ext.wast
new file mode 100644
index 000000000..1e13c918f
--- /dev/null
+++ b/test/dot_s/load-ext.wast
@@ -0,0 +1,113 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/load-store-i1.wast b/test/dot_s/load-store-i1.wast
new file mode 100644
index 000000000..4acb15499
--- /dev/null
+++ b/test/dot_s/load-store-i1.wast
@@ -0,0 +1,95 @@
+(module
+ (memory 0 4294967295)
+ (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
+ (get_local $$1)
+ (i32.shl
+ (get_local $$1)
+ (i32.load align=8
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (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
+ (get_local $$1)
+ (i64.shl
+ (get_local $$1)
+ (i64.load align=8
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $store_i32_i1 (param $$0 i32) (param $$1 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=8
+ (get_local $$0)
+ (i32.and
+ (i32.const 1)
+ (get_local $$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
+ (i64.const 1)
+ (get_local $$1)
+ )
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/load.wast b/test/dot_s/load.wast
new file mode 100644
index 000000000..5a29cd97c
--- /dev/null
+++ b/test/dot_s/load.wast
@@ -0,0 +1,58 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+ )
+ )
+ (func $ldoff (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/memory-addr32.wast b/test/dot_s/memory-addr32.wast
new file mode 100644
index 000000000..0ef5b95cc
--- /dev/null
+++ b/test/dot_s/memory-addr32.wast
@@ -0,0 +1,20 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/memory-addr64.wast b/test/dot_s/memory-addr64.wast
new file mode 100644
index 000000000..70d3a100b
--- /dev/null
+++ b/test/dot_s/memory-addr64.wast
@@ -0,0 +1,20 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/offset-folding.wast b/test/dot_s/offset-folding.wast
new file mode 100644
index 000000000..dca509c4a
--- /dev/null
+++ b/test/dot_s/offset-folding.wast
@@ -0,0 +1,39 @@
+(module
+ (memory 0 4294967295 (segment 4 "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"))
+ (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)
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/permute.wast b/test/dot_s/permute.wast
new file mode 100644
index 000000000..0a728ac2d
--- /dev/null
+++ b/test/dot_s/permute.wast
@@ -0,0 +1,3 @@
+(module
+ (memory 0 4294967295 (segment 4 "hE?\fffffff9fffffffds\0e7\fffffffefffffffb[g\fffffff9ffffffff\fffffffafffffff55it\fffffffdfffffff4k\0b\fffffffffffffff2\ffffffffffffffff\fffffffcfffffffcld\fffffffe0\0fffffffd\fffffff9fffffffc\fffffffafffffffe\fffffff9fffffff6&~\fffffffefffffff8\fffffffafffffff4\fffffff9fffffff9+\fffffffdfffffff8\fffffffbfffffff4\fffffffdfffffff2\0fffffff2\0fffffffb\12\1cej\fffffffefffffff99\fffffffcfffffff7\fffffffcfffffff3W\fffffffdfffffff6w\fffffffbffffffff\fffffffbfffffffe\fffffffdfffffffaM>\fffffffafffffff2ub\fffffffafffffff6\fffffff9fffffff4\fffffffcfffffff6\fffffffb0N\fffffffffffffffc;q\11\0fffffff7\fffffffcffffffff\fffffffffffffff31\fffffffffffffff6\fffffffbfffffff7\fffffff90\0fffffffc\03\fffffffffffffff4\fffffffbfffffffa\fffffffefffffff7\fffffffdfffffffc- \15\fffffff9fffffff3DH\fffffff80r\0fffffffa\01X\fffffffffffffffb:_\00A\fffffffdfffffffd\fffffffffffffff9o`n\fffffffbfffffffc(\fffffffbfffffffd\fffffffcfffffffa0\fffffffefffffffcyS#\0fffffff4$"\fffffff9fffffff2\7f}\fffffff9fffffffe\0fffffff6\fffffffafffffff3L'\fffffffcfffffffb\fffffffcfffffffdZ\fffffffffffffffd4\18\0fffffff3\fffffffc0\fffffffdffffffff\0ffffffff\fffffffbfffffff3\0fffffff8\07\05\fffffffafffffffc\fffffffefffffff3\0f\fffffffa0\06m%\\\0fffffff9^B<\fffffffffffffff7\fffffffcfffffff1\17\fffffffafffffff8]\f\fffffffefffffffd\fffffffdfffffff5\0fffffff5p\fffffffffffffff5\0fffffffezJ\fffffffbfffffffb,F\fffffffbfffffff5@\bR\fffffff9fffffff5!\fffffffcfffffff8\1a\fffffffdfffffffe\fffffffefffffff5\04\nI\fffffffbfffffff6\fffffffefffffff1\fffffffaffffffff\fffffff9fffffffa\fffffffdfffffff9\fffffffbfffffff9|\fffffffafffffff7\fffffffafffffffaG\fffffffcfffffffe8Y\fffffff9fffffffb\fffffffdfffffff1\1b\fffffffefffffff4\fffffffffffffffa\fffffffcfffffff9\19\14\fffffffafffffffb\fffffffafffffff163\fffffffd0\1d\fffffffefffffff2\fffffffeffffffff=C\1f\rc\fffffffffffffff1\fffffffdfffffff7QUv\02\fffffffcfffffff5aK\fffffffcfffffff4\tV\fffffffdfffffff3x\fffffffffffffff8\fffffffbfffffff1\1e\fffffff9fffffff1\fffffffefffffffe/{\fffffffefffffffa\fffffffefffffff6Pf\10T\ffffffff0)\fffffff9fffffff8\16\fffffffffffffffe\fffffffbfffffff8\fffffffafffffffd\0fffffff1\fffffffdfffffffbO*\fffffffcfffffff2\fffffffafffffff9\132\fffffff9fffffff7.\fffffffbfffffff2"))
+)
diff --git a/test/dot_s/phi.wast b/test/dot_s/phi.wast
new file mode 100644
index 000000000..9ec40d48c
--- /dev/null
+++ b/test/dot_s/phi.wast
@@ -0,0 +1,79 @@
+(module
+ (memory 0 4294967295)
+ (func $test0 (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (block $BB0_2
+ (br_if
+ (i32.gt_s
+ (i32.const -1)
+ (get_local $$0)
+ )
+ $BB0_2
+ )
+ (set_local $$0
+ (i32.div_s
+ (i32.const 3)
+ (get_local $$0)
+ )
+ )
+ )
+ (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 $$2)
+ (get_local $$5)
+ )
+ )
+ (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 $$0)
+ (get_local $$5)
+ )
+ $BB1_1
+ )
+ )
+ )
+ (br $fake_return_waka123
+ (get_local $$4)
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/reg-stackify.wast b/test/dot_s/reg-stackify.wast
new file mode 100644
index 000000000..c55af3d38
--- /dev/null
+++ b/test/dot_s/reg-stackify.wast
@@ -0,0 +1,115 @@
+(module
+ (memory 0 4294967295)
+ (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
+ (get_local $$4)
+ (i32.xor
+ (i32.xor
+ (i32.lt_s
+ (get_local $$4)
+ (get_local $$0)
+ )
+ (i32.lt_s
+ (get_local $$5)
+ (get_local $$1)
+ )
+ )
+ (i32.xor
+ (i32.lt_s
+ (get_local $$4)
+ (get_local $$2)
+ )
+ (i32.lt_s
+ (get_local $$5)
+ (get_local $$3)
+ )
+ )
+ )
+ )
+ $BB4_2
+ )
+ (br $fake_return_waka123
+ (i32.const 0)
+ )
+ )
+ (br $fake_return_waka123
+ (get_local $$4)
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/return-int32.wast b/test/dot_s/return-int32.wast
new file mode 100644
index 000000000..e8a0c682a
--- /dev/null
+++ b/test/dot_s/return-int32.wast
@@ -0,0 +1,12 @@
+(module
+ (memory 0 4294967295)
+ (func $return_i32 (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (get_local $$0)
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/return-void.wast b/test/dot_s/return-void.wast
new file mode 100644
index 000000000..4d319d050
--- /dev/null
+++ b/test/dot_s/return-void.wast
@@ -0,0 +1,10 @@
+(module
+ (memory 0 4294967295)
+ (func $return_void
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/returned.wast b/test/dot_s/returned.wast
new file mode 100644
index 000000000..477d2588d
--- /dev/null
+++ b/test/dot_s/returned.wast
@@ -0,0 +1,29 @@
+(module
+ (memory 0 4294967295)
+ (func $_Z3foov (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (call $_ZN5AppleC1Ev
+ (call $_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 $memcpy
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/select.wast b/test/dot_s/select.wast
new file mode 100644
index 000000000..2ff9b12ba
--- /dev/null
+++ b/test/dot_s/select.wast
@@ -0,0 +1,159 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/test/dot_s/store-results.wast b/test/dot_s/store-results.wast
new file mode 100644
index 000000000..d4399a8d1
--- /dev/null
+++ b/test/dot_s/store-results.wast
@@ -0,0 +1,87 @@
+(module
+ (memory 0 4294967295 (segment 2 "\00\00\00\00\00\00\00\00\00\00\00\00"))
+ (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
+ (i32.store align=4
+ (i32.const 0)
+ (get_local $$0)
+ )
+ (set_local $$1
+ (i32.add
+ (i32.const 1)
+ (get_local $$1)
+ )
+ )
+ (br_if
+ (i32.ne
+ (i32.const 256)
+ (get_local $$1)
+ )
+ $BB1_1
+ )
+ )
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $bar
+ (local $$0 i32)
+ (local $$1 f32)
+ (block $fake_return_waka123
+ (block
+ (set_local $$0
+ (i32.const 0)
+ )
+ (set_local $$1
+ (f32.const 0)
+ )
+ (loop $BB2_2 $BB2_1
+ (block
+ (i32.store align=4
+ (get_local $$0)
+ (i32.const 0)
+ )
+ (set_local $$1
+ (f32.add
+ (f32.const 1)
+ (get_local $$1)
+ )
+ )
+ (br_if
+ (f32.ne
+ (f32.const 256)
+ (get_local $$1)
+ )
+ $BB2_1
+ )
+ )
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/store-trunc.wast b/test/dot_s/store-trunc.wast
new file mode 100644
index 000000000..75dd37636
--- /dev/null
+++ b/test/dot_s/store-trunc.wast
@@ -0,0 +1,69 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+ (func $trunc_i8_i32_off (param $$0 i32) (param $$1 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=8 offset=1234
+ (get_local $$0)
+ (get_local $$1)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/store.wast b/test/dot_s/store.wast
new file mode 100644
index 000000000..26dc8d89c
--- /dev/null
+++ b/test/dot_s/store.wast
@@ -0,0 +1,58 @@
+(module
+ (memory 0 4294967295)
+ (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)
+ )
+ )
+ )
+ (func $stoff (param $$0 i32) (param $$1 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=4 offset=1
+ (get_local $$0)
+ (get_local $$1)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/unreachable.wast b/test/dot_s/unreachable.wast
new file mode 100644
index 000000000..eddc4f23c
--- /dev/null
+++ b/test/dot_s/unreachable.wast
@@ -0,0 +1,25 @@
+(module
+ (memory 0 4294967295)
+ (func $f1 (result i32)
+ (block
+ (call $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)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/unused-argument.wast b/test/dot_s/unused-argument.wast
new file mode 100644
index 000000000..7d4f111ad
--- /dev/null
+++ b/test/dot_s/unused-argument.wast
@@ -0,0 +1,29 @@
+(module
+ (memory 0 4294967295)
+ (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 $return_something)
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
diff --git a/test/dot_s/varargs.wast b/test/dot_s/varargs.wast
new file mode 100644
index 000000000..d8536a210
--- /dev/null
+++ b/test/dot_s/varargs.wast
@@ -0,0 +1,144 @@
+(module
+ (memory 0 4294967295)
+ (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
+ (i32.const 4)
+ (get_local $$1)
+ )
+ )
+ (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
+ (i32.const 4)
+ (get_local $$1)
+ )
+ )
+ (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 $$3)
+ (get_local $$2)
+ )
+ )
+ )
+ (set_local $$5
+ (i64.load align=8
+ (get_local $$2)
+ )
+ )
+ (i32.store align=4
+ (get_local $$1)
+ (i32.add
+ (i32.const 16)
+ (get_local $$2)
+ )
+ )
+ (i64.store align=8
+ (i64.load align=8
+ (get_local $$4)
+ )
+ (i32.add
+ (get_local $$3)
+ (get_local $$0)
+ )
+ )
+ (i64.store align=8
+ (get_local $$0)
+ (get_local $$5)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $caller_none
+ (block $fake_return_waka123
+ (block
+ (call $callee)
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)