summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/spec/relaxed-simd/relaxed_min_max.wast.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/wasm/spec/relaxed-simd/relaxed_min_max.wast.js')
-rw-r--r--js/src/jit-test/tests/wasm/spec/relaxed-simd/relaxed_min_max.wast.js663
1 files changed, 663 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/spec/relaxed-simd/relaxed_min_max.wast.js b/js/src/jit-test/tests/wasm/spec/relaxed-simd/relaxed_min_max.wast.js
new file mode 100644
index 0000000000..ea1e75862a
--- /dev/null
+++ b/js/src/jit-test/tests/wasm/spec/relaxed-simd/relaxed_min_max.wast.js
@@ -0,0 +1,663 @@
+/* Copyright 2021 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:3
+let $0 = instantiate(`(module
+ (func (export "f32x4.relaxed_min") (param v128 v128) (result v128) (f32x4.relaxed_min (local.get 0) (local.get 1)))
+ (func (export "f32x4.relaxed_max") (param v128 v128) (result v128) (f32x4.relaxed_max (local.get 0) (local.get 1)))
+ (func (export "f64x2.relaxed_min") (param v128 v128) (result v128) (f64x2.relaxed_min (local.get 0) (local.get 1)))
+ (func (export "f64x2.relaxed_max") (param v128 v128) (result v128) (f64x2.relaxed_max (local.get 0) (local.get 1)))
+
+ (func (export "f32x4.relaxed_min_cmp") (param v128 v128) (result v128)
+ (i32x4.eq
+ (f32x4.relaxed_min (local.get 0) (local.get 1))
+ (f32x4.relaxed_min (local.get 0) (local.get 1))))
+ (func (export "f32x4.relaxed_max_cmp") (param v128 v128) (result v128)
+ (i32x4.eq
+ (f32x4.relaxed_max (local.get 0) (local.get 1))
+ (f32x4.relaxed_max (local.get 0) (local.get 1))))
+ (func (export "f64x2.relaxed_min_cmp") (param v128 v128) (result v128)
+ (i64x2.eq
+ (f64x2.relaxed_min (local.get 0) (local.get 1))
+ (f64x2.relaxed_min (local.get 0) (local.get 1))))
+ (func (export "f64x2.relaxed_max_cmp") (param v128 v128) (result v128)
+ (i64x2.eq
+ (f64x2.relaxed_max (local.get 0) (local.get 1))
+ (f64x2.relaxed_max (local.get 0) (local.get 1))))
+)`);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:27
+assert_return(
+ () => invoke($0, `f32x4.relaxed_min`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ ]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ ]),
+ ]),
+ [
+ either(
+ new F32x4Pattern(
+ `canonical_nan`,
+ `canonical_nan`,
+ `canonical_nan`,
+ `canonical_nan`,
+ ),
+ new F32x4Pattern(
+ `canonical_nan`,
+ `canonical_nan`,
+ value("f32", 0),
+ value("f32", 0),
+ ),
+ new F32x4Pattern(
+ value("f32", 0),
+ value("f32", 0),
+ `canonical_nan`,
+ `canonical_nan`,
+ ),
+ new F32x4Pattern(
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", 0),
+ ),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:35
+assert_return(
+ () => invoke($0, `f32x4.relaxed_min`, [f32x4([0, -0, 0, -0]), f32x4([-0, 0, 0, -0])]),
+ [
+ either(
+ new F32x4Pattern(
+ value("f32", -0),
+ value("f32", -0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ new F32x4Pattern(
+ value("f32", 0),
+ value("f32", -0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ new F32x4Pattern(
+ value("f32", -0),
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ new F32x4Pattern(
+ value("f32", -0),
+ value("f32", -0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:43
+assert_return(
+ () => invoke($0, `f32x4.relaxed_max`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ ]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ ]),
+ ]),
+ [
+ either(
+ new F32x4Pattern(
+ `canonical_nan`,
+ `canonical_nan`,
+ `canonical_nan`,
+ `canonical_nan`,
+ ),
+ new F32x4Pattern(
+ `canonical_nan`,
+ `canonical_nan`,
+ value("f32", 0),
+ value("f32", 0),
+ ),
+ new F32x4Pattern(
+ value("f32", 0),
+ value("f32", 0),
+ `canonical_nan`,
+ `canonical_nan`,
+ ),
+ new F32x4Pattern(
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", 0),
+ ),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:51
+assert_return(
+ () => invoke($0, `f32x4.relaxed_max`, [f32x4([0, -0, 0, -0]), f32x4([-0, 0, 0, -0])]),
+ [
+ either(
+ new F32x4Pattern(
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ new F32x4Pattern(
+ value("f32", 0),
+ value("f32", -0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ new F32x4Pattern(
+ value("f32", -0),
+ value("f32", 0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ new F32x4Pattern(
+ value("f32", -0),
+ value("f32", -0),
+ value("f32", 0),
+ value("f32", -0),
+ ),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:59
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ f64x2([0, 0]),
+ ]),
+ [
+ either(
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:67
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min`, [
+ f64x2([0, 0]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ ]),
+ [
+ either(
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:75
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min`, [f64x2([0, -0]), f64x2([-0, 0])]),
+ [
+ either(
+ new F64x2Pattern(value("f64", -0), value("f64", -0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", -0), value("f64", 0)),
+ new F64x2Pattern(value("f64", -0), value("f64", -0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:83
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min`, [f64x2([0, -0]), f64x2([0, -0])]),
+ [
+ either(
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:91
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ f64x2([0, 0]),
+ ]),
+ [
+ either(
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:99
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max`, [
+ f64x2([0, 0]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ ]),
+ [
+ either(
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ new F64x2Pattern(`canonical_nan`, `canonical_nan`),
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:107
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max`, [f64x2([0, -0]), f64x2([-0, 0])]),
+ [
+ either(
+ new F64x2Pattern(value("f64", 0), value("f64", 0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", -0), value("f64", 0)),
+ new F64x2Pattern(value("f64", -0), value("f64", -0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:115
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max`, [f64x2([0, -0]), f64x2([0, -0])]),
+ [
+ either(
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ new F64x2Pattern(value("f64", 0), value("f64", -0)),
+ ),
+ ],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:125
+assert_return(
+ () => invoke($0, `f32x4.relaxed_min_cmp`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ ]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ ]),
+ ]),
+ [i32x4([0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:130
+assert_return(
+ () => invoke($0, `f32x4.relaxed_min_cmp`, [
+ f32x4([0, -0, 0, -0]),
+ f32x4([-0, 0, 0, -0]),
+ ]),
+ [i32x4([0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:135
+assert_return(
+ () => invoke($0, `f32x4.relaxed_max_cmp`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ ]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0xc0,
+ 0x7f,
+ ]),
+ ]),
+ [i32x4([0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:140
+assert_return(
+ () => invoke($0, `f32x4.relaxed_max_cmp`, [
+ f32x4([0, -0, 0, -0]),
+ f32x4([-0, 0, 0, -0]),
+ ]),
+ [i32x4([0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:145
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min_cmp`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ f64x2([0, 0]),
+ ]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:150
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min_cmp`, [
+ f64x2([0, 0]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ ]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:155
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min_cmp`, [f64x2([0, -0]), f64x2([-0, 0])]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:160
+assert_return(
+ () => invoke($0, `f64x2.relaxed_min_cmp`, [f64x2([0, -0]), f64x2([0, -0])]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:165
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max_cmp`, [
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ f64x2([0, 0]),
+ ]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:170
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max_cmp`, [
+ f64x2([0, 0]),
+ bytes('v128', [
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0xff,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0xf8,
+ 0x7f,
+ ]),
+ ]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:175
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max_cmp`, [f64x2([0, -0]), f64x2([-0, 0])]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);
+
+// ./test/core/relaxed-simd/relaxed_min_max.wast:180
+assert_return(
+ () => invoke($0, `f64x2.relaxed_max_cmp`, [f64x2([0, -0]), f64x2([0, -0])]),
+ [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])],
+);