| // Copyright 2020 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --experimental-wasm-simd |
| |
| load("test/mjsunit/wasm/wasm-module-builder.js"); |
| |
| (function TestS128InSignatureThrows() { |
| print(arguments.callee.name); |
| let builder = new WasmModuleBuilder(); |
| builder.addFunction('foo', kSig_s_i) |
| .addBody([ |
| kExprLocalGet, 0, |
| kSimdPrefix, |
| kExprI32x4Splat]) |
| .exportFunc() |
| const instance = builder.instantiate(); |
| assertThrows(() => instance.exports.foo(33), TypeError); |
| })(); |
| |
| (function TestS128ParamInSignatureThrows() { |
| print(arguments.callee.name); |
| let builder = new WasmModuleBuilder(); |
| builder.addFunction('foo', kSig_i_s) |
| .addBody([ |
| kExprLocalGet, 0, |
| kSimdPrefix, |
| kExprI32x4ExtractLane, 1]) |
| .exportFunc(); |
| const instance = builder.instantiate(); |
| assertThrows(() => instance.exports.foo(10), TypeError); |
| })(); |
| |
| (function TestImportS128Return() { |
| print(arguments.callee.name); |
| let builder = new WasmModuleBuilder(); |
| builder.addImport('', 'f', makeSig([], [kWasmS128])); |
| builder.addFunction('foo', kSig_v_v) |
| .addBody([kExprCallFunction, 0, kExprDrop]) |
| .exportFunc(); |
| const instance = builder.instantiate({'': {f: _ => 1}}); |
| assertThrows(() => instance.exports.foo(), TypeError); |
| })(); |
| |
| (function TestS128ImportThrows() { |
| print(arguments.callee.name); |
| let builder = new WasmModuleBuilder(); |
| let sig_index = builder.addType(kSig_i_i); |
| let sig_s128_index = builder.addType(kSig_i_s); |
| let index = builder.addImport('', 'func', sig_s128_index); |
| builder.addFunction('foo', sig_index) |
| .addBody([ |
| kExprLocalGet, 0, |
| kSimdPrefix, |
| kExprI32x4Splat, |
| kExprCallFunction, index]) |
| .exportFunc(); |
| const instance = builder.instantiate({'': {func: _ => {}}}); |
| assertThrows(() => instance.exports.foo(14), TypeError); |
| })(); |
| |
| (function TestS128GlobalConstructor() { |
| assertThrows(() => new WebAssembly.Global({value: 'v128'}), TypeError); |
| })(); |