diff options
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.js | 663 |
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..9123d605d9 --- /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:4 +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:28 +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:36 +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:44 +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:52 +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:60 +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:68 +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:76 +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:84 +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:92 +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:100 +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:108 +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:116 +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:126 +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:131 +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:136 +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:141 +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:146 +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:151 +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:156 +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:161 +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:166 +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:171 +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:176 +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:181 +assert_return( + () => invoke($0, `f64x2.relaxed_max_cmp`, [f64x2([0, -0]), f64x2([0, -0])]), + [i64x2([0xffffffffffffffffn, 0xffffffffffffffffn])], +); |