diff options
author | Heejin Ahn <aheejin@gmail.com> | 2023-12-13 10:53:50 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-13 10:53:50 -0800 |
commit | 0024c8bdd28f701d57e49e65d38b28aad0594299 (patch) | |
tree | 19b9eb323836843d147dedf40495042edcf9404f /test/lit/basic/unit.wat | |
parent | 9e636855b582d1499a87fb73f55d85102ce95a58 (diff) | |
download | binaryen-0024c8bdd28f701d57e49e65d38b28aad0594299.tar.gz binaryen-0024c8bdd28f701d57e49e65d38b28aad0594299.tar.bz2 binaryen-0024c8bdd28f701d57e49e65d38b28aad0594299.zip |
[test] Port tests in test/ to test/lit/basic/ (#6160)
This ports all tests from `test/` to `test/lit/basic/`. The set of
commands and `CHECK` lines used are the same as the ones in #6159. Now
we use `lit` to test these, this also deletes all `.wast`,
`.wast.from-wast`, `.wast.fromBinary`, and
`.wast.fromBinary.noDebugInfo` files from `test/` and all related test
routines from the python scripts.
All `CHECK` lines are generated by `update_lit_checks.py --all-items`.
This also deletes these three multi-memory tests in `test/lit/`, because
they seem to contain the same code with the ones in `test/`, which have
been ported to `test/lit/basic/` along with other tests.
- `test/lit/multi-memories-atomics64.wast`
- `test/lit/multi-memories-basics.wast`
- `test/lit/multi-memories-simd.wast`
This also adds newlines between `(func`s in case there are none to make
`CHECK` lines easy to view, and removes some extra existing newlines
here and there.
Diffstat (limited to 'test/lit/basic/unit.wat')
-rw-r--r-- | test/lit/basic/unit.wat | 2293 |
1 files changed, 2293 insertions, 0 deletions
diff --git a/test/lit/basic/unit.wat b/test/lit/basic/unit.wat new file mode 100644 index 000000000..8392a2269 --- /dev/null +++ b/test/lit/basic/unit.wat @@ -0,0 +1,2293 @@ +;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. + +;; RUN: wasm-opt %s -all -o %t.text.wat -g -S +;; RUN: wasm-as %s -all -g -o %t.wasm +;; RUN: wasm-dis %t.wasm -all -o %t.bin.wat +;; RUN: wasm-as %s -all -o %t.nodebug.wasm +;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wat +;; RUN: cat %t.text.wat | filecheck %s --check-prefix=CHECK-TEXT +;; RUN: cat %t.bin.wat | filecheck %s --check-prefix=CHECK-BIN +;; RUN: cat %t.bin.nodebug.wat | filecheck %s --check-prefix=CHECK-BIN-NODEBUG + +(module + ;; CHECK-TEXT: (type $5 (func (result i32))) + + ;; CHECK-TEXT: (type $FUNCSIG$v (func)) + + ;; CHECK-TEXT: (type $FUNCSIG$vf (func (param f32))) + ;; CHECK-BIN: (type $5 (func (result i32))) + + ;; CHECK-BIN: (type $FUNCSIG$v (func)) + + ;; CHECK-BIN: (type $FUNCSIG$vf (func (param f32))) + (type $FUNCSIG$vf (func (param f32))) + (type $FUNCSIG$v (func)) + ;; CHECK-TEXT: (type $4 (func (result f64))) + + ;; CHECK-TEXT: (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) + + ;; CHECK-TEXT: (type $FUNCSIG$id (func (param f64) (result i32))) + ;; CHECK-BIN: (type $4 (func (result f64))) + + ;; CHECK-BIN: (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) + + ;; CHECK-BIN: (type $FUNCSIG$id (func (param f64) (result i32))) + (type $FUNCSIG$id (func (param f64) (result i32))) + (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) + ;; CHECK-BIN-NODEBUG: (type $0 (func (result i32))) + + ;; CHECK-BIN-NODEBUG: (type $1 (func)) + + ;; CHECK-BIN-NODEBUG: (type $2 (func (param f32))) + + ;; CHECK-BIN-NODEBUG: (type $3 (func (result f64))) + + ;; CHECK-BIN-NODEBUG: (type $4 (func (param f64 f64) (result f64))) + (type $4 (func (result f64))) + ;; CHECK-BIN-NODEBUG: (type $5 (func (param f64) (result i32))) + (type $5 (func (result i32))) + ;; CHECK-TEXT: (type $6 (func (param i32) (result i32))) + ;; CHECK-BIN: (type $6 (func (param i32) (result i32))) + ;; CHECK-BIN-NODEBUG: (type $6 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + ;; CHECK-TEXT: (type $7 (func (param f64) (result f64))) + ;; CHECK-BIN: (type $7 (func (param f64) (result f64))) + ;; CHECK-BIN-NODEBUG: (type $7 (func (param f64) (result f64))) + (type $7 (func (param f64) (result f64))) + ;; CHECK-TEXT: (type $8 (func (result i64))) + ;; CHECK-BIN: (type $8 (func (result i64))) + ;; CHECK-BIN-NODEBUG: (type $8 (func (result i64))) + (type $8 (func (result i64))) + ;; CHECK-TEXT: (type $9 (func (param i32 i64))) + ;; CHECK-BIN: (type $9 (func (param i32 i64))) + ;; CHECK-BIN-NODEBUG: (type $9 (func (param i32 i64))) + (type $9 (func (param i32 i64))) + ;; CHECK-TEXT: (import "env" "_emscripten_asm_const_vi" (func $_emscripten_asm_const_vi (type $FUNCSIG$v))) + ;; CHECK-BIN: (import "env" "_emscripten_asm_const_vi" (func $_emscripten_asm_const_vi (type $FUNCSIG$v))) + ;; CHECK-BIN-NODEBUG: (import "env" "_emscripten_asm_const_vi" (func $fimport$0 (type $1))) + (import "env" "_emscripten_asm_const_vi" (func $_emscripten_asm_const_vi)) + ;; CHECK-TEXT: (import "asm2wasm" "f64-to-int" (func $f64-to-int (type $FUNCSIG$id) (param f64) (result i32))) + ;; CHECK-BIN: (import "asm2wasm" "f64-to-int" (func $f64-to-int (type $FUNCSIG$id) (param f64) (result i32))) + ;; CHECK-BIN-NODEBUG: (import "asm2wasm" "f64-to-int" (func $fimport$1 (type $5) (param f64) (result i32))) + (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) + ;; CHECK-TEXT: (import "asm2wasm" "f64-rem" (func $f64-rem (type $FUNCSIG$ddd) (param f64 f64) (result f64))) + ;; CHECK-BIN: (import "asm2wasm" "f64-rem" (func $f64-rem (type $FUNCSIG$ddd) (param f64 f64) (result f64))) + ;; CHECK-BIN-NODEBUG: (import "asm2wasm" "f64-rem" (func $fimport$2 (type $4) (param f64 f64) (result f64))) + (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64))) + (table 10 funcref) + (elem (i32.const 0) $z $big_negative $z $z $w $w $importedDoubles $w $z $cneg) + ;; CHECK-TEXT: (memory $0 4096 4096) + ;; CHECK-BIN: (memory $0 4096 4096) + ;; CHECK-BIN-NODEBUG: (memory $0 4096 4096) + (memory $0 4096 4096) + (data (i32.const 1026) "\14\00") + ;; CHECK-TEXT: (data $0 (i32.const 1026) "\14\00") + + ;; CHECK-TEXT: (table $0 10 funcref) + + ;; CHECK-TEXT: (elem $0 (i32.const 0) $z $big_negative $z $z $w $w $importedDoubles $w $z $cneg) + + ;; CHECK-TEXT: (export "big_negative" (func $big_negative)) + ;; CHECK-BIN: (data $0 (i32.const 1026) "\14\00") + + ;; CHECK-BIN: (table $0 10 funcref) + + ;; CHECK-BIN: (elem $0 (i32.const 0) $z $big_negative $z $z $w $w $importedDoubles $w $z $cneg) + + ;; CHECK-BIN: (export "big_negative" (func $big_negative)) + ;; CHECK-BIN-NODEBUG: (data $0 (i32.const 1026) "\14\00") + + ;; CHECK-BIN-NODEBUG: (table $0 10 funcref) + + ;; CHECK-BIN-NODEBUG: (elem $0 (i32.const 0) $17 $0 $17 $17 $18 $18 $1 $18 $17 $15) + + ;; CHECK-BIN-NODEBUG: (export "big_negative" (func $0)) + (export "big_negative" (func $big_negative)) + ;; CHECK-TEXT: (func $big_negative (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (local $temp f64) + ;; CHECK-TEXT-NEXT: (block $block0 + ;; CHECK-TEXT-NEXT: (local.set $temp + ;; CHECK-TEXT-NEXT: (f64.const -2147483648) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $temp + ;; CHECK-TEXT-NEXT: (f64.const -2147483648) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $temp + ;; CHECK-TEXT-NEXT: (f64.const -21474836480) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $temp + ;; CHECK-TEXT-NEXT: (f64.const 0.039625) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $temp + ;; CHECK-TEXT-NEXT: (f64.const -0.039625) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $big_negative (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (local $temp f64) + ;; CHECK-BIN-NEXT: (local.set $temp + ;; CHECK-BIN-NEXT: (f64.const -2147483648) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $temp + ;; CHECK-BIN-NEXT: (f64.const -2147483648) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $temp + ;; CHECK-BIN-NEXT: (f64.const -21474836480) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $temp + ;; CHECK-BIN-NEXT: (f64.const 0.039625) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $temp + ;; CHECK-BIN-NEXT: (f64.const -0.039625) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $big_negative (type $FUNCSIG$v) + (local $temp f64) + (block $block0 + (local.set $temp + (f64.const -2147483648) + ) + (local.set $temp + (f64.const -2147483648) + ) + (local.set $temp + (f64.const -21474836480) + ) + (local.set $temp + (f64.const 0.039625) + ) + (local.set $temp + (f64.const -0.039625) + ) + ) + ) + ;; CHECK-TEXT: (func $importedDoubles (type $4) (result f64) + ;; CHECK-TEXT-NEXT: (local $temp f64) + ;; CHECK-TEXT-NEXT: (block $topmost (result f64) + ;; CHECK-TEXT-NEXT: (local.set $temp + ;; CHECK-TEXT-NEXT: (f64.add + ;; CHECK-TEXT-NEXT: (f64.add + ;; CHECK-TEXT-NEXT: (f64.add + ;; CHECK-TEXT-NEXT: (f64.load + ;; CHECK-TEXT-NEXT: (i32.const 8) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (f64.load + ;; CHECK-TEXT-NEXT: (i32.const 16) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (f64.neg + ;; CHECK-TEXT-NEXT: (f64.load + ;; CHECK-TEXT-NEXT: (i32.const 16) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (f64.neg + ;; CHECK-TEXT-NEXT: (f64.load + ;; CHECK-TEXT-NEXT: (i32.const 8) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.gt_s + ;; CHECK-TEXT-NEXT: (i32.load + ;; CHECK-TEXT-NEXT: (i32.const 24) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const -3.4) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (f64.gt + ;; CHECK-TEXT-NEXT: (f64.load + ;; CHECK-TEXT-NEXT: (i32.const 32) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (f64.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const 5.6) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (f64.const 1.2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $importedDoubles (type $4) (result f64) + ;; CHECK-BIN-NEXT: (local $temp f64) + ;; CHECK-BIN-NEXT: (block $label$1 (result f64) + ;; CHECK-BIN-NEXT: (local.set $temp + ;; CHECK-BIN-NEXT: (f64.add + ;; CHECK-BIN-NEXT: (f64.add + ;; CHECK-BIN-NEXT: (f64.add + ;; CHECK-BIN-NEXT: (f64.load + ;; CHECK-BIN-NEXT: (i32.const 8) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (f64.load + ;; CHECK-BIN-NEXT: (i32.const 16) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (f64.neg + ;; CHECK-BIN-NEXT: (f64.load + ;; CHECK-BIN-NEXT: (i32.const 16) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (f64.neg + ;; CHECK-BIN-NEXT: (f64.load + ;; CHECK-BIN-NEXT: (i32.const 8) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (i32.gt_s + ;; CHECK-BIN-NEXT: (i32.load + ;; CHECK-BIN-NEXT: (i32.const 24) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const -3.4) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (f64.gt + ;; CHECK-BIN-NEXT: (f64.load + ;; CHECK-BIN-NEXT: (i32.const 32) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (f64.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const 5.6) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (f64.const 1.2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $importedDoubles (type $4) (result f64) + (local $temp f64) + (block $topmost (result f64) + (local.set $temp + (f64.add + (f64.add + (f64.add + (f64.load + (i32.const 8) + ) + (f64.load + (i32.const 16) + ) + ) + (f64.neg + (f64.load + (i32.const 16) + ) + ) + ) + (f64.neg + (f64.load + (i32.const 8) + ) + ) + ) + ) + (if + (i32.gt_s + (i32.load + (i32.const 24) + ) + (i32.const 0) + ) + (br $topmost + (f64.const -3.4) + ) + ) + (if + (f64.gt + (f64.load + (i32.const 32) + ) + (f64.const 0) + ) + (br $topmost + (f64.const 5.6) + ) + ) + (f64.const 1.2) + ) + ) + ;; CHECK-TEXT: (func $doubleCompares (type $FUNCSIG$ddd) (param $x f64) (param $y f64) (result f64) + ;; CHECK-TEXT-NEXT: (local $t f64) + ;; CHECK-TEXT-NEXT: (local $Int f64) + ;; CHECK-TEXT-NEXT: (local $Double i32) + ;; CHECK-TEXT-NEXT: (block $topmost (result f64) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (f64.gt + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (f64.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const 1.2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (f64.gt + ;; CHECK-TEXT-NEXT: (local.get $Int) + ;; CHECK-TEXT-NEXT: (f64.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const -3.4) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.gt_s + ;; CHECK-TEXT-NEXT: (local.get $Double) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (f64.const 5.6) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (f64.lt + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (local.get $y) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.get $y) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $doubleCompares (type $FUNCSIG$ddd) (param $x f64) (param $y f64) (result f64) + ;; CHECK-BIN-NEXT: (local $t f64) + ;; CHECK-BIN-NEXT: (local $Int f64) + ;; CHECK-BIN-NEXT: (local $Double i32) + ;; CHECK-BIN-NEXT: (block $label$1 (result f64) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (f64.gt + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (f64.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const 1.2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (f64.gt + ;; CHECK-BIN-NEXT: (local.get $Int) + ;; CHECK-BIN-NEXT: (f64.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const -3.4) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (i32.gt_s + ;; CHECK-BIN-NEXT: (local.get $Double) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (f64.const 5.6) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (f64.lt + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (local.get $y) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.get $y) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $doubleCompares (type $FUNCSIG$ddd) (param $x f64) (param $y f64) (result f64) + (local $t f64) + (local $Int f64) + (local $Double i32) + (block $topmost (result f64) + (if + (f64.gt + (local.get $x) + (f64.const 0) + ) + (br $topmost + (f64.const 1.2) + ) + ) + (if + (f64.gt + (local.get $Int) + (f64.const 0) + ) + (br $topmost + (f64.const -3.4) + ) + ) + (if + (i32.gt_s + (local.get $Double) + (i32.const 0) + ) + (br $topmost + (f64.const 5.6) + ) + ) + (if + (f64.lt + (local.get $x) + (local.get $y) + ) + (br $topmost + (local.get $x) + ) + ) + (local.get $y) + ) + ) + ;; CHECK-TEXT: (func $intOps (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (local $x i32) + ;; CHECK-TEXT-NEXT: (i32.eq + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $intOps (type $5) (result i32) + ;; CHECK-BIN-NEXT: (local $x i32) + ;; CHECK-BIN-NEXT: (i32.eq + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $intOps (type $5) (result i32) + (local $x i32) + (i32.eq + (local.get $x) + (i32.const 0) + ) + ) + ;; CHECK-TEXT: (func $hexLiterals (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (i32.add + ;; CHECK-TEXT-NEXT: (i32.add + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: (i32.const 313249263) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const -19088752) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $hexLiterals (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (i32.add + ;; CHECK-BIN-NEXT: (i32.add + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: (i32.const 313249263) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const -19088752) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $hexLiterals (type $FUNCSIG$v) + (drop + (i32.add + (i32.add + (i32.const 0) + (i32.const 313249263) + ) + (i32.const -19088752) + ) + ) + ) + ;; CHECK-TEXT: (func $conversions (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (local $i i32) + ;; CHECK-TEXT-NEXT: (local $d f64) + ;; CHECK-TEXT-NEXT: (block $block0 + ;; CHECK-TEXT-NEXT: (local.set $i + ;; CHECK-TEXT-NEXT: (call $f64-to-int + ;; CHECK-TEXT-NEXT: (local.get $d) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $d + ;; CHECK-TEXT-NEXT: (f64.convert_i32_s + ;; CHECK-TEXT-NEXT: (local.get $i) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $d + ;; CHECK-TEXT-NEXT: (f64.convert_i32_u + ;; CHECK-TEXT-NEXT: (i32.shr_u + ;; CHECK-TEXT-NEXT: (local.get $i) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $conversions (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (local $i i32) + ;; CHECK-BIN-NEXT: (local $d f64) + ;; CHECK-BIN-NEXT: (local.set $i + ;; CHECK-BIN-NEXT: (call $f64-to-int + ;; CHECK-BIN-NEXT: (local.get $d) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $d + ;; CHECK-BIN-NEXT: (f64.convert_i32_s + ;; CHECK-BIN-NEXT: (local.get $i) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $d + ;; CHECK-BIN-NEXT: (f64.convert_i32_u + ;; CHECK-BIN-NEXT: (i32.shr_u + ;; CHECK-BIN-NEXT: (local.get $i) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $conversions (type $FUNCSIG$v) + (local $i i32) + (local $d f64) + (block $block0 + (local.set $i + (call $f64-to-int + (local.get $d) + ) + ) + (local.set $d + (f64.convert_i32_s + (local.get $i) + ) + ) + (local.set $d + (f64.convert_i32_u + (i32.shr_u + (local.get $i) + (i32.const 0) + ) + ) + ) + ) + ) + ;; CHECK-TEXT: (func $seq (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (local $J f64) + ;; CHECK-TEXT-NEXT: (local.set $J + ;; CHECK-TEXT-NEXT: (f64.sub + ;; CHECK-TEXT-NEXT: (block $block0 (result f64) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (f64.const 0.1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (f64.const 5.1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (block $block1 (result f64) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (f64.const 3.2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (f64.const 4.2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $seq (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (local $J f64) + ;; CHECK-BIN-NEXT: (local.set $J + ;; CHECK-BIN-NEXT: (f64.sub + ;; CHECK-BIN-NEXT: (block $label$1 (result f64) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f64.const 0.1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (f64.const 5.1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (block $label$2 (result f64) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f64.const 3.2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (f64.const 4.2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $seq (type $FUNCSIG$v) + (local $J f64) + (local.set $J + (f64.sub + (block $block0 (result f64) + (drop + (f64.const 0.1) + ) + (f64.const 5.1) + ) + (block $block1 (result f64) + (drop + (f64.const 3.2) + ) + (f64.const 4.2) + ) + ) + ) + ) + ;; CHECK-TEXT: (func $switcher (type $6) (param $x i32) (result i32) + ;; CHECK-TEXT-NEXT: (block $topmost (result i32) + ;; CHECK-TEXT-NEXT: (block $switch$0 + ;; CHECK-TEXT-NEXT: (block $switch-default$3 + ;; CHECK-TEXT-NEXT: (block $switch-case$2 + ;; CHECK-TEXT-NEXT: (block $switch-case$1 + ;; CHECK-TEXT-NEXT: (br_table $switch-case$1 $switch-case$2 $switch-default$3 + ;; CHECK-TEXT-NEXT: (i32.sub + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (block $switch$4 + ;; CHECK-TEXT-NEXT: (block $switch-default$7 + ;; CHECK-TEXT-NEXT: (block $switch-case$6 + ;; CHECK-TEXT-NEXT: (block $switch-case$5 + ;; CHECK-TEXT-NEXT: (br_table $switch-case$6 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-case$5 $switch-default$7 + ;; CHECK-TEXT-NEXT: (i32.sub + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (i32.const 5) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (i32.const 121) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $topmost + ;; CHECK-TEXT-NEXT: (i32.const 51) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (block $label$break$Lout + ;; CHECK-TEXT-NEXT: (block $switch-default$16 + ;; CHECK-TEXT-NEXT: (block $switch-case$15 + ;; CHECK-TEXT-NEXT: (block $switch-case$12 + ;; CHECK-TEXT-NEXT: (block $switch-case$9 + ;; CHECK-TEXT-NEXT: (block $switch-case$8 + ;; CHECK-TEXT-NEXT: (br_table $switch-case$15 $switch-default$16 $switch-default$16 $switch-case$12 $switch-default$16 $switch-default$16 $switch-default$16 $switch-default$16 $switch-case$9 $switch-default$16 $switch-case$8 $switch-default$16 + ;; CHECK-TEXT-NEXT: (i32.sub + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $label$break$Lout) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $label$break$Lout) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (block $while-out$10 + ;; CHECK-TEXT-NEXT: (loop $while-in$11 + ;; CHECK-TEXT-NEXT: (block $block1 + ;; CHECK-TEXT-NEXT: (br $while-out$10) + ;; CHECK-TEXT-NEXT: (br $while-in$11) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $label$break$Lout) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (block $while-out$13 + ;; CHECK-TEXT-NEXT: (loop $while-in$14 + ;; CHECK-TEXT-NEXT: (block $block3 + ;; CHECK-TEXT-NEXT: (br $label$break$Lout) + ;; CHECK-TEXT-NEXT: (br $while-in$14) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $label$break$Lout) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $switcher (type $6) (param $x i32) (result i32) + ;; CHECK-BIN-NEXT: (block $label$1 (result i32) + ;; CHECK-BIN-NEXT: (block $label$2 + ;; CHECK-BIN-NEXT: (block $label$3 + ;; CHECK-BIN-NEXT: (block $label$4 + ;; CHECK-BIN-NEXT: (block $label$5 + ;; CHECK-BIN-NEXT: (br_table $label$5 $label$4 $label$3 + ;; CHECK-BIN-NEXT: (i32.sub + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (block $label$6 + ;; CHECK-BIN-NEXT: (block $label$7 + ;; CHECK-BIN-NEXT: (block $label$8 + ;; CHECK-BIN-NEXT: (block $label$9 + ;; CHECK-BIN-NEXT: (br_table $label$8 $label$7 $label$7 $label$7 $label$7 $label$7 $label$7 $label$9 $label$7 + ;; CHECK-BIN-NEXT: (i32.sub + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (i32.const 5) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (i32.const 121) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1 + ;; CHECK-BIN-NEXT: (i32.const 51) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (block $label$10 + ;; CHECK-BIN-NEXT: (block $label$11 + ;; CHECK-BIN-NEXT: (block $label$12 + ;; CHECK-BIN-NEXT: (block $label$13 + ;; CHECK-BIN-NEXT: (block $label$14 + ;; CHECK-BIN-NEXT: (block $label$15 + ;; CHECK-BIN-NEXT: (br_table $label$12 $label$11 $label$11 $label$13 $label$11 $label$11 $label$11 $label$11 $label$14 $label$11 $label$15 $label$11 + ;; CHECK-BIN-NEXT: (i32.sub + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$10) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$10) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (block $label$16 + ;; CHECK-BIN-NEXT: (loop $label$17 + ;; CHECK-BIN-NEXT: (br $label$16) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (block $label$18 + ;; CHECK-BIN-NEXT: (loop $label$19 + ;; CHECK-BIN-NEXT: (br $label$10) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $switcher (type $6) (param $x i32) (result i32) + (block $topmost (result i32) + (block $switch$0 + (block $switch-default$3 + (block $switch-case$2 + (block $switch-case$1 + (br_table $switch-case$1 $switch-case$2 $switch-default$3 + (i32.sub + (local.get $x) + (i32.const 1) + ) + ) + ) + (br $topmost + (i32.const 1) + ) + ) + (br $topmost + (i32.const 2) + ) + ) + (nop) + ) + (block $switch$4 + (block $switch-default$7 + (block $switch-case$6 + (block $switch-case$5 + (br_table $switch-case$6 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-default$7 $switch-case$5 $switch-default$7 + (i32.sub + (local.get $x) + (i32.const 5) + ) + ) + ) + (br $topmost + (i32.const 121) + ) + ) + (br $topmost + (i32.const 51) + ) + ) + (nop) + ) + (block $label$break$Lout + (block $switch-default$16 + (block $switch-case$15 + (block $switch-case$12 + (block $switch-case$9 + (block $switch-case$8 + (br_table $switch-case$15 $switch-default$16 $switch-default$16 $switch-case$12 $switch-default$16 $switch-default$16 $switch-default$16 $switch-default$16 $switch-case$9 $switch-default$16 $switch-case$8 $switch-default$16 + (i32.sub + (local.get $x) + (i32.const 2) + ) + ) + ) + (br $label$break$Lout) + ) + (br $label$break$Lout) + ) + (block $while-out$10 + (loop $while-in$11 + (block $block1 + (br $while-out$10) + (br $while-in$11) + ) + ) + (br $label$break$Lout) + ) + ) + (block $while-out$13 + (loop $while-in$14 + (block $block3 + (br $label$break$Lout) + (br $while-in$14) + ) + ) + (br $label$break$Lout) + ) + ) + (nop) + ) + (i32.const 0) + ) + ) + ;; CHECK-TEXT: (func $blocker (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (block $label$break$L + ;; CHECK-TEXT-NEXT: (br $label$break$L) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $blocker (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (block $label$1 + ;; CHECK-BIN-NEXT: (br $label$1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $blocker (type $FUNCSIG$v) + (block $label$break$L + (br $label$break$L) + ) + ) + ;; CHECK-TEXT: (func $frem (type $4) (result f64) + ;; CHECK-TEXT-NEXT: (call $f64-rem + ;; CHECK-TEXT-NEXT: (f64.const 5.5) + ;; CHECK-TEXT-NEXT: (f64.const 1.2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $frem (type $4) (result f64) + ;; CHECK-BIN-NEXT: (call $f64-rem + ;; CHECK-BIN-NEXT: (f64.const 5.5) + ;; CHECK-BIN-NEXT: (f64.const 1.2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $frem (type $4) (result f64) + (call $f64-rem + (f64.const 5.5) + (f64.const 1.2) + ) + ) + ;; CHECK-TEXT: (func $big_uint_div_u (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (local $x i32) + ;; CHECK-TEXT-NEXT: (block $topmost (result i32) + ;; CHECK-TEXT-NEXT: (local.set $x + ;; CHECK-TEXT-NEXT: (i32.and + ;; CHECK-TEXT-NEXT: (i32.div_u + ;; CHECK-TEXT-NEXT: (i32.const -1) + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const -1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $big_uint_div_u (type $5) (result i32) + ;; CHECK-BIN-NEXT: (local $x i32) + ;; CHECK-BIN-NEXT: (local.set $x + ;; CHECK-BIN-NEXT: (i32.and + ;; CHECK-BIN-NEXT: (i32.div_u + ;; CHECK-BIN-NEXT: (i32.const -1) + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const -1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: ) + (func $big_uint_div_u (type $5) (result i32) + (local $x i32) + (block $topmost (result i32) + (local.set $x + (i32.and + (i32.div_u + (i32.const -1) + (i32.const 2) + ) + (i32.const -1) + ) + ) + (local.get $x) + ) + ) + ;; CHECK-TEXT: (func $fr (type $FUNCSIG$vf) (param $x f32) + ;; CHECK-TEXT-NEXT: (local $y f32) + ;; CHECK-TEXT-NEXT: (local $z f64) + ;; CHECK-TEXT-NEXT: (block $block0 + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (f32.demote_f64 + ;; CHECK-TEXT-NEXT: (local.get $z) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (local.get $y) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (f32.const 5) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (f32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (f32.const 5) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (f32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $fr (type $FUNCSIG$vf) (param $x f32) + ;; CHECK-BIN-NEXT: (local $y f32) + ;; CHECK-BIN-NEXT: (local $z f64) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f32.demote_f64 + ;; CHECK-BIN-NEXT: (local.get $z) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (local.get $y) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f32.const 5) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f32.const 5) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (f32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $fr (type $FUNCSIG$vf) (param $x f32) + (local $y f32) + (local $z f64) + (block $block0 + (drop + (f32.demote_f64 + (local.get $z) + ) + ) + (drop + (local.get $y) + ) + (drop + (f32.const 5) + ) + (drop + (f32.const 0) + ) + (drop + (f32.const 5) + ) + (drop + (f32.const 0) + ) + ) + ) + ;; CHECK-TEXT: (func $negZero (type $4) (result f64) + ;; CHECK-TEXT-NEXT: (f64.const -0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $negZero (type $4) (result f64) + ;; CHECK-BIN-NEXT: (f64.const -0) + ;; CHECK-BIN-NEXT: ) + (func $negZero (type $4) (result f64) + (f64.const -0) + ) + ;; CHECK-TEXT: (func $abs (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (local $x i32) + ;; CHECK-TEXT-NEXT: (local $y f64) + ;; CHECK-TEXT-NEXT: (local $z f32) + ;; CHECK-TEXT-NEXT: (local $asm2wasm_i32_temp i32) + ;; CHECK-TEXT-NEXT: (block $block0 + ;; CHECK-TEXT-NEXT: (local.set $x + ;; CHECK-TEXT-NEXT: (block $block1 (result i32) + ;; CHECK-TEXT-NEXT: (local.set $asm2wasm_i32_temp + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (select + ;; CHECK-TEXT-NEXT: (i32.sub + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: (local.get $asm2wasm_i32_temp) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.get $asm2wasm_i32_temp) + ;; CHECK-TEXT-NEXT: (i32.lt_s + ;; CHECK-TEXT-NEXT: (local.get $asm2wasm_i32_temp) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $y + ;; CHECK-TEXT-NEXT: (f64.abs + ;; CHECK-TEXT-NEXT: (f64.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.set $z + ;; CHECK-TEXT-NEXT: (f32.abs + ;; CHECK-TEXT-NEXT: (f32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $abs (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (local $x i32) + ;; CHECK-BIN-NEXT: (local $asm2wasm_i32_temp i32) + ;; CHECK-BIN-NEXT: (local $y f64) + ;; CHECK-BIN-NEXT: (local $z f32) + ;; CHECK-BIN-NEXT: (local.set $x + ;; CHECK-BIN-NEXT: (block $label$1 (result i32) + ;; CHECK-BIN-NEXT: (local.set $asm2wasm_i32_temp + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (select + ;; CHECK-BIN-NEXT: (i32.sub + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: (local.get $asm2wasm_i32_temp) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.get $asm2wasm_i32_temp) + ;; CHECK-BIN-NEXT: (i32.lt_s + ;; CHECK-BIN-NEXT: (local.get $asm2wasm_i32_temp) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $y + ;; CHECK-BIN-NEXT: (f64.abs + ;; CHECK-BIN-NEXT: (f64.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.set $z + ;; CHECK-BIN-NEXT: (f32.abs + ;; CHECK-BIN-NEXT: (f32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $abs (type $FUNCSIG$v) + (local $x i32) + (local $y f64) + (local $z f32) + (local $asm2wasm_i32_temp i32) + (block $block0 + (local.set $x + (block $block1 (result i32) + (local.set $asm2wasm_i32_temp + (i32.const 0) + ) + (select + (i32.sub + (i32.const 0) + (local.get $asm2wasm_i32_temp) + ) + (local.get $asm2wasm_i32_temp) + (i32.lt_s + (local.get $asm2wasm_i32_temp) + (i32.const 0) + ) + ) + ) + ) + (local.set $y + (f64.abs + (f64.const 0) + ) + ) + (local.set $z + (f32.abs + (f32.const 0) + ) + ) + ) + ) + ;; CHECK-TEXT: (func $neg (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (local $x f32) + ;; CHECK-TEXT-NEXT: (block $block0 + ;; CHECK-TEXT-NEXT: (local.set $x + ;; CHECK-TEXT-NEXT: (f32.neg + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (call_indirect $0 (type $FUNCSIG$vf) + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (i32.add + ;; CHECK-TEXT-NEXT: (i32.and + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (i32.const 7) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const 8) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $neg (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (local $x f32) + ;; CHECK-BIN-NEXT: (local.set $x + ;; CHECK-BIN-NEXT: (f32.neg + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (call_indirect $0 (type $FUNCSIG$vf) + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (i32.add + ;; CHECK-BIN-NEXT: (i32.and + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: (i32.const 7) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const 8) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $neg (type $FUNCSIG$v) + (local $x f32) + (block $block0 + (local.set $x + (f32.neg + (local.get $x) + ) + ) + (call_indirect (type $FUNCSIG$vf) + (local.get $x) + (i32.add + (i32.and + (i32.const 1) + (i32.const 7) + ) + (i32.const 8) + ) + ) + ) + ) + ;; CHECK-TEXT: (func $cneg (type $FUNCSIG$vf) (param $x f32) + ;; CHECK-TEXT-NEXT: (call_indirect $0 (type $FUNCSIG$vf) + ;; CHECK-TEXT-NEXT: (local.get $x) + ;; CHECK-TEXT-NEXT: (i32.add + ;; CHECK-TEXT-NEXT: (i32.and + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (i32.const 7) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const 8) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $cneg (type $FUNCSIG$vf) (param $x f32) + ;; CHECK-BIN-NEXT: (call_indirect $0 (type $FUNCSIG$vf) + ;; CHECK-BIN-NEXT: (local.get $x) + ;; CHECK-BIN-NEXT: (i32.add + ;; CHECK-BIN-NEXT: (i32.and + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: (i32.const 7) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const 8) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $cneg (type $FUNCSIG$vf) (param $x f32) + (call_indirect (type $FUNCSIG$vf) + (local.get $x) + (i32.add + (i32.and + (i32.const 1) + (i32.const 7) + ) + (i32.const 8) + ) + ) + ) + ;; CHECK-TEXT: (func $___syscall_ret (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (local $$0 i32) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (i32.gt_u + ;; CHECK-TEXT-NEXT: (i32.shr_u + ;; CHECK-TEXT-NEXT: (local.get $$0) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const -4096) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $___syscall_ret (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (local $$0 i32) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (i32.gt_u + ;; CHECK-BIN-NEXT: (i32.shr_u + ;; CHECK-BIN-NEXT: (local.get $$0) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const -4096) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $___syscall_ret (type $FUNCSIG$v) + (local $$0 i32) + (drop + (i32.gt_u + (i32.shr_u + (local.get $$0) + (i32.const 0) + ) + (i32.const -4096) + ) + ) + ) + ;; CHECK-TEXT: (func $z (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $z (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: ) + (func $z (type $FUNCSIG$v) + (nop) + ) + ;; CHECK-TEXT: (func $w (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $w (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: ) + (func $w (type $FUNCSIG$v) + (nop) + ) + ;; CHECK-TEXT: (func $block_and_after (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (block $waka + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $waka) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const 0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $block_and_after (type $5) (result i32) + ;; CHECK-BIN-NEXT: (block $label$1 + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const 0) + ;; CHECK-BIN-NEXT: ) + (func $block_and_after (type $5) (result i32) + (block $waka + (drop + (i32.const 1) + ) + (br $waka) + ) + (i32.const 0) + ) + ;; CHECK-TEXT: (func $loop-roundtrip (type $7) (param $0 f64) (result f64) + ;; CHECK-TEXT-NEXT: (loop $loop-in1 (result f64) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (local.get $0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (local.get $0) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $loop-roundtrip (type $7) (param $0 f64) (result f64) + ;; CHECK-BIN-NEXT: (loop $label$1 (result f64) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (local.get $0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (local.get $0) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $loop-roundtrip (type $7) (param $0 f64) (result f64) + (loop $loop-in1 (result f64) + (drop + (local.get $0) + ) + (local.get $0) + ) + ) + ;; CHECK-TEXT: (func $big-i64 (type $8) (result i64) + ;; CHECK-TEXT-NEXT: (i64.const -9218868437227405313) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $big-i64 (type $8) (result i64) + ;; CHECK-BIN-NEXT: (i64.const -9218868437227405313) + ;; CHECK-BIN-NEXT: ) + (func $big-i64 (type $8) (result i64) + (i64.const -9218868437227405313) + ) + ;; CHECK-TEXT: (func $i64-store32 (type $9) (param $0 i32) (param $1 i64) + ;; CHECK-TEXT-NEXT: (i64.store32 + ;; CHECK-TEXT-NEXT: (local.get $0) + ;; CHECK-TEXT-NEXT: (local.get $1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $i64-store32 (type $9) (param $0 i32) (param $1 i64) + ;; CHECK-BIN-NEXT: (i64.store32 + ;; CHECK-BIN-NEXT: (local.get $0) + ;; CHECK-BIN-NEXT: (local.get $1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $i64-store32 (type $9) (param $0 i32) (param $1 i64) + (i64.store32 + (local.get $0) + (local.get $1) + ) + ) + ;; CHECK-TEXT: (func $return-unreachable (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $return-unreachable (type $5) (result i32) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $return-unreachable (result i32) + (return (i32.const 1)) + ) + ;; CHECK-TEXT: (func $unreachable-block (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (f64.abs + ;; CHECK-TEXT-NEXT: (block + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-block (type $5) (result i32) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-block (result i32) + (f64.abs + (block ;; note no type - valid in binaryen IR, in wasm must be i32 + (drop (i32.const 1)) + (return (i32.const 2)) + ) + ) + ) + ;; CHECK-TEXT: (func $unreachable-block-toplevel (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-block-toplevel (type $5) (result i32) + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-block-toplevel (result i32) + (block ;; note no type - valid in binaryen IR, in wasm must be i32 + (drop (i32.const 1)) + (return (i32.const 2)) + ) + ) + ;; CHECK-TEXT: (func $unreachable-block0 (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (f64.abs + ;; CHECK-TEXT-NEXT: (block + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-block0 (type $5) (result i32) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-block0 (result i32) + (f64.abs + (block ;; note no type - valid in binaryen IR, in wasm must be i32 + (return (i32.const 2)) + ) + ) + ) + ;; CHECK-TEXT: (func $unreachable-block0-toplevel (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-block0-toplevel (type $5) (result i32) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-block0-toplevel (result i32) + (block ;; note no type - valid in binaryen IR, in wasm must be i32 + (return (i32.const 2)) + ) + ) + ;; CHECK-TEXT: (func $unreachable-block-with-br (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (block $block + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (br $block) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-block-with-br (type $5) (result i32) + ;; CHECK-BIN-NEXT: (block $label$1 + ;; CHECK-BIN-NEXT: (drop + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (br $label$1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-block-with-br (result i32) + (block $block ;; unreachable type due to last element having that type, but the block is exitable + (drop (i32.const 1)) + (br $block) + ) + (i32.const 1) + ) + ;; CHECK-TEXT: (func $unreachable-if (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (f64.abs + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.const 3) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-if (type $5) (result i32) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (i32.const 3) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-if (result i32) + (f64.abs + (if ;; note no type - valid in binaryen IR, in wasm must be i32 + (i32.const 3) + (return (i32.const 2)) + (return (i32.const 1)) + ) + ) + ) + ;; CHECK-TEXT: (func $unreachable-if-toplevel (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.const 3) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 2) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-if-toplevel (type $5) (result i32) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (i32.const 3) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 2) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-if-toplevel (result i32) + (if ;; note no type - valid in binaryen IR, in wasm must be i32 + (i32.const 3) + (return (i32.const 2)) + (return (i32.const 1)) + ) + ) + ;; CHECK-TEXT: (func $unreachable-loop (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (f64.abs + ;; CHECK-TEXT-NEXT: (loop $loop-in + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-loop (type $5) (result i32) + ;; CHECK-BIN-NEXT: (loop $label$1 + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-loop (result i32) + (f64.abs + (loop ;; note no type - valid in binaryen IR, in wasm must be i32 + (nop) + (return (i32.const 1)) + ) + ) + ) + ;; CHECK-TEXT: (func $unreachable-loop0 (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (f64.abs + ;; CHECK-TEXT-NEXT: (loop $loop-in + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-loop0 (type $5) (result i32) + ;; CHECK-BIN-NEXT: (loop $label$1 + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-loop0 (result i32) + (f64.abs + (loop ;; note no type - valid in binaryen IR, in wasm must be i32 + (return (i32.const 1)) + ) + ) + ) + ;; CHECK-TEXT: (func $unreachable-loop-toplevel (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (loop $loop-in + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-loop-toplevel (type $5) (result i32) + ;; CHECK-BIN-NEXT: (loop $label$1 + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-loop-toplevel (result i32) + (loop ;; note no type - valid in binaryen IR, in wasm must be i32 + (nop) + (return (i32.const 1)) + ) + ) + ;; CHECK-TEXT: (func $unreachable-loop0-toplevel (type $5) (result i32) + ;; CHECK-TEXT-NEXT: (loop $loop-in + ;; CHECK-TEXT-NEXT: (return + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-loop0-toplevel (type $5) (result i32) + ;; CHECK-BIN-NEXT: (loop $label$1 + ;; CHECK-BIN-NEXT: (return + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-loop0-toplevel (result i32) + (loop ;; note no type - valid in binaryen IR, in wasm must be i32 + (return (i32.const 1)) + ) + ) + ;; CHECK-TEXT: (func $unreachable-ifs (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-ifs (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-ifs + (if (unreachable) (nop)) + (if (unreachable) (unreachable)) + (if (unreachable) (nop) (nop)) + (if (unreachable) (unreachable) (nop)) + (if (unreachable) (nop) (unreachable)) + (if (unreachable) (unreachable) (unreachable)) + ;; + (if (i32.const 1) (unreachable) (nop)) + (if (i32.const 1) (nop) (unreachable)) + (if (i32.const 1) (unreachable) (unreachable)) + ) + ;; CHECK-TEXT: (func $unreachable-if-arm (type $FUNCSIG$v) + ;; CHECK-TEXT-NEXT: (if + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: (nop) + ;; CHECK-TEXT-NEXT: (block + ;; CHECK-TEXT-NEXT: (unreachable) + ;; CHECK-TEXT-NEXT: (drop + ;; CHECK-TEXT-NEXT: (i32.const 1) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-TEXT-NEXT: ) + ;; CHECK-BIN: (func $unreachable-if-arm (type $FUNCSIG$v) + ;; CHECK-BIN-NEXT: (if + ;; CHECK-BIN-NEXT: (i32.const 1) + ;; CHECK-BIN-NEXT: (nop) + ;; CHECK-BIN-NEXT: (unreachable) + ;; CHECK-BIN-NEXT: ) + ;; CHECK-BIN-NEXT: ) + (func $unreachable-if-arm + (if + (i32.const 1) + (block + (nop) + ) + (block + (unreachable) + (drop + (i32.const 1) + ) + ) + ) + ) +) +;; CHECK-BIN-NODEBUG: (func $0 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 f64) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -2147483648) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -2147483648) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -21474836480) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0.039625) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -0.039625) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $1 (type $3) (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 f64) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f64.add +;; CHECK-BIN-NODEBUG-NEXT: (f64.add +;; CHECK-BIN-NODEBUG-NEXT: (f64.add +;; CHECK-BIN-NODEBUG-NEXT: (f64.load +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 8) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (f64.load +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 16) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (f64.neg +;; CHECK-BIN-NODEBUG-NEXT: (f64.load +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 16) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (f64.neg +;; CHECK-BIN-NODEBUG-NEXT: (f64.load +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 8) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (i32.gt_s +;; CHECK-BIN-NODEBUG-NEXT: (i32.load +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 24) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -3.4) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (f64.gt +;; CHECK-BIN-NODEBUG-NEXT: (f64.load +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 32) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.6) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 1.2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $2 (type $4) (param $0 f64) (param $1 f64) (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (local $2 f64) +;; CHECK-BIN-NODEBUG-NEXT: (local $3 f64) +;; CHECK-BIN-NODEBUG-NEXT: (local $4 i32) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (f64.gt +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 1.2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (f64.gt +;; CHECK-BIN-NODEBUG-NEXT: (local.get $3) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -3.4) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (i32.gt_s +;; CHECK-BIN-NODEBUG-NEXT: (local.get $4) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.6) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (f64.lt +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $3 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 i32) +;; CHECK-BIN-NODEBUG-NEXT: (i32.eq +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $4 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (i32.add +;; CHECK-BIN-NODEBUG-NEXT: (i32.add +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 313249263) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const -19088752) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $5 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 i32) +;; CHECK-BIN-NODEBUG-NEXT: (local $1 f64) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (call $fimport$1 +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.convert_i32_s +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $1 +;; CHECK-BIN-NODEBUG-NEXT: (f64.convert_i32_u +;; CHECK-BIN-NODEBUG-NEXT: (i32.shr_u +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $6 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 f64) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f64.sub +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0.1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$2 (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 3.2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 4.2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $7 (type $6) (param $0 i32) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$2 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$3 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$4 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$5 +;; CHECK-BIN-NODEBUG-NEXT: (br_table $label$5 $label$4 $label$3 +;; CHECK-BIN-NODEBUG-NEXT: (i32.sub +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$6 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$7 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$8 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$9 +;; CHECK-BIN-NODEBUG-NEXT: (br_table $label$8 $label$7 $label$7 $label$7 $label$7 $label$7 $label$7 $label$9 $label$7 +;; CHECK-BIN-NODEBUG-NEXT: (i32.sub +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 5) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 121) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 51) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$10 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$11 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$12 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$13 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$14 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$15 +;; CHECK-BIN-NODEBUG-NEXT: (br_table $label$12 $label$11 $label$11 $label$13 $label$11 $label$11 $label$11 $label$11 $label$14 $label$11 $label$15 $label$11 +;; CHECK-BIN-NODEBUG-NEXT: (i32.sub +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$10) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$10) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$16 +;; CHECK-BIN-NODEBUG-NEXT: (loop $label$17 +;; CHECK-BIN-NODEBUG-NEXT: (br $label$16) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$18 +;; CHECK-BIN-NODEBUG-NEXT: (loop $label$19 +;; CHECK-BIN-NODEBUG-NEXT: (br $label$10) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $8 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $9 (type $3) (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (call $fimport$2 +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 5.5) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 1.2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $10 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 i32) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (i32.and +;; CHECK-BIN-NODEBUG-NEXT: (i32.div_u +;; CHECK-BIN-NODEBUG-NEXT: (i32.const -1) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const -1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $11 (type $2) (param $0 f32) +;; CHECK-BIN-NODEBUG-NEXT: (local $1 f32) +;; CHECK-BIN-NODEBUG-NEXT: (local $2 f64) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f32.demote_f64 +;; CHECK-BIN-NODEBUG-NEXT: (local.get $2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f32.const 5) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f32.const 5) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (f32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $12 (type $3) (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (f64.const -0) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $13 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 i32) +;; CHECK-BIN-NODEBUG-NEXT: (local $1 i32) +;; CHECK-BIN-NODEBUG-NEXT: (local $2 f64) +;; CHECK-BIN-NODEBUG-NEXT: (local $3 f32) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $1 +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (select +;; CHECK-BIN-NODEBUG-NEXT: (i32.sub +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: (i32.lt_s +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $2 +;; CHECK-BIN-NODEBUG-NEXT: (f64.abs +;; CHECK-BIN-NODEBUG-NEXT: (f64.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $3 +;; CHECK-BIN-NODEBUG-NEXT: (f32.abs +;; CHECK-BIN-NODEBUG-NEXT: (f32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $14 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 f32) +;; CHECK-BIN-NODEBUG-NEXT: (local.set $0 +;; CHECK-BIN-NODEBUG-NEXT: (f32.neg +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (call_indirect $0 (type $2) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.add +;; CHECK-BIN-NODEBUG-NEXT: (i32.and +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 7) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 8) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $15 (type $2) (param $0 f32) +;; CHECK-BIN-NODEBUG-NEXT: (call_indirect $0 (type $2) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.add +;; CHECK-BIN-NODEBUG-NEXT: (i32.and +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 7) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 8) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $16 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (local $0 i32) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (i32.gt_u +;; CHECK-BIN-NODEBUG-NEXT: (i32.shr_u +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const -4096) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $17 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $18 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $19 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $20 (type $7) (param $0 f64) (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (loop $label$1 (result f64) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $21 (type $8) (result i64) +;; CHECK-BIN-NODEBUG-NEXT: (i64.const -9218868437227405313) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $22 (type $9) (param $0 i32) (param $1 i64) +;; CHECK-BIN-NODEBUG-NEXT: (i64.store32 +;; CHECK-BIN-NODEBUG-NEXT: (local.get $0) +;; CHECK-BIN-NODEBUG-NEXT: (local.get $1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $23 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $24 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $25 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $26 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $27 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $28 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (drop +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (br $label$1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $29 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $30 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 3) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $31 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (loop $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $32 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (loop $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $33 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (loop $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $34 (type $0) (result i32) +;; CHECK-BIN-NODEBUG-NEXT: (loop $label$1 +;; CHECK-BIN-NODEBUG-NEXT: (return +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $35 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) + +;; CHECK-BIN-NODEBUG: (func $36 (type $1) +;; CHECK-BIN-NODEBUG-NEXT: (if +;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1) +;; CHECK-BIN-NODEBUG-NEXT: (nop) +;; CHECK-BIN-NODEBUG-NEXT: (unreachable) +;; CHECK-BIN-NODEBUG-NEXT: ) +;; CHECK-BIN-NODEBUG-NEXT: ) |