From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../tests/wasm/multi-value/block-validate.js | 266 +++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 js/src/jit-test/tests/wasm/multi-value/block-validate.js (limited to 'js/src/jit-test/tests/wasm/multi-value/block-validate.js') diff --git a/js/src/jit-test/tests/wasm/multi-value/block-validate.js b/js/src/jit-test/tests/wasm/multi-value/block-validate.js new file mode 100644 index 0000000000..7845c016e3 --- /dev/null +++ b/js/src/jit-test/tests/wasm/multi-value/block-validate.js @@ -0,0 +1,266 @@ +wasmValidateText(` + (module + (func (result i32) + (i32.add + (block (result i32 i32) + (i32.const 32) + (i32.const 10)))))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) (i32.const 10) + (block (param i32 i32) (result i32 i32)) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (block (param i32) (result i32 i32) + (i32.const 10)) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.add + (loop (result i32 i32) + (i32.const 32) + (i32.const 10)))))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) (i32.const 10) + (loop (param i32 i32) (result i32 i32)) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (loop (param i32) (result i32 i32) + (i32.const 10)) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.add + (block (result i32 i32) + (i32.const 32) + (i32.const 10) + (br 0)))))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (i32.const 10) + (block (param i32 i32) (result i32 i32) + (br 0)) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (block (param i32) (result i32 i32) + (i32.const 10) + (br 0)) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.add + (block (result i32 i32) + (i32.const 32) + (i32.const 10) + (block (param i32 i32) (result i32 i32) + (br 1))))))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (i32.const 10) + (block (param i32 i32) (result i32 i32) + (block (param i32 i32) (result i32 i32) + (br 1))) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (i32.const 10) + (block (param i32 i32) (result i32 i32) + (block (param i32 i32) (result i32 i32) + (br 0))) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (block (param i32) (result i32 i32) + (i32.const 10) + (block (param i32 i32) (result i32 i32) + (br 1))) + (i32.add)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (i32.const 10) + (i32.const 1) + (if (param i32 i32) (result i32) + (then (i32.add)) + (else (i32.sub)))))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (i32.const 10) + (i32.const 1) + (if (param i32 i32) (result i32 i32) + (then + (drop) + (drop) + (i32.const 10) + (i32.const 32))) + (i32.sub)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (i32.const 10) + (i32.const 1) + (if (param i32 i32) (result i32 i32) + (then (return))) + (i32.sub)))`); + +wasmValidateText(` + (module + (func (result i32) + (i32.const 32) + (i32.const 10) + (i32.const 1) + (if (param i32 i32) (result i32 i32) + (then) + (else (return))) + (i32.sub)))`); + +wasmValidateText(` + (module + (func (result i32) + (local $i i32) + (i32.const 0) ;; sum + (i32.const 10) ;; i + (loop $loop (param i32 i32) (result i32) + (local.tee $i) + (i32.add) ;; sum = i + sum + (i32.sub (local.get $i) (i32.const 1)) + (local.tee $i) + (local.get $i) + (br_if $loop (i32.eqz)) + (drop))))`); + +// Tests the encoding: with more than 64 function types, the block type encoded +// as an uleb will create a confusion with the valtype; an sleb is required. + +wasmValidateText(` + (module + ${(function () { + s = ""; + for ( let i=0; i < 64; i++ ) { + let t = []; + for ( let j=0; j < 6; j++ ) + t.push(i & (1 << j) ? "i32" : "f32"); + s += "(func (param " + t.join(" ") + "))\n"; + } + return s; + })()} + (func (result i32) + (i32.add + (block (result i32 i32) + (i32.const 32) + (i32.const 10)))))`); + +wasmValidateText(` + (module + (func (result i32) + (block $B (result i32 i32) + (br $B (i32.const 1) (i32.const 2)) + (i32.const 0x1337)) + (drop)))`); + +wasmValidateText(` + (module + (func (result i32) + (block $B (result i32 i32) + (i32.const 1) + (br $B (i32.const 2)) + (i32.const 0x1337)) + (drop)))`); + +wasmValidateText(` + (module + (func (result i32) + (block $B (result i32 i32) + (i32.const 1) + (i32.const 2) + (br $B) + (i32.const 0x1337)) + (drop)))`); + +wasmValidateText(` + (module + (func (param $cond i32) (result i32) + (block $B (result i32 i32) + (br_if $B (i32.const 1) (i32.const 2) (local.get $cond))) + (drop)))`); + +wasmValidateText(` + (module + (func (param $cond i32) (result i32) + (block $B (result i32 i32) + (i32.const 1) + (br_if $B (i32.const 2) (local.get $cond))) + (drop)))`); + +wasmValidateText(` + (module + (func (param $cond i32) (result i32) + (block $B (result i32 i32) + (i32.const 1) + (i32.const 2) + (br_if $B (local.get $cond))) + (drop)))`); + +wasmValidateText(` + (module + (func (param $cond i32) (result i32) + (block $B (result i32 i32) + (i32.const 1) + (i32.const 2) + (local.get $cond) + (br_if $B)) + (drop)))`); + +wasmValidateText(` + (module + (func (param $index i32) (result i32) + (block $OUT (result i32) + (block $B1 (result i32 i32) + (block $B2 (result i32 i32) + (block $B3 (result i32 i32) + (br_table $B1 $B2 $B3 (i32.const 1) (i32.const 2) (local.get $index))) + (br $OUT (i32.add))) + (br $OUT (i32.sub))) + (br $OUT (i32.mul)))))`); -- cgit v1.2.3