diff options
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) + ) + ) + ) +) |