summaryrefslogtreecommitdiff
path: root/test/lit/basic
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2023-12-11 17:41:56 -0800
committerGitHub <noreply@github.com>2023-12-11 17:41:56 -0800
commit5db8eb2131bebfed4e0748056d9fafaca60ce83e (patch)
tree11dc20c6b38cc0b463d00fad219f467ba06f5a60 /test/lit/basic
parent8613b14d74db8c2c18e144198147feba74b09132 (diff)
downloadbinaryen-5db8eb2131bebfed4e0748056d9fafaca60ce83e.tar.gz
binaryen-5db8eb2131bebfed4e0748056d9fafaca60ce83e.tar.bz2
binaryen-5db8eb2131bebfed4e0748056d9fafaca60ce83e.zip
[test] Tweak RUN commands of test/lit/basic/ (#6159)
This tweaks generated file names and `filecheck` prefixes to be more (IMHO) consistent. Also shortened binary/BINARY to bin/BIN for conciseness. This also changes the order of `RUN` commands a little. And this changes ```console wasm-opt %t.wast -all -o %t.text.wast -g -S ``` to ```console wasm-opt %s -all -o %t.text.wast -g -S ``` The current command doesn't take the source file but the generated file from the command above `wasm-dis`, which is not the behavior of `check.py`. This changes it back to the original source (`%s`). As a result of `wasm-opt` change, some tests are now failing because of the order of `(type)`s. So I just deleted all `CHECK` lines and regenerated them using `update_lit_checks.py --all-items`. The large amount of `CHECK` line changes are mainly because I moved `CHECK-TEXT` before `CHECK-BINARY` and not meaningful.
Diffstat (limited to 'test/lit/basic')
-rw-r--r--test/lit/basic/relaxed-simd.wast594
-rw-r--r--test/lit/basic/table-operations.wast287
-rw-r--r--test/lit/basic/typed_continuations.wast36
-rw-r--r--test/lit/basic/types-function-references.wast661
4 files changed, 785 insertions, 793 deletions
diff --git a/test/lit/basic/relaxed-simd.wast b/test/lit/basic/relaxed-simd.wast
index d20e5c42b..0024d5b93 100644
--- a/test/lit/basic/relaxed-simd.wast
+++ b/test/lit/basic/relaxed-simd.wast
@@ -1,30 +1,17 @@
;; 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.wast -g -S
;; RUN: wasm-as %s -all -g -o %t.wasm
-;; RUN: wasm-dis %t.wasm -all -o %t.wast
+;; RUN: wasm-dis %t.wasm -all -o %t.bin.wast
;; RUN: wasm-as %s -all -o %t.nodebug.wasm
-;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.nodebug.wast
-;; RUN: wasm-opt %t.wast -all -o %t.text.wast -g -S
-;; RUN: cat %t.wast | filecheck %s --check-prefix=CHECK-BINARY
-;; RUN: cat %t.nodebug.wast | filecheck %s --check-prefix=CHECK-NODEBUG
+;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wast
;; RUN: cat %t.text.wast | filecheck %s --check-prefix=CHECK-TEXT
+;; RUN: cat %t.bin.wast | filecheck %s --check-prefix=CHECK-BIN
+;; RUN: cat %t.bin.nodebug.wast | filecheck %s --check-prefix=CHECK-BIN-NODEBUG
+
(module
(memory 1 1)
- ;; CHECK-BINARY: (type $0 (func (param v128 v128 v128) (result v128)))
-
- ;; CHECK-BINARY: (type $1 (func (param v128 v128) (result v128)))
-
- ;; CHECK-BINARY: (type $2 (func (param v128) (result v128)))
-
- ;; CHECK-BINARY: (memory $0 1 1)
-
- ;; CHECK-BINARY: (func $i8x16.relaxed_swizzle (type $1) (param $0 v128) (param $1 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i8x16.relaxed_swizzle
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (type $0 (func (param v128 v128 v128) (result v128)))
;; CHECK-TEXT: (type $1 (func (param v128 v128) (result v128)))
@@ -39,6 +26,20 @@
;; CHECK-TEXT-NEXT: (local.get $1)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (type $0 (func (param v128 v128 v128) (result v128)))
+
+ ;; CHECK-BIN: (type $1 (func (param v128 v128) (result v128)))
+
+ ;; CHECK-BIN: (type $2 (func (param v128) (result v128)))
+
+ ;; CHECK-BIN: (memory $0 1 1)
+
+ ;; CHECK-BIN: (func $i8x16.relaxed_swizzle (type $1) (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i8x16.relaxed_swizzle
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i8x16.relaxed_swizzle (param $0 v128) (param $1 v128) (result v128)
(i8x16.relaxed_swizzle
(local.get $0)
@@ -46,74 +47,70 @@
)
)
- ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f32x4_s (type $2) (param $0 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f32x4_s
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f32x4_s (type $2) (param $0 v128) (result v128)
;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f32x4_s
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i32x4.relaxed_trunc_f32x4_s (type $2) (param $0 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i32x4.relaxed_trunc_f32x4_s
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i32x4.relaxed_trunc_f32x4_s (param $0 v128) (result v128)
(i32x4.relaxed_trunc_f32x4_s
(local.get $0)
)
)
- ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f32x4_u (type $2) (param $0 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f32x4_u
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f32x4_u (type $2) (param $0 v128) (result v128)
;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f32x4_u
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i32x4.relaxed_trunc_f32x4_u (type $2) (param $0 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i32x4.relaxed_trunc_f32x4_u
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i32x4.relaxed_trunc_f32x4_u (param $0 v128) (result v128)
(i32x4.relaxed_trunc_f32x4_u
(local.get $0)
)
)
- ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f64x2_s_zero (type $2) (param $0 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f64x2_s_zero (type $2) (param $0 v128) (result v128)
;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i32x4.relaxed_trunc_f64x2_s_zero (type $2) (param $0 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i32x4.relaxed_trunc_f64x2_s_zero (param $0 v128) (result v128)
(i32x4.relaxed_trunc_f64x2_s_zero
(local.get $0)
)
)
- ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f64x2_u_zero (type $2) (param $0 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f64x2_u_zero (type $2) (param $0 v128) (result v128)
;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i32x4.relaxed_trunc_f64x2_u_zero (type $2) (param $0 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i32x4.relaxed_trunc_f64x2_u_zero (param $0 v128) (result v128)
(i32x4.relaxed_trunc_f64x2_u_zero
(local.get $0)
)
)
- ;; CHECK-BINARY: (func $f32x4.relaxed_fma (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f32x4.relaxed_fma
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $f32x4.relaxed_fma (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (f32x4.relaxed_fma
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -121,6 +118,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f32x4.relaxed_fma (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f32x4.relaxed_fma
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f32x4.relaxed_fma (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.relaxed_fma
(local.get $0)
@@ -128,13 +132,7 @@
(local.get $2)
)
)
- ;; CHECK-BINARY: (func $f32x4.relaxed_fms (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f32x4.relaxed_fms
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $f32x4.relaxed_fms (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (f32x4.relaxed_fms
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -142,6 +140,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f32x4.relaxed_fms (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f32x4.relaxed_fms
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f32x4.relaxed_fms (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.relaxed_fms
(local.get $0)
@@ -149,13 +154,7 @@
(local.get $2)
)
)
- ;; CHECK-BINARY: (func $f64x2.relaxed_fma (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f64x2.relaxed_fma
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $f64x2.relaxed_fma (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (f64x2.relaxed_fma
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -163,6 +162,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f64x2.relaxed_fma (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f64x2.relaxed_fma
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f64x2.relaxed_fma (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.relaxed_fma
(local.get $0)
@@ -170,13 +176,7 @@
(local.get $2)
)
)
- ;; CHECK-BINARY: (func $f64x2.relaxed_fms (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f64x2.relaxed_fms
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $f64x2.relaxed_fms (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (f64x2.relaxed_fms
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -184,6 +184,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f64x2.relaxed_fms (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f64x2.relaxed_fms
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f64x2.relaxed_fms (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.relaxed_fms
(local.get $0)
@@ -192,13 +199,6 @@
)
)
- ;; CHECK-BINARY: (func $i8x16.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i8x16.laneselect
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $i8x16.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (i8x16.laneselect
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -206,6 +206,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i8x16.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i8x16.laneselect
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i8x16.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(i8x16.laneselect
(local.get $0)
@@ -213,13 +220,7 @@
(local.get $2)
)
)
- ;; CHECK-BINARY: (func $i16x8.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i16x8.laneselect
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $i16x8.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (i16x8.laneselect
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -227,6 +228,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i16x8.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i16x8.laneselect
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i16x8.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(i16x8.laneselect
(local.get $0)
@@ -234,13 +242,7 @@
(local.get $2)
)
)
- ;; CHECK-BINARY: (func $i32x4.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i32x4.laneselect
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $i32x4.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (i32x4.laneselect
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -248,6 +250,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i32x4.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i32x4.laneselect
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i32x4.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(i32x4.laneselect
(local.get $0)
@@ -255,13 +264,7 @@
(local.get $2)
)
)
- ;; CHECK-BINARY: (func $i64x2.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i64x2.laneselect
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $i64x2.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (i64x2.laneselect
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -269,6 +272,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i64x2.laneselect (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i64x2.laneselect
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i64x2.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(i64x2.laneselect
(local.get $0)
@@ -277,72 +287,75 @@
)
)
- ;; CHECK-BINARY: (func $f32x4.relaxed_min (type $1) (param $0 v128) (param $1 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f32x4.relaxed_min
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $f32x4.relaxed_min (type $1) (param $0 v128) (param $1 v128) (result v128)
;; CHECK-TEXT-NEXT: (f32x4.relaxed_min
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: (local.get $1)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f32x4.relaxed_min (type $1) (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f32x4.relaxed_min
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f32x4.relaxed_min (param $0 v128) (param $1 v128) (result v128)
(f32x4.relaxed_min
(local.get $0)
(local.get $1)
)
)
- ;; CHECK-BINARY: (func $f32x4.relaxed_max (type $1) (param $0 v128) (param $1 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f32x4.relaxed_max
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $f32x4.relaxed_max (type $1) (param $0 v128) (param $1 v128) (result v128)
;; CHECK-TEXT-NEXT: (f32x4.relaxed_max
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: (local.get $1)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f32x4.relaxed_max (type $1) (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f32x4.relaxed_max
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f32x4.relaxed_max (param $0 v128) (param $1 v128) (result v128)
(f32x4.relaxed_max
(local.get $0)
(local.get $1)
)
)
- ;; CHECK-BINARY: (func $f64x2.relaxed_min (type $1) (param $0 v128) (param $1 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f64x2.relaxed_min
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $f64x2.relaxed_min (type $1) (param $0 v128) (param $1 v128) (result v128)
;; CHECK-TEXT-NEXT: (f64x2.relaxed_min
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: (local.get $1)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f64x2.relaxed_min (type $1) (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f64x2.relaxed_min
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f64x2.relaxed_min (param $0 v128) (param $1 v128) (result v128)
(f64x2.relaxed_min
(local.get $0)
(local.get $1)
)
)
- ;; CHECK-BINARY: (func $f64x2.relaxed_max (type $1) (param $0 v128) (param $1 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (f64x2.relaxed_max
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $f64x2.relaxed_max (type $1) (param $0 v128) (param $1 v128) (result v128)
;; CHECK-TEXT-NEXT: (f64x2.relaxed_max
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: (local.get $1)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f64x2.relaxed_max (type $1) (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (f64x2.relaxed_max
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $f64x2.relaxed_max (param $0 v128) (param $1 v128) (result v128)
(f64x2.relaxed_max
(local.get $0)
@@ -350,18 +363,18 @@
)
)
- ;; CHECK-BINARY: (func $i16x8.relaxed_q15mulr_s (type $1) (param $0 v128) (param $1 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i16x8.relaxed_q15mulr_s
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $i16x8.relaxed_q15mulr_s (type $1) (param $0 v128) (param $1 v128) (result v128)
;; CHECK-TEXT-NEXT: (i16x8.relaxed_q15mulr_s
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: (local.get $1)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i16x8.relaxed_q15mulr_s (type $1) (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i16x8.relaxed_q15mulr_s
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i16x8.relaxed_q15mulr_s (param $0 v128) (param $1 v128) (result v128)
(i16x8.relaxed_q15mulr_s
(local.get $0)
@@ -369,18 +382,18 @@
)
)
- ;; CHECK-BINARY: (func $i16x8.dot_i8x16_i7x16_s (type $1) (param $0 v128) (param $1 v128) (result v128)
- ;; CHECK-BINARY-NEXT: (i16x8.dot_i8x16_i7x16_s
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $i16x8.dot_i8x16_i7x16_s (type $1) (param $0 v128) (param $1 v128) (result v128)
;; CHECK-TEXT-NEXT: (i16x8.dot_i8x16_i7x16_s
;; CHECK-TEXT-NEXT: (local.get $0)
;; CHECK-TEXT-NEXT: (local.get $1)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $i16x8.dot_i8x16_i7x16_s (type $1) (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BIN-NEXT: (i16x8.dot_i8x16_i7x16_s
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $i16x8.dot_i8x16_i7x16_s (param $0 v128) (param $1 v128) (result v128)
(i16x8.dot_i8x16_i7x16_s
(local.get $0)
@@ -388,13 +401,6 @@
)
)
-;; CHECK-BINARY: (func $i32x4.dot_i8x16_i7x16_add_s (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-BINARY-NEXT: (i32x4.dot_i8x16_i7x16_add_s
-;; CHECK-BINARY-NEXT: (local.get $0)
-;; CHECK-BINARY-NEXT: (local.get $1)
-;; CHECK-BINARY-NEXT: (local.get $2)
-;; CHECK-BINARY-NEXT: )
-;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $i32x4.dot_i8x16_i7x16_add_s (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
;; CHECK-TEXT-NEXT: (i32x4.dot_i8x16_i7x16_add_s
;; CHECK-TEXT-NEXT: (local.get $0)
@@ -402,6 +408,13 @@
;; CHECK-TEXT-NEXT: (local.get $2)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+;; CHECK-BIN: (func $i32x4.dot_i8x16_i7x16_add_s (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NEXT: (i32x4.dot_i8x16_i7x16_add_s
+;; CHECK-BIN-NEXT: (local.get $0)
+;; CHECK-BIN-NEXT: (local.get $1)
+;; CHECK-BIN-NEXT: (local.get $2)
+;; CHECK-BIN-NEXT: )
+;; CHECK-BIN-NEXT: )
(func $i32x4.dot_i8x16_i7x16_add_s (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(i32x4.dot_i8x16_i7x16_add_s
(local.get $0)
@@ -409,157 +422,156 @@
(local.get $2)
)
)
-
)
-;; CHECK-NODEBUG: (type $0 (func (param v128 v128 v128) (result v128)))
-
-;; CHECK-NODEBUG: (type $1 (func (param v128 v128) (result v128)))
-
-;; CHECK-NODEBUG: (type $2 (func (param v128) (result v128)))
-
-;; CHECK-NODEBUG: (memory $0 1 1)
-
-;; CHECK-NODEBUG: (func $0 (type $1) (param $0 v128) (param $1 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i8x16.relaxed_swizzle
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $1 (type $2) (param $0 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f32x4_s
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $2 (type $2) (param $0 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f32x4_u
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $3 (type $2) (param $0 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $4 (type $2) (param $0 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $5 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_fma
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $6 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_fms
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $7 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_fma
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $8 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_fms
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $9 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i8x16.laneselect
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $10 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i16x8.laneselect
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $11 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i32x4.laneselect
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $12 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i64x2.laneselect
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $13 (type $1) (param $0 v128) (param $1 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_min
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $14 (type $1) (param $0 v128) (param $1 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_max
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $15 (type $1) (param $0 v128) (param $1 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_min
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $16 (type $1) (param $0 v128) (param $1 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_max
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $17 (type $1) (param $0 v128) (param $1 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i16x8.relaxed_q15mulr_s
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $18 (type $1) (param $0 v128) (param $1 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i16x8.dot_i8x16_i7x16_s
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $19 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
-;; CHECK-NODEBUG-NEXT: (i32x4.dot_i8x16_i7x16_add_s
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG: (type $0 (func (param v128 v128 v128) (result v128)))
+
+;; CHECK-BIN-NODEBUG: (type $1 (func (param v128 v128) (result v128)))
+
+;; CHECK-BIN-NODEBUG: (type $2 (func (param v128) (result v128)))
+
+;; CHECK-BIN-NODEBUG: (memory $0 1 1)
+
+;; CHECK-BIN-NODEBUG: (func $0 (type $1) (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i8x16.relaxed_swizzle
+;; 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 $1 (type $2) (param $0 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i32x4.relaxed_trunc_f32x4_s
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $2 (type $2) (param $0 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i32x4.relaxed_trunc_f32x4_u
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $3 (type $2) (param $0 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $4 (type $2) (param $0 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $5 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f32x4.relaxed_fma
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $6 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f32x4.relaxed_fms
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $7 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f64x2.relaxed_fma
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $8 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f64x2.relaxed_fms
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $9 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i8x16.laneselect
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $10 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i16x8.laneselect
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $11 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i32x4.laneselect
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $12 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i64x2.laneselect
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $13 (type $1) (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f32x4.relaxed_min
+;; 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 $14 (type $1) (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f32x4.relaxed_max
+;; 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 $15 (type $1) (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f64x2.relaxed_min
+;; 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 $16 (type $1) (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (f64x2.relaxed_max
+;; 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 $17 (type $1) (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i16x8.relaxed_q15mulr_s
+;; 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 $18 (type $1) (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i16x8.dot_i8x16_i7x16_s
+;; 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 $19 (type $0) (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BIN-NODEBUG-NEXT: (i32x4.dot_i8x16_i7x16_add_s
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
diff --git a/test/lit/basic/table-operations.wast b/test/lit/basic/table-operations.wast
index f3aafe51a..3f1e13bea 100644
--- a/test/lit/basic/table-operations.wast
+++ b/test/lit/basic/table-operations.wast
@@ -1,26 +1,15 @@
;; 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.wast -g -S
;; RUN: wasm-as %s -all -g -o %t.wasm
-;; RUN: wasm-dis %t.wasm -all -o %t.wast
+;; RUN: wasm-dis %t.wasm -all -o %t.bin.wast
;; RUN: wasm-as %s -all -o %t.nodebug.wasm
-;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.nodebug.wast
-;; RUN: wasm-opt %t.wast -all -o %t.text.wast -g -S
-;; RUN: cat %t.wast | filecheck %s --check-prefix=CHECK-BINARY
-;; RUN: cat %t.nodebug.wast | filecheck %s --check-prefix=CHECK-NODEBUG
+;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wast
;; RUN: cat %t.text.wast | filecheck %s --check-prefix=CHECK-TEXT
+;; RUN: cat %t.bin.wast | filecheck %s --check-prefix=CHECK-BIN
+;; RUN: cat %t.bin.nodebug.wast | filecheck %s --check-prefix=CHECK-BIN-NODEBUG
(module
- ;; CHECK-BINARY: (type $0 (func))
-
- ;; CHECK-BINARY: (type $1 (func (result i32)))
-
- ;; CHECK-BINARY: (type $2 (func (param i32) (result i32)))
-
- ;; CHECK-BINARY: (type $3 (func (param i32 funcref i32)))
-
- ;; CHECK-BINARY: (type $4 (func (param i32 i32 i32)))
-
- ;; CHECK-BINARY: (table $table-1 1 1 funcref)
;; CHECK-TEXT: (type $0 (func))
;; CHECK-TEXT: (type $1 (func (result i32)))
@@ -32,23 +21,27 @@
;; CHECK-TEXT: (type $4 (func (param i32 i32 i32)))
;; CHECK-TEXT: (table $table-1 1 1 funcref)
+ ;; CHECK-BIN: (type $0 (func))
+
+ ;; CHECK-BIN: (type $1 (func (result i32)))
+
+ ;; CHECK-BIN: (type $2 (func (param i32) (result i32)))
+
+ ;; CHECK-BIN: (type $3 (func (param i32 funcref i32)))
+
+ ;; CHECK-BIN: (type $4 (func (param i32 i32 i32)))
+
+ ;; CHECK-BIN: (table $table-1 1 1 funcref)
(table $table-1 funcref
(elem $foo)
)
- ;; CHECK-BINARY: (table $table-2 3 3 funcref)
;; CHECK-TEXT: (table $table-2 3 3 funcref)
+ ;; CHECK-BIN: (table $table-2 3 3 funcref)
(table $table-2 funcref
(elem $bar $bar $bar)
)
- ;; CHECK-BINARY: (elem $0 (table $table-1) (i32.const 0) func $foo)
-
- ;; CHECK-BINARY: (elem $1 (table $table-2) (i32.const 0) func $bar $bar $bar)
-
- ;; CHECK-BINARY: (func $foo (type $0)
- ;; CHECK-BINARY-NEXT: (nop)
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (elem $0 (table $table-1) (i32.const 0) func $foo)
;; CHECK-TEXT: (elem $1 (table $table-2) (i32.const 0) func $bar $bar $bar)
@@ -56,21 +49,17 @@
;; CHECK-TEXT: (func $foo (type $0)
;; CHECK-TEXT-NEXT: (nop)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (elem $0 (table $table-1) (i32.const 0) func $foo)
+
+ ;; CHECK-BIN: (elem $1 (table $table-2) (i32.const 0) func $bar $bar $bar)
+
+ ;; CHECK-BIN: (func $foo (type $0)
+ ;; CHECK-BIN-NEXT: (nop)
+ ;; CHECK-BIN-NEXT: )
(func $foo
(nop)
)
- ;; CHECK-BINARY: (func $bar (type $0)
- ;; CHECK-BINARY-NEXT: (drop
- ;; CHECK-BINARY-NEXT: (table.get $table-1
- ;; CHECK-BINARY-NEXT: (i32.const 0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (drop
- ;; CHECK-BINARY-NEXT: (table.get $table-2
- ;; CHECK-BINARY-NEXT: (i32.const 100)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $bar (type $0)
;; CHECK-TEXT-NEXT: (drop
;; CHECK-TEXT-NEXT: (table.get $table-1
@@ -83,6 +72,18 @@
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $bar (type $0)
+ ;; CHECK-BIN-NEXT: (drop
+ ;; CHECK-BIN-NEXT: (table.get $table-1
+ ;; CHECK-BIN-NEXT: (i32.const 0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (drop
+ ;; CHECK-BIN-NEXT: (table.get $table-2
+ ;; CHECK-BIN-NEXT: (i32.const 100)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $bar
(drop
(table.get $table-1
@@ -96,17 +97,6 @@
)
)
- ;; CHECK-BINARY: (func $set-get (type $0)
- ;; CHECK-BINARY-NEXT: (table.set $table-1
- ;; CHECK-BINARY-NEXT: (i32.const 0)
- ;; CHECK-BINARY-NEXT: (ref.func $foo)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (drop
- ;; CHECK-BINARY-NEXT: (table.get $table-1
- ;; CHECK-BINARY-NEXT: (i32.const 0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $set-get (type $0)
;; CHECK-TEXT-NEXT: (table.set $table-1
;; CHECK-TEXT-NEXT: (i32.const 0)
@@ -118,6 +108,17 @@
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $set-get (type $0)
+ ;; CHECK-BIN-NEXT: (table.set $table-1
+ ;; CHECK-BIN-NEXT: (i32.const 0)
+ ;; CHECK-BIN-NEXT: (ref.func $foo)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (drop
+ ;; CHECK-BIN-NEXT: (table.get $table-1
+ ;; CHECK-BIN-NEXT: (i32.const 0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $set-get
(table.set $table-1
(i32.const 0)
@@ -130,39 +131,32 @@
)
)
- ;; CHECK-BINARY: (func $get-table-size (type $1) (result i32)
- ;; CHECK-BINARY-NEXT: (table.size $table-1)
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $get-table-size (type $1) (result i32)
;; CHECK-TEXT-NEXT: (table.size $table-1)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $get-table-size (type $1) (result i32)
+ ;; CHECK-BIN-NEXT: (table.size $table-1)
+ ;; CHECK-BIN-NEXT: )
(func $get-table-size (result i32)
(table.size $table-1)
)
- ;; CHECK-BINARY: (func $table-grow (type $2) (param $sz i32) (result i32)
- ;; CHECK-BINARY-NEXT: (table.grow $table-1
- ;; CHECK-BINARY-NEXT: (ref.null nofunc)
- ;; CHECK-BINARY-NEXT: (local.get $sz)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $table-grow (type $2) (param $sz i32) (result i32)
;; CHECK-TEXT-NEXT: (table.grow $table-1
;; CHECK-TEXT-NEXT: (ref.null nofunc)
;; CHECK-TEXT-NEXT: (local.get $sz)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $table-grow (type $2) (param $sz i32) (result i32)
+ ;; CHECK-BIN-NEXT: (table.grow $table-1
+ ;; CHECK-BIN-NEXT: (ref.null nofunc)
+ ;; CHECK-BIN-NEXT: (local.get $sz)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $table-grow (param $sz i32) (result i32)
(table.grow $table-1 (ref.null func) (local.get $sz))
)
- ;; CHECK-BINARY: (func $table-fill (type $3) (param $dest i32) (param $value funcref) (param $size i32)
- ;; CHECK-BINARY-NEXT: (table.fill $table-1
- ;; CHECK-BINARY-NEXT: (local.get $dest)
- ;; CHECK-BINARY-NEXT: (local.get $value)
- ;; CHECK-BINARY-NEXT: (local.get $size)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $table-fill (type $3) (param $dest i32) (param $value funcref) (param $size i32)
;; CHECK-TEXT-NEXT: (table.fill $table-1
;; CHECK-TEXT-NEXT: (local.get $dest)
@@ -170,6 +164,13 @@
;; CHECK-TEXT-NEXT: (local.get $size)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $table-fill (type $3) (param $dest i32) (param $value funcref) (param $size i32)
+ ;; CHECK-BIN-NEXT: (table.fill $table-1
+ ;; CHECK-BIN-NEXT: (local.get $dest)
+ ;; CHECK-BIN-NEXT: (local.get $value)
+ ;; CHECK-BIN-NEXT: (local.get $size)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $table-fill (param $dest i32) (param $value funcref) (param $size i32)
(table.fill $table-1
(local.get $dest)
@@ -178,13 +179,6 @@
)
)
- ;; CHECK-BINARY: (func $table-copy (type $4) (param $dest i32) (param $source i32) (param $size i32)
- ;; CHECK-BINARY-NEXT: (table.copy $table-1 $table-2
- ;; CHECK-BINARY-NEXT: (local.get $dest)
- ;; CHECK-BINARY-NEXT: (local.get $source)
- ;; CHECK-BINARY-NEXT: (local.get $size)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (func $table-copy (type $4) (param $dest i32) (param $source i32) (param $size i32)
;; CHECK-TEXT-NEXT: (table.copy $table-1 $table-2
;; CHECK-TEXT-NEXT: (local.get $dest)
@@ -192,6 +186,13 @@
;; CHECK-TEXT-NEXT: (local.get $size)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $table-copy (type $4) (param $dest i32) (param $source i32) (param $size i32)
+ ;; CHECK-BIN-NEXT: (table.copy $table-1 $table-2
+ ;; CHECK-BIN-NEXT: (local.get $dest)
+ ;; CHECK-BIN-NEXT: (local.get $source)
+ ;; CHECK-BIN-NEXT: (local.get $size)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $table-copy (param $dest i32) (param $source i32) (param $size i32)
(table.copy $table-1 $table-2
(local.get $dest)
@@ -200,76 +201,76 @@
)
)
)
-;; CHECK-NODEBUG: (type $0 (func))
-
-;; CHECK-NODEBUG: (type $1 (func (result i32)))
-
-;; CHECK-NODEBUG: (type $2 (func (param i32) (result i32)))
-
-;; CHECK-NODEBUG: (type $3 (func (param i32 funcref i32)))
-
-;; CHECK-NODEBUG: (type $4 (func (param i32 i32 i32)))
-
-;; CHECK-NODEBUG: (table $0 1 1 funcref)
-
-;; CHECK-NODEBUG: (table $1 3 3 funcref)
-
-;; CHECK-NODEBUG: (elem $0 (table $0) (i32.const 0) func $0)
-
-;; CHECK-NODEBUG: (elem $1 (table $1) (i32.const 0) func $1 $1 $1)
-
-;; CHECK-NODEBUG: (func $0 (type $0)
-;; CHECK-NODEBUG-NEXT: (nop)
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $1 (type $0)
-;; CHECK-NODEBUG-NEXT: (drop
-;; CHECK-NODEBUG-NEXT: (table.get $0
-;; CHECK-NODEBUG-NEXT: (i32.const 0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (drop
-;; CHECK-NODEBUG-NEXT: (table.get $1
-;; CHECK-NODEBUG-NEXT: (i32.const 100)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $2 (type $0)
-;; CHECK-NODEBUG-NEXT: (table.set $0
-;; CHECK-NODEBUG-NEXT: (i32.const 0)
-;; CHECK-NODEBUG-NEXT: (ref.func $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (drop
-;; CHECK-NODEBUG-NEXT: (table.get $0
-;; CHECK-NODEBUG-NEXT: (i32.const 0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $3 (type $1) (result i32)
-;; CHECK-NODEBUG-NEXT: (table.size $0)
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $4 (type $2) (param $0 i32) (result i32)
-;; CHECK-NODEBUG-NEXT: (table.grow $0
-;; CHECK-NODEBUG-NEXT: (ref.null nofunc)
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $5 (type $3) (param $0 i32) (param $1 funcref) (param $2 i32)
-;; CHECK-NODEBUG-NEXT: (table.fill $0
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $6 (type $4) (param $0 i32) (param $1 i32) (param $2 i32)
-;; CHECK-NODEBUG-NEXT: (table.copy $0 $1
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG: (type $0 (func))
+
+;; CHECK-BIN-NODEBUG: (type $1 (func (result i32)))
+
+;; CHECK-BIN-NODEBUG: (type $2 (func (param i32) (result i32)))
+
+;; CHECK-BIN-NODEBUG: (type $3 (func (param i32 funcref i32)))
+
+;; CHECK-BIN-NODEBUG: (type $4 (func (param i32 i32 i32)))
+
+;; CHECK-BIN-NODEBUG: (table $0 1 1 funcref)
+
+;; CHECK-BIN-NODEBUG: (table $1 3 3 funcref)
+
+;; CHECK-BIN-NODEBUG: (elem $0 (table $0) (i32.const 0) func $0)
+
+;; CHECK-BIN-NODEBUG: (elem $1 (table $1) (i32.const 0) func $1 $1 $1)
+
+;; CHECK-BIN-NODEBUG: (func $0 (type $0)
+;; CHECK-BIN-NODEBUG-NEXT: (nop)
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $1 (type $0)
+;; CHECK-BIN-NODEBUG-NEXT: (drop
+;; CHECK-BIN-NODEBUG-NEXT: (table.get $0
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (drop
+;; CHECK-BIN-NODEBUG-NEXT: (table.get $1
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 100)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $2 (type $0)
+;; CHECK-BIN-NODEBUG-NEXT: (table.set $0
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0)
+;; CHECK-BIN-NODEBUG-NEXT: (ref.func $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (drop
+;; CHECK-BIN-NODEBUG-NEXT: (table.get $0
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $3 (type $1) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (table.size $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $4 (type $2) (param $0 i32) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (table.grow $0
+;; CHECK-BIN-NODEBUG-NEXT: (ref.null nofunc)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $5 (type $3) (param $0 i32) (param $1 funcref) (param $2 i32)
+;; CHECK-BIN-NODEBUG-NEXT: (table.fill $0
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $6 (type $4) (param $0 i32) (param $1 i32) (param $2 i32)
+;; CHECK-BIN-NODEBUG-NEXT: (table.copy $0 $1
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
diff --git a/test/lit/basic/typed_continuations.wast b/test/lit/basic/typed_continuations.wast
index 36797f745..998837817 100644
--- a/test/lit/basic/typed_continuations.wast
+++ b/test/lit/basic/typed_continuations.wast
@@ -1,42 +1,42 @@
;; 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.wast -g -S
;; RUN: wasm-as %s -all -g -o %t.wasm
-;; RUN: wasm-dis %t.wasm -all -o %t.wast
+;; RUN: wasm-dis %t.wasm -all -o %t.bin.wast
;; RUN: wasm-as %s -all -o %t.nodebug.wasm
-;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.nodebug.wast
-;; RUN: wasm-opt %t.wast -all -o %t.text.wast -g -S
-;; RUN: cat %t.wast | filecheck %s --check-prefix=CHECK-BINARY
-;; RUN: cat %t.nodebug.wast | filecheck %s --check-prefix=CHECK-NODEBUG
+;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wast
;; RUN: cat %t.text.wast | filecheck %s --check-prefix=CHECK-TEXT
+;; RUN: cat %t.bin.wast | filecheck %s --check-prefix=CHECK-BIN
+;; RUN: cat %t.bin.nodebug.wast | filecheck %s --check-prefix=CHECK-BIN-NODEBUG
(module
- ;; CHECK-BINARY: (type $ft (func (param i32) (result i32)))
;; CHECK-TEXT: (type $ft (func (param i32) (result i32)))
+ ;; CHECK-BIN: (type $ft (func (param i32) (result i32)))
(type $ft (func (param i32) (result i32)))
- ;; CHECK-BINARY: (type $ct (cont $ft))
;; CHECK-TEXT: (type $ct (cont $ft))
+ ;; CHECK-BIN: (type $ct (cont $ft))
(type $ct (cont $ft))
- ;; CHECK-BINARY: (type $2 (func (param (ref $ct)) (result (ref $ct))))
-
- ;; CHECK-BINARY: (func $id (type $2) (param $x (ref $ct)) (result (ref $ct))
- ;; CHECK-BINARY-NEXT: (local.get $x)
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (type $2 (func (param (ref $ct)) (result (ref $ct))))
;; CHECK-TEXT: (func $id (type $2) (param $x (ref $ct)) (result (ref $ct))
;; CHECK-TEXT-NEXT: (local.get $x)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (type $2 (func (param (ref $ct)) (result (ref $ct))))
+
+ ;; CHECK-BIN: (func $id (type $2) (param $x (ref $ct)) (result (ref $ct))
+ ;; CHECK-BIN-NEXT: (local.get $x)
+ ;; CHECK-BIN-NEXT: )
(func $id (param $x (ref $ct)) (result (ref $ct))
(local.get $x)
)
)
-;; CHECK-NODEBUG: (type $0 (func (param i32) (result i32)))
+;; CHECK-BIN-NODEBUG: (type $0 (func (param i32) (result i32)))
-;; CHECK-NODEBUG: (type $1 (cont $0))
+;; CHECK-BIN-NODEBUG: (type $1 (cont $0))
-;; CHECK-NODEBUG: (type $2 (func (param (ref $1)) (result (ref $1))))
+;; CHECK-BIN-NODEBUG: (type $2 (func (param (ref $1)) (result (ref $1))))
-;; CHECK-NODEBUG: (func $0 (type $2) (param $0 (ref $1)) (result (ref $1))
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG: (func $0 (type $2) (param $0 (ref $1)) (result (ref $1))
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
diff --git a/test/lit/basic/types-function-references.wast b/test/lit/basic/types-function-references.wast
index 9479c93b3..4bff6cbb9 100644
--- a/test/lit/basic/types-function-references.wast
+++ b/test/lit/basic/types-function-references.wast
@@ -1,40 +1,26 @@
;; 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.wast -g -S
;; RUN: wasm-as %s -all -g -o %t.wasm
-;; RUN: wasm-dis %t.wasm -all -o %t.wast
+;; RUN: wasm-dis %t.wasm -all -o %t.bin.wast
;; RUN: wasm-as %s -all -o %t.nodebug.wasm
-;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.nodebug.wast
-;; RUN: wasm-opt %t.wast -all -o %t.text.wast -g -S
-;; RUN: cat %t.wast | filecheck %s --check-prefix=CHECK-BINARY
-;; RUN: cat %t.nodebug.wast | filecheck %s --check-prefix=CHECK-NODEBUG
+;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wast
;; RUN: cat %t.text.wast | filecheck %s --check-prefix=CHECK-TEXT
+;; RUN: cat %t.bin.wast | filecheck %s --check-prefix=CHECK-BIN
+;; RUN: cat %t.bin.nodebug.wast | filecheck %s --check-prefix=CHECK-BIN-NODEBUG
(module
- ;; CHECK-BINARY: (type $mixed_results (func (result anyref f32 anyref f32)))
-
- ;; CHECK-BINARY: (type $void (func))
- ;; CHECK-TEXT: (type $mixed_results (func (result anyref f32 anyref f32)))
-
;; CHECK-TEXT: (type $void (func))
- (type $void (func))
+ ;; CHECK-BIN: (type $mixed_results (func (result anyref f32 anyref f32)))
+ ;; CHECK-BIN: (type $void (func))
+ (type $void (func))
;; inline ref type in result
(type $_=>_eqref (func (result eqref)))
- ;; CHECK-BINARY: (type $i32-i32 (func (param i32) (result i32)))
-
- ;; CHECK-BINARY: (type $3 (func (result i32 (ref null $mixed_results) f64)))
-
- ;; CHECK-BINARY: (type $4 (func (param (ref $i32-i32)) (result i32)))
-
- ;; CHECK-BINARY: (type $5 (func (param (ref null $i32-i32)) (result i32)))
-
- ;; CHECK-BINARY: (type $6 (func (result i32)))
-
- ;; CHECK-BINARY: (type $=>eqref (func (result eqref)))
-
- ;; CHECK-BINARY: (type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null $=>eqref))))
;; CHECK-TEXT: (type $i32-i32 (func (param i32) (result i32)))
+ ;; CHECK-TEXT: (type $mixed_results (func (result anyref f32 anyref f32)))
+
;; CHECK-TEXT: (type $3 (func (result i32 (ref null $mixed_results) f64)))
;; CHECK-TEXT: (type $4 (func (param (ref $i32-i32)) (result i32)))
@@ -46,24 +32,27 @@
;; CHECK-TEXT: (type $=>eqref (func (result eqref)))
;; CHECK-TEXT: (type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null $=>eqref))))
+ ;; CHECK-BIN: (type $i32-i32 (func (param i32) (result i32)))
+
+ ;; CHECK-BIN: (type $3 (func (result i32 (ref null $mixed_results) f64)))
+
+ ;; CHECK-BIN: (type $4 (func (param (ref $i32-i32)) (result i32)))
+
+ ;; CHECK-BIN: (type $5 (func (param (ref null $i32-i32)) (result i32)))
+
+ ;; CHECK-BIN: (type $6 (func (result i32)))
+
+ ;; CHECK-BIN: (type $=>eqref (func (result eqref)))
+
+ ;; CHECK-BIN: (type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null $=>eqref))))
(type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null $_=>_eqref))))
(type $=>eqref (func (result eqref)))
- ;; CHECK-BINARY: (type $=>anyref (func (result anyref)))
;; CHECK-TEXT: (type $=>anyref (func (result anyref)))
+ ;; CHECK-BIN: (type $=>anyref (func (result anyref)))
(type $=>anyref (func (result anyref)))
(type $mixed_results (func (result anyref f32 anyref f32)))
-
(type $i32-i32 (func (param i32) (result i32)))
- ;; CHECK-BINARY: (type $10 (func (param (ref null $mixed_results))))
-
- ;; CHECK-BINARY: (elem declare func $call-ref $call-ref-more)
-
- ;; CHECK-BINARY: (func $call-ref (type $void)
- ;; CHECK-BINARY-NEXT: (call_ref $void
- ;; CHECK-BINARY-NEXT: (ref.func $call-ref)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
;; CHECK-TEXT: (type $10 (func (param (ref null $mixed_results))))
;; CHECK-TEXT: (elem declare func $call-ref $call-ref-more)
@@ -73,77 +62,81 @@
;; CHECK-TEXT-NEXT: (ref.func $call-ref)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (type $10 (func (param (ref null $mixed_results))))
+
+ ;; CHECK-BIN: (elem declare func $call-ref $call-ref-more)
+
+ ;; CHECK-BIN: (func $call-ref (type $void)
+ ;; CHECK-BIN-NEXT: (call_ref $void
+ ;; CHECK-BIN-NEXT: (ref.func $call-ref)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $call-ref
(call_ref $void (ref.func $call-ref))
)
- ;; CHECK-BINARY: (func $return-call-ref (type $void)
- ;; CHECK-BINARY-NEXT: (return_call_ref $void
- ;; CHECK-BINARY-NEXT: (ref.func $call-ref)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $return-call-ref (type $void)
;; CHECK-TEXT-NEXT: (return_call_ref $void
;; CHECK-TEXT-NEXT: (ref.func $call-ref)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $return-call-ref (type $void)
+ ;; CHECK-BIN-NEXT: (return_call_ref $void
+ ;; CHECK-BIN-NEXT: (ref.func $call-ref)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $return-call-ref
(return_call_ref $void (ref.func $call-ref))
)
- ;; CHECK-BINARY: (func $call-ref-more (type $i32-i32) (param $0 i32) (result i32)
- ;; CHECK-BINARY-NEXT: (call_ref $i32-i32
- ;; CHECK-BINARY-NEXT: (i32.const 42)
- ;; CHECK-BINARY-NEXT: (ref.func $call-ref-more)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $call-ref-more (type $i32-i32) (param $0 i32) (result i32)
;; CHECK-TEXT-NEXT: (call_ref $i32-i32
;; CHECK-TEXT-NEXT: (i32.const 42)
;; CHECK-TEXT-NEXT: (ref.func $call-ref-more)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $call-ref-more (type $i32-i32) (param $0 i32) (result i32)
+ ;; CHECK-BIN-NEXT: (call_ref $i32-i32
+ ;; CHECK-BIN-NEXT: (i32.const 42)
+ ;; CHECK-BIN-NEXT: (ref.func $call-ref-more)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $call-ref-more (param i32) (result i32)
(call_ref $i32-i32 (i32.const 42) (ref.func $call-ref-more))
)
- ;; CHECK-BINARY: (func $call_from-param (type $4) (param $f (ref $i32-i32)) (result i32)
- ;; CHECK-BINARY-NEXT: (call_ref $i32-i32
- ;; CHECK-BINARY-NEXT: (i32.const 42)
- ;; CHECK-BINARY-NEXT: (local.get $f)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $call_from-param (type $4) (param $f (ref $i32-i32)) (result i32)
;; CHECK-TEXT-NEXT: (call_ref $i32-i32
;; CHECK-TEXT-NEXT: (i32.const 42)
;; CHECK-TEXT-NEXT: (local.get $f)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $call_from-param (type $4) (param $f (ref $i32-i32)) (result i32)
+ ;; CHECK-BIN-NEXT: (call_ref $i32-i32
+ ;; CHECK-BIN-NEXT: (i32.const 42)
+ ;; CHECK-BIN-NEXT: (local.get $f)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $call_from-param (param $f (ref $i32-i32)) (result i32)
(call_ref $i32-i32 (i32.const 42) (local.get $f))
)
- ;; CHECK-BINARY: (func $call_from-param-null (type $5) (param $f (ref null $i32-i32)) (result i32)
- ;; CHECK-BINARY-NEXT: (call_ref $i32-i32
- ;; CHECK-BINARY-NEXT: (i32.const 42)
- ;; CHECK-BINARY-NEXT: (local.get $f)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $call_from-param-null (type $5) (param $f (ref null $i32-i32)) (result i32)
;; CHECK-TEXT-NEXT: (call_ref $i32-i32
;; CHECK-TEXT-NEXT: (i32.const 42)
;; CHECK-TEXT-NEXT: (local.get $f)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $call_from-param-null (type $5) (param $f (ref null $i32-i32)) (result i32)
+ ;; CHECK-BIN-NEXT: (call_ref $i32-i32
+ ;; CHECK-BIN-NEXT: (i32.const 42)
+ ;; CHECK-BIN-NEXT: (local.get $f)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $call_from-param-null (param $f (ref null $i32-i32)) (result i32)
(call_ref $i32-i32 (i32.const 42) (local.get $f))
)
- ;; CHECK-BINARY: (func $call_from-local-null (type $6) (result i32)
- ;; CHECK-BINARY-NEXT: (local $f (ref null $i32-i32))
- ;; CHECK-BINARY-NEXT: (local.set $f
- ;; CHECK-BINARY-NEXT: (ref.func $call-ref-more)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (call_ref $i32-i32
- ;; CHECK-BINARY-NEXT: (i32.const 42)
- ;; CHECK-BINARY-NEXT: (local.get $f)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $call_from-local-null (type $6) (result i32)
;; CHECK-TEXT-NEXT: (local $f (ref null $i32-i32))
;; CHECK-TEXT-NEXT: (local.set $f
@@ -154,105 +147,88 @@
;; CHECK-TEXT-NEXT: (local.get $f)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $call_from-local-null (type $6) (result i32)
+ ;; CHECK-BIN-NEXT: (local $f (ref null $i32-i32))
+ ;; CHECK-BIN-NEXT: (local.set $f
+ ;; CHECK-BIN-NEXT: (ref.func $call-ref-more)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (call_ref $i32-i32
+ ;; CHECK-BIN-NEXT: (i32.const 42)
+ ;; CHECK-BIN-NEXT: (local.get $f)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $call_from-local-null (result i32)
(local $f (ref null $i32-i32))
(local.set $f (ref.func $call-ref-more))
(call_ref $i32-i32 (i32.const 42) (local.get $f))
)
- ;; CHECK-BINARY: (func $ref-in-sig (type $f64_=>_ref_null<_->_eqref>) (param $0 f64) (result (ref null $=>eqref))
- ;; CHECK-BINARY-NEXT: (ref.null nofunc)
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $ref-in-sig (type $f64_=>_ref_null<_->_eqref>) (param $0 f64) (result (ref null $=>eqref))
;; CHECK-TEXT-NEXT: (ref.null nofunc)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $ref-in-sig (type $f64_=>_ref_null<_->_eqref>) (param $0 f64) (result (ref null $=>eqref))
+ ;; CHECK-BIN-NEXT: (ref.null nofunc)
+ ;; CHECK-BIN-NEXT: )
(func $ref-in-sig (param $0 f64) (result (ref null $=>eqref))
(ref.null $=>eqref)
)
- ;; CHECK-BINARY: (func $type-only-in-tuple-local (type $void)
- ;; CHECK-BINARY-NEXT: (local $x i32)
- ;; CHECK-BINARY-NEXT: (local $1 f64)
- ;; CHECK-BINARY-NEXT: (local $2 (ref null $=>anyref))
- ;; CHECK-BINARY-NEXT: (nop)
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $type-only-in-tuple-local (type $void)
- ;; CHECK-TEXT-NEXT: (local $x i32)
- ;; CHECK-TEXT-NEXT: (local $1 f64)
- ;; CHECK-TEXT-NEXT: (local $2 (ref null $=>anyref))
+ ;; CHECK-TEXT-NEXT: (local $x (i32 (ref null $=>anyref) f64))
;; CHECK-TEXT-NEXT: (nop)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $type-only-in-tuple-local (type $void)
+ ;; CHECK-BIN-NEXT: (local $x i32)
+ ;; CHECK-BIN-NEXT: (local $1 f64)
+ ;; CHECK-BIN-NEXT: (local $2 (ref null $=>anyref))
+ ;; CHECK-BIN-NEXT: (nop)
+ ;; CHECK-BIN-NEXT: )
(func $type-only-in-tuple-local
(local $x (i32 (ref null $=>anyref) f64))
)
- ;; CHECK-BINARY: (func $type-only-in-tuple-block (type $void)
- ;; CHECK-BINARY-NEXT: (local $0 (i32 (ref null $mixed_results) f64))
- ;; CHECK-BINARY-NEXT: (local $1 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $2 i32)
- ;; CHECK-BINARY-NEXT: (local.set $0
- ;; CHECK-BINARY-NEXT: (block $label$1 (type $3) (result i32 (ref null $mixed_results) f64)
- ;; CHECK-BINARY-NEXT: (unreachable)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (drop
- ;; CHECK-BINARY-NEXT: (block (result i32)
- ;; CHECK-BINARY-NEXT: (local.set $2
- ;; CHECK-BINARY-NEXT: (tuple.extract 0
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (drop
- ;; CHECK-BINARY-NEXT: (block (result (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local.set $1
- ;; CHECK-BINARY-NEXT: (tuple.extract 1
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (drop
- ;; CHECK-BINARY-NEXT: (tuple.extract 2
- ;; CHECK-BINARY-NEXT: (local.get $0)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (local.get $1)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: (local.get $2)
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $type-only-in-tuple-block (type $void)
- ;; CHECK-TEXT-NEXT: (local $0 (i32 (ref null $mixed_results) f64))
- ;; CHECK-TEXT-NEXT: (local $1 (ref null $mixed_results))
- ;; CHECK-TEXT-NEXT: (local $2 i32)
- ;; CHECK-TEXT-NEXT: (local.set $0
- ;; CHECK-TEXT-NEXT: (block $label$1 (type $3) (result i32 (ref null $mixed_results) f64)
- ;; CHECK-TEXT-NEXT: (unreachable)
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: (drop
- ;; CHECK-TEXT-NEXT: (block (result i32)
- ;; CHECK-TEXT-NEXT: (local.set $2
- ;; CHECK-TEXT-NEXT: (tuple.extract 0
- ;; CHECK-TEXT-NEXT: (local.get $0)
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: (drop
- ;; CHECK-TEXT-NEXT: (block (result (ref null $mixed_results))
- ;; CHECK-TEXT-NEXT: (local.set $1
- ;; CHECK-TEXT-NEXT: (tuple.extract 1
- ;; CHECK-TEXT-NEXT: (local.get $0)
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: (drop
- ;; CHECK-TEXT-NEXT: (tuple.extract 2
- ;; CHECK-TEXT-NEXT: (local.get $0)
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: (local.get $1)
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: )
- ;; CHECK-TEXT-NEXT: (local.get $2)
+ ;; CHECK-TEXT-NEXT: (block $block (type $3) (result i32 (ref null $mixed_results) f64)
+ ;; CHECK-TEXT-NEXT: (unreachable)
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $type-only-in-tuple-block (type $void)
+ ;; CHECK-BIN-NEXT: (local $0 (i32 (ref null $mixed_results) f64))
+ ;; CHECK-BIN-NEXT: (local $1 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $2 i32)
+ ;; CHECK-BIN-NEXT: (local.set $0
+ ;; CHECK-BIN-NEXT: (block $label$1 (type $3) (result i32 (ref null $mixed_results) f64)
+ ;; CHECK-BIN-NEXT: (unreachable)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (drop
+ ;; CHECK-BIN-NEXT: (block (result i32)
+ ;; CHECK-BIN-NEXT: (local.set $2
+ ;; CHECK-BIN-NEXT: (tuple.extract 0
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (drop
+ ;; CHECK-BIN-NEXT: (block (result (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local.set $1
+ ;; CHECK-BIN-NEXT: (tuple.extract 1
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (drop
+ ;; CHECK-BIN-NEXT: (tuple.extract 2
+ ;; CHECK-BIN-NEXT: (local.get $0)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (local.get $1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (local.get $2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
(func $type-only-in-tuple-block
(drop
(block $block (result i32 (ref null $mixed_results) f64)
@@ -260,30 +236,31 @@
)
)
)
- ;; CHECK-BINARY: (func $ref-types-first (type $void)
- ;; CHECK-BINARY-NEXT: (local $r1 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $r2 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $r3 anyref)
- ;; CHECK-BINARY-NEXT: (local $r4 anyref)
- ;; CHECK-BINARY-NEXT: (local $r5 anyref)
- ;; CHECK-BINARY-NEXT: (local $r6 funcref)
- ;; CHECK-BINARY-NEXT: (local $i1 i32)
- ;; CHECK-BINARY-NEXT: (local $i2 i64)
- ;; CHECK-BINARY-NEXT: (local $i3 i64)
- ;; CHECK-BINARY-NEXT: (nop)
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $ref-types-first (type $void)
;; CHECK-TEXT-NEXT: (local $r1 (ref null $mixed_results))
;; CHECK-TEXT-NEXT: (local $r2 (ref null $mixed_results))
+ ;; CHECK-TEXT-NEXT: (local $i1 i32)
;; CHECK-TEXT-NEXT: (local $r3 anyref)
+ ;; CHECK-TEXT-NEXT: (local $i2 i64)
;; CHECK-TEXT-NEXT: (local $r4 anyref)
+ ;; CHECK-TEXT-NEXT: (local $i3 i64)
;; CHECK-TEXT-NEXT: (local $r5 anyref)
;; CHECK-TEXT-NEXT: (local $r6 funcref)
- ;; CHECK-TEXT-NEXT: (local $i1 i32)
- ;; CHECK-TEXT-NEXT: (local $i2 i64)
- ;; CHECK-TEXT-NEXT: (local $i3 i64)
;; CHECK-TEXT-NEXT: (nop)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $ref-types-first (type $void)
+ ;; CHECK-BIN-NEXT: (local $r1 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $r2 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $r3 anyref)
+ ;; CHECK-BIN-NEXT: (local $r4 anyref)
+ ;; CHECK-BIN-NEXT: (local $r5 anyref)
+ ;; CHECK-BIN-NEXT: (local $r6 funcref)
+ ;; CHECK-BIN-NEXT: (local $i1 i32)
+ ;; CHECK-BIN-NEXT: (local $i2 i64)
+ ;; CHECK-BIN-NEXT: (local $i3 i64)
+ ;; CHECK-BIN-NEXT: (nop)
+ ;; CHECK-BIN-NEXT: )
(func $ref-types-first
;; 6 reference types and 3 MVP types. The binary format should emit all the
;; reference types first since a reference type appears first. In addition,
@@ -299,30 +276,31 @@
(local $r5 anyref)
(local $r6 funcref)
)
- ;; CHECK-BINARY: (func $mvp-types-first (type $void)
- ;; CHECK-BINARY-NEXT: (local $i1 i32)
- ;; CHECK-BINARY-NEXT: (local $i2 i64)
- ;; CHECK-BINARY-NEXT: (local $i3 i64)
- ;; CHECK-BINARY-NEXT: (local $r1 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $r2 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $r3 anyref)
- ;; CHECK-BINARY-NEXT: (local $r4 anyref)
- ;; CHECK-BINARY-NEXT: (local $r5 anyref)
- ;; CHECK-BINARY-NEXT: (local $r6 funcref)
- ;; CHECK-BINARY-NEXT: (nop)
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $mvp-types-first (type $void)
;; CHECK-TEXT-NEXT: (local $i1 i32)
- ;; CHECK-TEXT-NEXT: (local $i2 i64)
- ;; CHECK-TEXT-NEXT: (local $i3 i64)
;; CHECK-TEXT-NEXT: (local $r1 (ref null $mixed_results))
;; CHECK-TEXT-NEXT: (local $r2 (ref null $mixed_results))
;; CHECK-TEXT-NEXT: (local $r3 anyref)
+ ;; CHECK-TEXT-NEXT: (local $i2 i64)
;; CHECK-TEXT-NEXT: (local $r4 anyref)
+ ;; CHECK-TEXT-NEXT: (local $i3 i64)
;; CHECK-TEXT-NEXT: (local $r5 anyref)
;; CHECK-TEXT-NEXT: (local $r6 funcref)
;; CHECK-TEXT-NEXT: (nop)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $mvp-types-first (type $void)
+ ;; CHECK-BIN-NEXT: (local $i1 i32)
+ ;; CHECK-BIN-NEXT: (local $i2 i64)
+ ;; CHECK-BIN-NEXT: (local $i3 i64)
+ ;; CHECK-BIN-NEXT: (local $r1 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $r2 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $r3 anyref)
+ ;; CHECK-BIN-NEXT: (local $r4 anyref)
+ ;; CHECK-BIN-NEXT: (local $r5 anyref)
+ ;; CHECK-BIN-NEXT: (local $r6 funcref)
+ ;; CHECK-BIN-NEXT: (nop)
+ ;; CHECK-BIN-NEXT: )
(func $mvp-types-first
;; Reversed from before, now an MVP type appears first, so they should all
;; be before reference types in the binary format.
@@ -336,30 +314,31 @@
(local $r5 anyref)
(local $r6 funcref)
)
- ;; CHECK-BINARY: (func $mvp-types-first-param (type $10) (param $r0 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $i1 i32)
- ;; CHECK-BINARY-NEXT: (local $i2 i64)
- ;; CHECK-BINARY-NEXT: (local $i3 i64)
- ;; CHECK-BINARY-NEXT: (local $r1 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $r2 (ref null $mixed_results))
- ;; CHECK-BINARY-NEXT: (local $r3 anyref)
- ;; CHECK-BINARY-NEXT: (local $r4 anyref)
- ;; CHECK-BINARY-NEXT: (local $r5 anyref)
- ;; CHECK-BINARY-NEXT: (local $r6 funcref)
- ;; CHECK-BINARY-NEXT: (nop)
- ;; CHECK-BINARY-NEXT: )
+
;; CHECK-TEXT: (func $mvp-types-first-param (type $10) (param $r0 (ref null $mixed_results))
;; CHECK-TEXT-NEXT: (local $i1 i32)
- ;; CHECK-TEXT-NEXT: (local $i2 i64)
- ;; CHECK-TEXT-NEXT: (local $i3 i64)
;; CHECK-TEXT-NEXT: (local $r1 (ref null $mixed_results))
;; CHECK-TEXT-NEXT: (local $r2 (ref null $mixed_results))
;; CHECK-TEXT-NEXT: (local $r3 anyref)
+ ;; CHECK-TEXT-NEXT: (local $i2 i64)
;; CHECK-TEXT-NEXT: (local $r4 anyref)
+ ;; CHECK-TEXT-NEXT: (local $i3 i64)
;; CHECK-TEXT-NEXT: (local $r5 anyref)
;; CHECK-TEXT-NEXT: (local $r6 funcref)
;; CHECK-TEXT-NEXT: (nop)
;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $mvp-types-first-param (type $10) (param $r0 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $i1 i32)
+ ;; CHECK-BIN-NEXT: (local $i2 i64)
+ ;; CHECK-BIN-NEXT: (local $i3 i64)
+ ;; CHECK-BIN-NEXT: (local $r1 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $r2 (ref null $mixed_results))
+ ;; CHECK-BIN-NEXT: (local $r3 anyref)
+ ;; CHECK-BIN-NEXT: (local $r4 anyref)
+ ;; CHECK-BIN-NEXT: (local $r5 anyref)
+ ;; CHECK-BIN-NEXT: (local $r6 funcref)
+ ;; CHECK-BIN-NEXT: (nop)
+ ;; CHECK-BIN-NEXT: )
(func $mvp-types-first-param (param $r0 (ref null $mixed_results))
;; As before, but now there is a reference type *parameter*. We should
;; ignore that and sort as in the last function.
@@ -374,156 +353,156 @@
(local $r6 funcref)
)
)
-;; CHECK-NODEBUG: (type $0 (func (result anyref f32 anyref f32)))
-
-;; CHECK-NODEBUG: (type $1 (func))
-
-;; CHECK-NODEBUG: (type $2 (func (param i32) (result i32)))
-
-;; CHECK-NODEBUG: (type $3 (func (result i32 (ref null $0) f64)))
-
-;; CHECK-NODEBUG: (type $4 (func (param (ref $2)) (result i32)))
-
-;; CHECK-NODEBUG: (type $5 (func (param (ref null $2)) (result i32)))
-
-;; CHECK-NODEBUG: (type $6 (func (result i32)))
-
-;; CHECK-NODEBUG: (type $7 (func (result eqref)))
-
-;; CHECK-NODEBUG: (type $8 (func (param f64) (result (ref null $7))))
-
-;; CHECK-NODEBUG: (type $9 (func (result anyref)))
-
-;; CHECK-NODEBUG: (type $10 (func (param (ref null $0))))
-
-;; CHECK-NODEBUG: (elem declare func $0 $2)
-
-;; CHECK-NODEBUG: (func $0 (type $1)
-;; CHECK-NODEBUG-NEXT: (call_ref $1
-;; CHECK-NODEBUG-NEXT: (ref.func $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $1 (type $1)
-;; CHECK-NODEBUG-NEXT: (return_call_ref $1
-;; CHECK-NODEBUG-NEXT: (ref.func $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $2 (type $2) (param $0 i32) (result i32)
-;; CHECK-NODEBUG-NEXT: (call_ref $2
-;; CHECK-NODEBUG-NEXT: (i32.const 42)
-;; CHECK-NODEBUG-NEXT: (ref.func $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $3 (type $4) (param $0 (ref $2)) (result i32)
-;; CHECK-NODEBUG-NEXT: (call_ref $2
-;; CHECK-NODEBUG-NEXT: (i32.const 42)
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $4 (type $5) (param $0 (ref null $2)) (result i32)
-;; CHECK-NODEBUG-NEXT: (call_ref $2
-;; CHECK-NODEBUG-NEXT: (i32.const 42)
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $5 (type $6) (result i32)
-;; CHECK-NODEBUG-NEXT: (local $0 (ref null $2))
-;; CHECK-NODEBUG-NEXT: (local.set $0
-;; CHECK-NODEBUG-NEXT: (ref.func $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (call_ref $2
-;; CHECK-NODEBUG-NEXT: (i32.const 42)
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $6 (type $8) (param $0 f64) (result (ref null $7))
-;; CHECK-NODEBUG-NEXT: (ref.null nofunc)
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $7 (type $1)
-;; CHECK-NODEBUG-NEXT: (local $0 i32)
-;; CHECK-NODEBUG-NEXT: (local $1 f64)
-;; CHECK-NODEBUG-NEXT: (local $2 (ref null $9))
-;; CHECK-NODEBUG-NEXT: (nop)
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $8 (type $1)
-;; CHECK-NODEBUG-NEXT: (local $0 (i32 (ref null $0) f64))
-;; CHECK-NODEBUG-NEXT: (local $1 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $2 i32)
-;; CHECK-NODEBUG-NEXT: (local.set $0
-;; CHECK-NODEBUG-NEXT: (block $label$1 (type $3) (result i32 (ref null $0) f64)
-;; CHECK-NODEBUG-NEXT: (unreachable)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (drop
-;; CHECK-NODEBUG-NEXT: (block (result i32)
-;; CHECK-NODEBUG-NEXT: (local.set $2
-;; CHECK-NODEBUG-NEXT: (tuple.extract 0
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (drop
-;; CHECK-NODEBUG-NEXT: (block (result (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local.set $1
-;; CHECK-NODEBUG-NEXT: (tuple.extract 1
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (drop
-;; CHECK-NODEBUG-NEXT: (tuple.extract 2
-;; CHECK-NODEBUG-NEXT: (local.get $0)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (local.get $1)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: (local.get $2)
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $9 (type $1)
-;; CHECK-NODEBUG-NEXT: (local $0 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $1 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $2 anyref)
-;; CHECK-NODEBUG-NEXT: (local $3 anyref)
-;; CHECK-NODEBUG-NEXT: (local $4 anyref)
-;; CHECK-NODEBUG-NEXT: (local $5 funcref)
-;; CHECK-NODEBUG-NEXT: (local $6 i32)
-;; CHECK-NODEBUG-NEXT: (local $7 i64)
-;; CHECK-NODEBUG-NEXT: (local $8 i64)
-;; CHECK-NODEBUG-NEXT: (nop)
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $10 (type $1)
-;; CHECK-NODEBUG-NEXT: (local $0 i32)
-;; CHECK-NODEBUG-NEXT: (local $1 i64)
-;; CHECK-NODEBUG-NEXT: (local $2 i64)
-;; CHECK-NODEBUG-NEXT: (local $3 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $4 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $5 anyref)
-;; CHECK-NODEBUG-NEXT: (local $6 anyref)
-;; CHECK-NODEBUG-NEXT: (local $7 anyref)
-;; CHECK-NODEBUG-NEXT: (local $8 funcref)
-;; CHECK-NODEBUG-NEXT: (nop)
-;; CHECK-NODEBUG-NEXT: )
-
-;; CHECK-NODEBUG: (func $11 (type $10) (param $0 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $1 i32)
-;; CHECK-NODEBUG-NEXT: (local $2 i64)
-;; CHECK-NODEBUG-NEXT: (local $3 i64)
-;; CHECK-NODEBUG-NEXT: (local $4 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $5 (ref null $0))
-;; CHECK-NODEBUG-NEXT: (local $6 anyref)
-;; CHECK-NODEBUG-NEXT: (local $7 anyref)
-;; CHECK-NODEBUG-NEXT: (local $8 anyref)
-;; CHECK-NODEBUG-NEXT: (local $9 funcref)
-;; CHECK-NODEBUG-NEXT: (nop)
-;; CHECK-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG: (type $0 (func (result anyref f32 anyref f32)))
+
+;; CHECK-BIN-NODEBUG: (type $1 (func))
+
+;; CHECK-BIN-NODEBUG: (type $2 (func (param i32) (result i32)))
+
+;; CHECK-BIN-NODEBUG: (type $3 (func (result i32 (ref null $0) f64)))
+
+;; CHECK-BIN-NODEBUG: (type $4 (func (param (ref $2)) (result i32)))
+
+;; CHECK-BIN-NODEBUG: (type $5 (func (param (ref null $2)) (result i32)))
+
+;; CHECK-BIN-NODEBUG: (type $6 (func (result i32)))
+
+;; CHECK-BIN-NODEBUG: (type $7 (func (result eqref)))
+
+;; CHECK-BIN-NODEBUG: (type $8 (func (param f64) (result (ref null $7))))
+
+;; CHECK-BIN-NODEBUG: (type $9 (func (result anyref)))
+
+;; CHECK-BIN-NODEBUG: (type $10 (func (param (ref null $0))))
+
+;; CHECK-BIN-NODEBUG: (elem declare func $0 $2)
+
+;; CHECK-BIN-NODEBUG: (func $0 (type $1)
+;; CHECK-BIN-NODEBUG-NEXT: (call_ref $1
+;; CHECK-BIN-NODEBUG-NEXT: (ref.func $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $1 (type $1)
+;; CHECK-BIN-NODEBUG-NEXT: (return_call_ref $1
+;; CHECK-BIN-NODEBUG-NEXT: (ref.func $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $2 (type $2) (param $0 i32) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (call_ref $2
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 42)
+;; CHECK-BIN-NODEBUG-NEXT: (ref.func $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $3 (type $4) (param $0 (ref $2)) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (call_ref $2
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 42)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $4 (type $5) (param $0 (ref null $2)) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (call_ref $2
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 42)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $5 (type $6) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local $0 (ref null $2))
+;; CHECK-BIN-NODEBUG-NEXT: (local.set $0
+;; CHECK-BIN-NODEBUG-NEXT: (ref.func $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (call_ref $2
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 42)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $6 (type $8) (param $0 f64) (result (ref null $7))
+;; CHECK-BIN-NODEBUG-NEXT: (ref.null nofunc)
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $7 (type $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local $0 i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local $1 f64)
+;; CHECK-BIN-NODEBUG-NEXT: (local $2 (ref null $9))
+;; CHECK-BIN-NODEBUG-NEXT: (nop)
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $8 (type $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local $0 (i32 (ref null $0) f64))
+;; CHECK-BIN-NODEBUG-NEXT: (local $1 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $2 i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local.set $0
+;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (type $3) (result i32 (ref null $0) f64)
+;; CHECK-BIN-NODEBUG-NEXT: (unreachable)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (drop
+;; CHECK-BIN-NODEBUG-NEXT: (block (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local.set $2
+;; CHECK-BIN-NODEBUG-NEXT: (tuple.extract 0
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (drop
+;; CHECK-BIN-NODEBUG-NEXT: (block (result (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local.set $1
+;; CHECK-BIN-NODEBUG-NEXT: (tuple.extract 1
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (drop
+;; CHECK-BIN-NODEBUG-NEXT: (tuple.extract 2
+;; 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-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $9 (type $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local $0 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $1 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $2 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $3 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $4 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $5 funcref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $6 i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local $7 i64)
+;; CHECK-BIN-NODEBUG-NEXT: (local $8 i64)
+;; CHECK-BIN-NODEBUG-NEXT: (nop)
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $10 (type $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local $0 i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local $1 i64)
+;; CHECK-BIN-NODEBUG-NEXT: (local $2 i64)
+;; CHECK-BIN-NODEBUG-NEXT: (local $3 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $4 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $5 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $6 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $7 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $8 funcref)
+;; CHECK-BIN-NODEBUG-NEXT: (nop)
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $11 (type $10) (param $0 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $1 i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local $2 i64)
+;; CHECK-BIN-NODEBUG-NEXT: (local $3 i64)
+;; CHECK-BIN-NODEBUG-NEXT: (local $4 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $5 (ref null $0))
+;; CHECK-BIN-NODEBUG-NEXT: (local $6 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $7 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $8 anyref)
+;; CHECK-BIN-NODEBUG-NEXT: (local $9 funcref)
+;; CHECK-BIN-NODEBUG-NEXT: (nop)
+;; CHECK-BIN-NODEBUG-NEXT: )