diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 29848203d..b6a59075b 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -222,16 +222,16 @@ let simd_prefix s = let pos = pos s in match vu32 s with | 0x00l -> let a, o = memop s in v128_load a o - | 0x01l -> let a, o = memop s in i16x8_load8x8_s a o - | 0x02l -> let a, o = memop s in i16x8_load8x8_u a o - | 0x03l -> let a, o = memop s in i32x4_load16x4_s a o - | 0x04l -> let a, o = memop s in i32x4_load16x4_u a o - | 0x05l -> let a, o = memop s in i64x2_load32x2_s a o - | 0x06l -> let a, o = memop s in i64x2_load32x2_u a o - | 0x07l -> let a, o = memop s in v8x16_load_splat a o - | 0x08l -> let a, o = memop s in v16x8_load_splat a o - | 0x09l -> let a, o = memop s in v32x4_load_splat a o - | 0x0al -> let a, o = memop s in v64x2_load_splat a o + | 0x01l -> let a, o = memop s in v128_load8x8_s a o + | 0x02l -> let a, o = memop s in v128_load8x8_u a o + | 0x03l -> let a, o = memop s in v128_load16x4_s a o + | 0x04l -> let a, o = memop s in v128_load16x4_u a o + | 0x05l -> let a, o = memop s in v128_load32x2_s a o + | 0x06l -> let a, o = memop s in v128_load32x2_u a o + | 0x07l -> let a, o = memop s in v128_load8_splat a o + | 0x08l -> let a, o = memop s in v128_load16_splat a o + | 0x09l -> let a, o = memop s in v128_load32_splat a o + | 0x0al -> let a, o = memop s in v128_load64_splat a o | 0x0bl -> let a, o = memop s in v128_store a o | 0x0cl -> v128_const (at v128 s) | 0x0dl -> v8x16_shuffle (List.init 16 (fun x -> u8 s)) diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 8ac4feea0..86ccfbd27 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -218,25 +218,25 @@ let memory_grow = MemoryGrow (* SIMD *) let v128_load align offset = SimdLoad {ty = V128Type; align; offset; sz = None} -let i16x8_load8x8_s align offset = +let v128_load8x8_s align offset = SimdLoad {ty = V128Type; align; offset; sz = Some (Pack64, Pack8x8 SX)} -let i16x8_load8x8_u align offset = +let v128_load8x8_u align offset = SimdLoad {ty = V128Type; align; offset; sz = Some (Pack64, Pack8x8 ZX)} -let i32x4_load16x4_s align offset = +let v128_load16x4_s align offset = SimdLoad {ty = V128Type; align; offset; sz = Some (Pack64, Pack16x4 SX)} -let i32x4_load16x4_u align offset = +let v128_load16x4_u align offset = SimdLoad {ty = V128Type; align; offset; sz = Some (Pack64, Pack16x4 ZX)} -let i64x2_load32x2_s align offset = +let v128_load32x2_s align offset = SimdLoad {ty = V128Type; align; offset; sz = Some (Pack64, Pack32x2 SX)} -let i64x2_load32x2_u align offset = +let v128_load32x2_u align offset = SimdLoad {ty = V128Type; align; offset; sz = Some (Pack64, Pack32x2 ZX)} -let v8x16_load_splat align offset = +let v128_load8_splat align offset = SimdLoad {ty= V128Type; align; offset; sz = Some (Pack8, PackSplat)} -let v16x8_load_splat align offset = +let v128_load16_splat align offset = SimdLoad {ty= V128Type; align; offset; sz = Some (Pack16, PackSplat)} -let v32x4_load_splat align offset = +let v128_load32_splat align offset = SimdLoad {ty= V128Type; align; offset; sz = Some (Pack32, PackSplat)} -let v64x2_load_splat align offset = +let v128_load64_splat align offset = SimdLoad {ty= V128Type; align; offset; sz = Some (Pack64, PackSplat)} let v128_store align offset = SimdStore {ty = V128Type; align; offset; sz = None} diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index e77106117..8f454d09d 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -409,8 +409,8 @@ let cvtop = oper (IntOp.cvtop, FloatOp.cvtop, SimdOp.cvtop) let ternop = SimdOp.ternop (* Temporary wart here while we finalize the names of SIMD loads and extends. *) -let memop ?(type_in_name=true) name {ty; align; offset; _} sz = - (if type_in_name then value_type ty ^ "." else "") ^ name ^ +let memop name {ty; align; offset; _} sz = + value_type ty ^ "." ^ name ^ (if offset = 0l then "" else " offset=" ^ nat32 offset) ^ (if 1 lsl align = sz then "" else " align=" ^ nat (1 lsl align)) @@ -424,18 +424,18 @@ let simd_loadop (op : simd_loadop) = match op.sz with | None -> memop "load" op (size op.ty) | Some (sz, pack_simd) -> - let prefix, suffix, ext = + let suffix = (match sz, pack_simd with - | Pack64, Pack8x8 ext -> "i16x8", "8x8", extension ext - | Pack64, Pack16x4 ext -> "i32x4", "16x4", extension ext - | Pack64, Pack32x2 ext -> "i64x2", "32x2", extension ext - | Pack8, PackSplat -> "v8x16", "_splat", "" - | Pack16, PackSplat -> "v16x8", "_splat", "" - | Pack32, PackSplat -> "v32x4", "_splat", "" - | Pack64, PackSplat -> "v64x2", "_splat", "" + | Pack64, Pack8x8 ext -> "8x8" ^ extension ext + | Pack64, Pack16x4 ext -> "16x4" ^ extension ext + | Pack64, Pack32x2 ext -> "32x2" ^ extension ext + | Pack8, PackSplat -> "8_splat" + | Pack16, PackSplat -> "16_splat" + | Pack32, PackSplat -> "32_splat" + | Pack64, PackSplat -> "64_splat" | _ -> assert false ) in - memop ~type_in_name:false (prefix ^ ".load" ^ suffix ^ ext) op (packed_size sz) + memop ("load" ^ suffix) op (packed_size sz) let storeop op = match op.sz with diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index fee8b7fff..70e34735f 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -288,20 +288,20 @@ rule token = parse (ext s i64_load8_s i64_load8_u (opt a 0)) (ext s i64_load16_s i64_load16_u (opt a 1)) (ext s i64_load32_s i64_load32_u (opt a 2)) o)) } - | "i16x8.load8x8_"(sign as s) - { LOAD (fun a o -> (ext s i16x8_load8x8_s i16x8_load8x8_u (opt a 3)) o) } - | "i32x4.load16x4_"(sign as s) - { LOAD (fun a o -> (ext s i32x4_load16x4_s i32x4_load16x4_u (opt a 3)) o) } - | "i64x2.load32x2_"(sign as s) - { LOAD (fun a o -> (ext s i64x2_load32x2_s i64x2_load32x2_u (opt a 3)) o) } - | "v8x16.load_splat" - { LOAD (fun a o -> (v8x16_load_splat (opt a 0)) o) } - | "v16x8.load_splat" - { LOAD (fun a o -> (v16x8_load_splat (opt a 1)) o) } - | "v32x4.load_splat" - { LOAD (fun a o -> (v32x4_load_splat (opt a 2)) o) } - | "v64x2.load_splat" - { LOAD (fun a o -> (v64x2_load_splat (opt a 3)) o) } + | "v128.load8x8_"(sign as s) + { LOAD (fun a o -> (ext s v128_load8x8_s v128_load8x8_u (opt a 3)) o) } + | "v128.load16x4_"(sign as s) + { LOAD (fun a o -> (ext s v128_load16x4_s v128_load16x4_u (opt a 3)) o) } + | "v128.load32x2_"(sign as s) + { LOAD (fun a o -> (ext s v128_load32x2_s v128_load32x2_u (opt a 3)) o) } + | "v128.load8_splat" + { LOAD (fun a o -> (v128_load8_splat (opt a 0)) o) } + | "v128.load16_splat" + { LOAD (fun a o -> (v128_load16_splat (opt a 1)) o) } + | "v128.load32_splat" + { LOAD (fun a o -> (v128_load32_splat (opt a 2)) o) } + | "v128.load64_splat" + { LOAD (fun a o -> (v128_load64_splat (opt a 3)) o) } | (ixx as t)".store"(mem_size as sz) { if t = "i32" && sz = "32" then error lexbuf "unknown operator"; STORE (fun a o -> diff --git a/proposals/simd/BinarySIMD.md b/proposals/simd/BinarySIMD.md index d910bd210..ab48120ff 100644 --- a/proposals/simd/BinarySIMD.md +++ b/proposals/simd/BinarySIMD.md @@ -33,16 +33,16 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive). | Instruction | `simdop` | Immediate operands | | ---------------------------|---------:|--------------------| | `v128.load` | `0x00`| m:memarg | -| `i16x8.load8x8_s` | `0x01`| m:memarg | -| `i16x8.load8x8_u` | `0x02`| m:memarg | -| `i32x4.load16x4_s` | `0x03`| m:memarg | -| `i32x4.load16x4_u` | `0x04`| m:memarg | -| `i64x2.load32x2_s` | `0x05`| m:memarg | -| `i64x2.load32x2_u` | `0x06`| m:memarg | -| `v8x16.load_splat` | `0x07`| m:memarg | -| `v16x8.load_splat` | `0x08`| m:memarg | -| `v32x4.load_splat` | `0x09`| m:memarg | -| `v64x2.load_splat` | `0x0a`| m:memarg | +| `v128.load8x8_s` | `0x01`| m:memarg | +| `v128.load8x8_u` | `0x02`| m:memarg | +| `v128.load16x4_s` | `0x03`| m:memarg | +| `v128.load16x4_u` | `0x04`| m:memarg | +| `v128.load32x2_s` | `0x05`| m:memarg | +| `v128.load32x2_u` | `0x06`| m:memarg | +| `v128.load8_splat` | `0x07`| m:memarg | +| `v128.load16_splat` | `0x08`| m:memarg | +| `v128.load32_splat` | `0x09`| m:memarg | +| `v128.load64_splat` | `0x0a`| m:memarg | | `v128.store` | `0x0b`| m:memarg | | `v128.const` | `0x0c`| i:ImmByte[16] | | `v8x16.shuffle` | `0x0d`| s:ImmLaneIdx32[16] | diff --git a/proposals/simd/ImplementationStatus.md b/proposals/simd/ImplementationStatus.md index fc3f0cdd6..28ee9817a 100644 --- a/proposals/simd/ImplementationStatus.md +++ b/proposals/simd/ImplementationStatus.md @@ -1,16 +1,16 @@ | Instruction | LLVM[1] | V8[2] | WAVM[3] | ChakraCore[4] | SpiderMonkey[5] | | ---------------------------|---------------------------|--------------------|--------------------|--------------------|--------------------| | `v128.load` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i16x8.load8x8_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i16x8.load8x8_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i32x4.load16x4_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i32x4.load16x4_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i64x2.load32x2_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i64x2.load32x2_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `v8x16.load_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `v16x8.load_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `v32x4.load_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `v64x2.load_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load8x8_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load8x8_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load16x4_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load16x4_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load32x2_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load32x2_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load8_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load16_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load32_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `v128.load64_splat` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `v128.store` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `v128.const` | `-munimplemented-simd128` | :heavy_check_mark: [6] | | | :heavy_check_mark: | | `v8x16.shuffle` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | diff --git a/proposals/simd/NewOpcodes.md b/proposals/simd/NewOpcodes.md index 2752fa2a5..6df33d497 100644 --- a/proposals/simd/NewOpcodes.md +++ b/proposals/simd/NewOpcodes.md @@ -1,16 +1,16 @@ | Memory instruction | opcode | | ------------------ | ------ | | v128.load | 0x00 | -| i16x8.load8x8_s | 0x01 | -| i16x8.load8x8_u | 0x02 | -| i32x4.load16x4_s | 0x03 | -| i32x4.load16x4_u | 0x04 | -| i64x2.load32x2_s | 0x05 | -| i64x2.load32x2_u | 0x06 | -| v8x16.load_splat | 0x07 | -| v16x8.load_splat | 0x08 | -| v32x4.load_splat | 0x09 | -| v64x2.load_splat | 0x0a | +| v128.load8x8_s | 0x01 | +| v128.load8x8_u | 0x02 | +| v128.load16x4_s | 0x03 | +| v128.load16x4_u | 0x04 | +| v128.load32x2_s | 0x05 | +| v128.load32x2_u | 0x06 | +| v128.load8_splat | 0x07 | +| v128.load16_splat | 0x08 | +| v128.load32_splat | 0x09 | +| v128.load64_splat | 0x0a | | v128.store | 0x0b | | Basic operation | opcode | diff --git a/proposals/simd/SIMD.md b/proposals/simd/SIMD.md index 0ff87ff45..a20ce03f2 100644 --- a/proposals/simd/SIMD.md +++ b/proposals/simd/SIMD.md @@ -768,10 +768,10 @@ def S.load(memarg): ### Load and Splat -* `v8x16.load_splat(memarg) -> v128` -* `v16x8.load_splat(memarg) -> v128` -* `v32x4.load_splat(memarg) -> v128` -* `v64x2.load_splat(memarg) -> v128` +* `v128.load8_splat(memarg) -> v128` +* `v128.load16_splat(memarg) -> v128` +* `v128.load32_splat(memarg) -> v128` +* `v128.load64_splat(memarg) -> v128` Load a single element and splat to all lanes of a `v128` vector. The natural alignment is the size of the element loaded. @@ -784,12 +784,12 @@ def S.load_splat(memarg): ### Load and Extend -* `i16x8.load8x8_s(memarg) -> v128`: load eight 8-bit integers and sign extend each one to a 16-bit lane -* `i16x8.load8x8_u(memarg) -> v128`: load eight 8-bit integers and zero extend each one to a 16-bit lane -* `i32x4.load16x4_s(memarg) -> v128`: load four 16-bit integers and sign extend each one to a 32-bit lane -* `i32x4.load16x4_u(memarg) -> v128`: load four 16-bit integers and zero extend each one to a 32-bit lane -* `i64x2.load32x2_s(memarg) -> v128`: load two 32-bit integers and sign extend each one to a 64-bit lane -* `i64x2.load32x2_u(memarg) -> v128`: load two 32-bit integers and zero extend each one to a 64-bit lane +* `v128.load8x8_s(memarg) -> v128`: load eight 8-bit integers and sign extend each one to a 16-bit lane +* `v128.load8x8_u(memarg) -> v128`: load eight 8-bit integers and zero extend each one to a 16-bit lane +* `v128.load16x4_s(memarg) -> v128`: load four 16-bit integers and sign extend each one to a 32-bit lane +* `v128.load16x4_u(memarg) -> v128`: load four 16-bit integers and zero extend each one to a 32-bit lane +* `v128.load32x2_s(memarg) -> v128`: load two 32-bit integers and sign extend each one to a 64-bit lane +* `v128.load32x2_u(memarg) -> v128`: load two 32-bit integers and zero extend each one to a 64-bit lane Fetch consecutive integers up to 32-bit wide and produce a vector with lanes up to 64 bits. The natural alignment is 8 bytes. diff --git a/test/core/simd/simd_align.wast b/test/core/simd/simd_align.wast index 79628f226..ed91ed5c6 100644 --- a/test/core/simd/simd_align.wast +++ b/test/core/simd/simd_align.wast @@ -12,41 +12,41 @@ (module (memory 1) (func (v128.store align=8 (i32.const 0) (v128.const i32x4 0 1 2 3)))) (module (memory 1) (func (v128.store align=16 (i32.const 0) (v128.const i32x4 0 1 2 3)))) -(module (memory 1) (func (drop (i16x8.load8x8_s align=1 (i32.const 0))))) -(module (memory 1) (func (drop (i16x8.load8x8_s align=2 (i32.const 0))))) -(module (memory 1) (func (drop (i16x8.load8x8_s align=4 (i32.const 0))))) -(module (memory 1) (func (drop (i16x8.load8x8_s align=8 (i32.const 0))))) -(module (memory 1) (func (drop (i16x8.load8x8_u align=1 (i32.const 0))))) -(module (memory 1) (func (drop (i16x8.load8x8_u align=2 (i32.const 0))))) -(module (memory 1) (func (drop (i16x8.load8x8_u align=4 (i32.const 0))))) -(module (memory 1) (func (drop (i16x8.load8x8_u align=8 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_s align=1 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_s align=2 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_s align=4 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_s align=8 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_u align=1 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_u align=2 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_u align=4 (i32.const 0))))) -(module (memory 1) (func (drop (i32x4.load16x4_u align=8 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_s align=1 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_s align=2 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_s align=4 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_s align=8 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_u align=1 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_u align=2 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_u align=4 (i32.const 0))))) -(module (memory 1) (func (drop (i64x2.load32x2_u align=8 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_s align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_s align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_s align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_s align=8 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_u align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_u align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_u align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8x8_u align=8 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_s align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_s align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_s align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_s align=8 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_u align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_u align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_u align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16x4_u align=8 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_s align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_s align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_s align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_s align=8 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_u align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_u align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_u align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32x2_u align=8 (i32.const 0))))) -(module (memory 1) (func (drop (v8x16.load_splat align=1 (i32.const 0))))) -(module (memory 1) (func (drop (v16x8.load_splat align=1 (i32.const 0))))) -(module (memory 1) (func (drop (v16x8.load_splat align=2 (i32.const 0))))) -(module (memory 1) (func (drop (v32x4.load_splat align=1 (i32.const 0))))) -(module (memory 1) (func (drop (v32x4.load_splat align=2 (i32.const 0))))) -(module (memory 1) (func (drop (v32x4.load_splat align=4 (i32.const 0))))) -(module (memory 1) (func (drop (v64x2.load_splat align=1 (i32.const 0))))) -(module (memory 1) (func (drop (v64x2.load_splat align=2 (i32.const 0))))) -(module (memory 1) (func (drop (v64x2.load_splat align=4 (i32.const 0))))) -(module (memory 1) (func (drop (v64x2.load_splat align=8 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load8_splat align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16_splat align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load16_splat align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32_splat align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32_splat align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load32_splat align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load64_splat align=1 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load64_splat align=2 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load64_splat align=4 (i32.const 0))))) +(module (memory 1) (func (drop (v128.load64_splat align=8 (i32.const 0))))) ;; Invalid alignment @@ -59,43 +59,43 @@ "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (i16x8.load8x8_s align=16 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load8x8_s align=16 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (i16x8.load8x8_u align=16 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load8x8_u align=16 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (i32x4.load16x4_s align=16 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load16x4_s align=16 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (i32x4.load16x4_u align=16 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load16x4_u align=16 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (i64x2.load32x2_s align=16 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load32x2_s align=16 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (i64x2.load32x2_u align=16 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load32x2_u align=16 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (v8x16.load_splat align=2 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load8_splat align=2 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (v16x8.load_splat align=4 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load16_splat align=4 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (v32x4.load_splat align=8 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load32_splat align=8 (i32.const 0)))) "alignment must not be larger than natural" ) (assert_invalid - (module (memory 1) (func (result v128) (v64x2.load_splat align=16 (i32.const 0)))) + (module (memory 1) (func (result v128) (v128.load64_splat align=16 (i32.const 0)))) "alignment must not be larger than natural" ) @@ -139,169 +139,169 @@ ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i16x8.load8x8_s align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8x8_s align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i16x8.load8x8_s align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8x8_s align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i16x8.load8x8_s align=7 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8x8_s align=7 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i16x8.load8x8_u align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8x8_u align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i16x8.load8x8_u align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8x8_u align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i16x8.load8x8_u align=7 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8x8_u align=7 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i32x4.load16x4_s align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16x4_s align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i32x4.load16x4_s align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16x4_s align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i32x4.load16x4_s align=7 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16x4_s align=7 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i32x4.load16x4_u align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16x4_u align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i32x4.load16x4_u align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16x4_u align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i32x4.load16x4_u align=7 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16x4_u align=7 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i64x2.load32x2_s align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32x2_s align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i64x2.load32x2_s align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32x2_s align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i64x2.load32x2_s align=7 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32x2_s align=7 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i64x2.load32x2_u align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32x2_u align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i64x2.load32x2_u align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32x2_u align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (i64x2.load32x2_u align=7 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32x2_u align=7 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v8x16.load_splat align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8_splat align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v8x16.load_splat align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load8_splat align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v16x8.load_splat align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16_splat align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v16x8.load_splat align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load16_splat align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v32x4.load_splat align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32_splat align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v32x4.load_splat align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32_splat align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v32x4.load_splat align=3 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load32_splat align=3 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v64x2.load_splat align=-1 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load64_splat align=-1 (i32.const 0)))" ) "unknown operator" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v64x2.load_splat align=0 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load64_splat align=0 (i32.const 0)))" ) "alignment must be a power of two" ) (assert_malformed (module quote - "(memory 1) (func (result v128) (v64x2.load_splat align=7 (i32.const 0)))" + "(memory 1) (func (result v128) (v128.load64_splat align=7 (i32.const 0)))" ) "alignment must be a power of two" ) @@ -352,4 +352,4 @@ (assert_return (invoke "v128_unaligned_read_and_write") (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) (assert_return (invoke "v128_aligned_read_and_write") (v128.const i16x8 0 1 2 3 4 5 6 7)) (assert_return (invoke "v128_aligned_read_and_unaligned_write") (v128.const i32x4 0 1 2 3)) -(assert_return (invoke "v128_unaligned_read_and_aligned_write") (v128.const i32x4 0 1 2 3)) \ No newline at end of file +(assert_return (invoke "v128_unaligned_read_and_aligned_write") (v128.const i32x4 0 1 2 3)) diff --git a/test/core/simd/simd_load_extend.wast b/test/core/simd/simd_load_extend.wast index 8f47fab4f..b9982bbfd 100644 --- a/test/core/simd/simd_load_extend.wast +++ b/test/core/simd/simd_load_extend.wast @@ -5,292 +5,292 @@ (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\80\81\82\83\84\85\86\87\88\89") (data (i32.const 65520) "\0A\0B\0C\0D\0E\0F\80\81\82\83\84\85\86\87\88\89") - (func (export "i16x8.load8x8_s") (param $0 i32) (result v128) - (i16x8.load8x8_s (local.get $0)) + (func (export "v128.load8x8_s") (param $0 i32) (result v128) + (v128.load8x8_s (local.get $0)) ) - (func (export "i16x8.load8x8_u") (param $0 i32) (result v128) - (i16x8.load8x8_u (local.get $0)) + (func (export "v128.load8x8_u") (param $0 i32) (result v128) + (v128.load8x8_u (local.get $0)) ) - (func (export "i32x4.load16x4_s") (param $0 i32) (result v128) - (i32x4.load16x4_s (local.get $0)) + (func (export "v128.load16x4_s") (param $0 i32) (result v128) + (v128.load16x4_s (local.get $0)) ) - (func (export "i32x4.load16x4_u") (param $0 i32) (result v128) - (i32x4.load16x4_u (local.get $0)) + (func (export "v128.load16x4_u") (param $0 i32) (result v128) + (v128.load16x4_u (local.get $0)) ) - (func (export "i64x2.load32x2_s") (param $0 i32) (result v128) - (i64x2.load32x2_s (local.get $0)) + (func (export "v128.load32x2_s") (param $0 i32) (result v128) + (v128.load32x2_s (local.get $0)) ) - (func (export "i64x2.load32x2_u") (param $0 i32) (result v128) - (i64x2.load32x2_u (local.get $0)) + (func (export "v128.load32x2_u") (param $0 i32) (result v128) + (v128.load32x2_u (local.get $0)) ) ;; load by a constant amount - (func (export "i16x8.load8x8_s_const0") (result v128) - (i16x8.load8x8_s (i32.const 0)) + (func (export "v128.load8x8_s_const0") (result v128) + (v128.load8x8_s (i32.const 0)) ) - (func (export "i16x8.load8x8_u_const8") (result v128) - (i16x8.load8x8_u (i32.const 8)) + (func (export "v128.load8x8_u_const8") (result v128) + (v128.load8x8_u (i32.const 8)) ) - (func (export "i32x4.load16x4_s_const10") (result v128) - (i32x4.load16x4_s (i32.const 10)) + (func (export "v128.load16x4_s_const10") (result v128) + (v128.load16x4_s (i32.const 10)) ) - (func (export "i32x4.load16x4_u_const20") (result v128) - (i32x4.load16x4_u (i32.const 20)) + (func (export "v128.load16x4_u_const20") (result v128) + (v128.load16x4_u (i32.const 20)) ) - (func (export "i64x2.load32x2_s_const65520") (result v128) - (i64x2.load32x2_s (i32.const 65520)) + (func (export "v128.load32x2_s_const65520") (result v128) + (v128.load32x2_s (i32.const 65520)) ) - (func (export "i64x2.load32x2_u_const65526") (result v128) - (i64x2.load32x2_u (i32.const 65526)) + (func (export "v128.load32x2_u_const65526") (result v128) + (v128.load32x2_u (i32.const 65526)) ) ;; load data with different offset/align arguments ;; i16x8 - (func (export "i16x8.load8x8_s_offset0") (param $0 i32) (result v128) - (i16x8.load8x8_s offset=0 (local.get $0)) + (func (export "v128.load8x8_s_offset0") (param $0 i32) (result v128) + (v128.load8x8_s offset=0 (local.get $0)) ) - (func (export "i16x8.load8x8_s_align1") (param $0 i32) (result v128) - (i16x8.load8x8_s align=1 (local.get $0)) + (func (export "v128.load8x8_s_align1") (param $0 i32) (result v128) + (v128.load8x8_s align=1 (local.get $0)) ) - (func (export "i16x8.load8x8_s_offset0_align1") (param $0 i32) (result v128) - (i16x8.load8x8_s offset=0 align=1 (local.get $0)) + (func (export "v128.load8x8_s_offset0_align1") (param $0 i32) (result v128) + (v128.load8x8_s offset=0 align=1 (local.get $0)) ) - (func (export "i16x8.load8x8_s_offset1_align1") (param $0 i32) (result v128) - (i16x8.load8x8_s offset=1 align=1 (local.get $0)) + (func (export "v128.load8x8_s_offset1_align1") (param $0 i32) (result v128) + (v128.load8x8_s offset=1 align=1 (local.get $0)) ) - (func (export "i16x8.load8x8_s_offset10_align4") (param $0 i32) (result v128) - (i16x8.load8x8_s offset=10 align=4 (local.get $0)) + (func (export "v128.load8x8_s_offset10_align4") (param $0 i32) (result v128) + (v128.load8x8_s offset=10 align=4 (local.get $0)) ) - (func (export "i16x8.load8x8_s_offset20_align8") (param $0 i32) (result v128) - (i16x8.load8x8_s offset=20 align=8 (local.get $0)) + (func (export "v128.load8x8_s_offset20_align8") (param $0 i32) (result v128) + (v128.load8x8_s offset=20 align=8 (local.get $0)) ) - (func (export "i16x8.load8x8_u_offset0") (param $0 i32) (result v128) - (i16x8.load8x8_u offset=0 (local.get $0)) + (func (export "v128.load8x8_u_offset0") (param $0 i32) (result v128) + (v128.load8x8_u offset=0 (local.get $0)) ) - (func (export "i16x8.load8x8_u_align1") (param $0 i32) (result v128) - (i16x8.load8x8_u align=1 (local.get $0)) + (func (export "v128.load8x8_u_align1") (param $0 i32) (result v128) + (v128.load8x8_u align=1 (local.get $0)) ) - (func (export "i16x8.load8x8_u_offset0_align1") (param $0 i32) (result v128) - (i16x8.load8x8_u offset=0 align=1 (local.get $0)) + (func (export "v128.load8x8_u_offset0_align1") (param $0 i32) (result v128) + (v128.load8x8_u offset=0 align=1 (local.get $0)) ) - (func (export "i16x8.load8x8_u_offset1_align1") (param $0 i32) (result v128) - (i16x8.load8x8_u offset=1 align=1 (local.get $0)) + (func (export "v128.load8x8_u_offset1_align1") (param $0 i32) (result v128) + (v128.load8x8_u offset=1 align=1 (local.get $0)) ) - (func (export "i16x8.load8x8_u_offset10_align4") (param $0 i32) (result v128) - (i16x8.load8x8_u offset=10 align=4 (local.get $0)) + (func (export "v128.load8x8_u_offset10_align4") (param $0 i32) (result v128) + (v128.load8x8_u offset=10 align=4 (local.get $0)) ) - (func (export "i16x8.load8x8_u_offset20_align8") (param $0 i32) (result v128) - (i16x8.load8x8_u offset=20 align=8 (local.get $0)) + (func (export "v128.load8x8_u_offset20_align8") (param $0 i32) (result v128) + (v128.load8x8_u offset=20 align=8 (local.get $0)) ) ;; i32x4 - (func (export "i32x4.load16x4_s_offset0") (param $0 i32) (result v128) - (i32x4.load16x4_s offset=0 (local.get $0)) + (func (export "v128.load16x4_s_offset0") (param $0 i32) (result v128) + (v128.load16x4_s offset=0 (local.get $0)) ) - (func (export "i32x4.load16x4_s_align1") (param $0 i32) (result v128) - (i32x4.load16x4_s align=1 (local.get $0)) + (func (export "v128.load16x4_s_align1") (param $0 i32) (result v128) + (v128.load16x4_s align=1 (local.get $0)) ) - (func (export "i32x4.load16x4_s_offset0_align1") (param $0 i32) (result v128) - (i32x4.load16x4_s offset=0 align=1 (local.get $0)) + (func (export "v128.load16x4_s_offset0_align1") (param $0 i32) (result v128) + (v128.load16x4_s offset=0 align=1 (local.get $0)) ) - (func (export "i32x4.load16x4_s_offset1_align1") (param $0 i32) (result v128) - (i32x4.load16x4_s offset=1 align=1 (local.get $0)) + (func (export "v128.load16x4_s_offset1_align1") (param $0 i32) (result v128) + (v128.load16x4_s offset=1 align=1 (local.get $0)) ) - (func (export "i32x4.load16x4_s_offset10_align4") (param $0 i32) (result v128) - (i32x4.load16x4_s offset=10 align=4 (local.get $0)) + (func (export "v128.load16x4_s_offset10_align4") (param $0 i32) (result v128) + (v128.load16x4_s offset=10 align=4 (local.get $0)) ) - (func (export "i32x4.load16x4_s_offset20_align8") (param $0 i32) (result v128) - (i32x4.load16x4_s offset=20 align=8 (local.get $0)) + (func (export "v128.load16x4_s_offset20_align8") (param $0 i32) (result v128) + (v128.load16x4_s offset=20 align=8 (local.get $0)) ) - (func (export "i32x4.load16x4_u_offset0") (param $0 i32) (result v128) - (i32x4.load16x4_u offset=0 (local.get $0)) + (func (export "v128.load16x4_u_offset0") (param $0 i32) (result v128) + (v128.load16x4_u offset=0 (local.get $0)) ) - (func (export "i32x4.load16x4_u_align1") (param $0 i32) (result v128) - (i32x4.load16x4_u align=1 (local.get $0)) + (func (export "v128.load16x4_u_align1") (param $0 i32) (result v128) + (v128.load16x4_u align=1 (local.get $0)) ) - (func (export "i32x4.load16x4_u_offset0_align1") (param $0 i32) (result v128) - (i32x4.load16x4_u offset=0 align=1 (local.get $0)) + (func (export "v128.load16x4_u_offset0_align1") (param $0 i32) (result v128) + (v128.load16x4_u offset=0 align=1 (local.get $0)) ) - (func (export "i32x4.load16x4_u_offset1_align1") (param $0 i32) (result v128) - (i32x4.load16x4_u offset=1 align=1 (local.get $0)) + (func (export "v128.load16x4_u_offset1_align1") (param $0 i32) (result v128) + (v128.load16x4_u offset=1 align=1 (local.get $0)) ) - (func (export "i32x4.load16x4_u_offset10_align4") (param $0 i32) (result v128) - (i32x4.load16x4_u offset=10 align=4 (local.get $0)) + (func (export "v128.load16x4_u_offset10_align4") (param $0 i32) (result v128) + (v128.load16x4_u offset=10 align=4 (local.get $0)) ) - (func (export "i32x4.load16x4_u_offset20_align8") (param $0 i32) (result v128) - (i32x4.load16x4_u offset=20 align=8 (local.get $0)) + (func (export "v128.load16x4_u_offset20_align8") (param $0 i32) (result v128) + (v128.load16x4_u offset=20 align=8 (local.get $0)) ) ;; i64x2 - (func (export "i64x2.load32x2_s_offset0") (param $0 i32) (result v128) - (i64x2.load32x2_s offset=0 (local.get $0)) + (func (export "v128.load32x2_s_offset0") (param $0 i32) (result v128) + (v128.load32x2_s offset=0 (local.get $0)) ) - (func (export "i64x2.load32x2_s_align1") (param $0 i32) (result v128) - (i64x2.load32x2_s align=1 (local.get $0)) + (func (export "v128.load32x2_s_align1") (param $0 i32) (result v128) + (v128.load32x2_s align=1 (local.get $0)) ) - (func (export "i64x2.load32x2_s_offset0_align1") (param $0 i32) (result v128) - (i64x2.load32x2_s offset=0 align=1 (local.get $0)) + (func (export "v128.load32x2_s_offset0_align1") (param $0 i32) (result v128) + (v128.load32x2_s offset=0 align=1 (local.get $0)) ) - (func (export "i64x2.load32x2_s_offset1_align1") (param $0 i32) (result v128) - (i64x2.load32x2_s offset=1 align=1 (local.get $0)) + (func (export "v128.load32x2_s_offset1_align1") (param $0 i32) (result v128) + (v128.load32x2_s offset=1 align=1 (local.get $0)) ) - (func (export "i64x2.load32x2_s_offset10_align4") (param $0 i32) (result v128) - (i64x2.load32x2_s offset=10 align=4 (local.get $0)) + (func (export "v128.load32x2_s_offset10_align4") (param $0 i32) (result v128) + (v128.load32x2_s offset=10 align=4 (local.get $0)) ) - (func (export "i64x2.load32x2_s_offset20_align8") (param $0 i32) (result v128) - (i64x2.load32x2_s offset=20 align=8 (local.get $0)) + (func (export "v128.load32x2_s_offset20_align8") (param $0 i32) (result v128) + (v128.load32x2_s offset=20 align=8 (local.get $0)) ) - (func (export "i64x2.load32x2_u_offset0") (param $0 i32) (result v128) - (i64x2.load32x2_u offset=0 (local.get $0)) + (func (export "v128.load32x2_u_offset0") (param $0 i32) (result v128) + (v128.load32x2_u offset=0 (local.get $0)) ) - (func (export "i64x2.load32x2_u_align1") (param $0 i32) (result v128) - (i64x2.load32x2_u align=1 (local.get $0)) + (func (export "v128.load32x2_u_align1") (param $0 i32) (result v128) + (v128.load32x2_u align=1 (local.get $0)) ) - (func (export "i64x2.load32x2_u_offset0_align1") (param $0 i32) (result v128) - (i64x2.load32x2_u offset=0 align=1 (local.get $0)) + (func (export "v128.load32x2_u_offset0_align1") (param $0 i32) (result v128) + (v128.load32x2_u offset=0 align=1 (local.get $0)) ) - (func (export "i64x2.load32x2_u_offset1_align1") (param $0 i32) (result v128) - (i64x2.load32x2_u offset=1 align=1 (local.get $0)) + (func (export "v128.load32x2_u_offset1_align1") (param $0 i32) (result v128) + (v128.load32x2_u offset=1 align=1 (local.get $0)) ) - (func (export "i64x2.load32x2_u_offset10_align4") (param $0 i32) (result v128) - (i64x2.load32x2_u offset=10 align=4 (local.get $0)) + (func (export "v128.load32x2_u_offset10_align4") (param $0 i32) (result v128) + (v128.load32x2_u offset=10 align=4 (local.get $0)) ) - (func (export "i64x2.load32x2_u_offset20_align8") (param $0 i32) (result v128) - (i64x2.load32x2_u offset=20 align=8 (local.get $0)) + (func (export "v128.load32x2_u_offset20_align8") (param $0 i32) (result v128) + (v128.load32x2_u offset=20 align=8 (local.get $0)) ) ) ;; normal -(assert_return (invoke "i16x8.load8x8_s" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) -(assert_return (invoke "i16x8.load8x8_u" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) -(assert_return (invoke "i32x4.load16x4_s" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) -(assert_return (invoke "i32x4.load16x4_u" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) -(assert_return (invoke "i64x2.load32x2_s" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) -(assert_return (invoke "i64x2.load32x2_u" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) -(assert_return (invoke "i16x8.load8x8_s" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0xFF80 0xFF81)) -(assert_return (invoke "i16x8.load8x8_u" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0x0080 0x0081)) -(assert_return (invoke "i32x4.load16x4_s" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180)) -(assert_return (invoke "i32x4.load16x4_u" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0x00008180)) -(assert_return (invoke "i64x2.load32x2_s" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E)) -(assert_return (invoke "i64x2.load32x2_u" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0x0000000081800F0E)) -(assert_return (invoke "i16x8.load8x8_s" (i32.const 20)) (v128.const i16x8 0xff84 0xff85 0xff86 0xff87 0xff88 0xff89 0x0000 0x0000)) -(assert_return (invoke "i16x8.load8x8_u" (i32.const 20)) (v128.const i16x8 0x0084 0x0085 0x0086 0x0087 0x0088 0x0089 0x0000 0x0000)) -(assert_return (invoke "i32x4.load16x4_s" (i32.const 20)) (v128.const i32x4 0xffff8584 0xffff8786 0xffff8988 0x00000000)) -(assert_return (invoke "i32x4.load16x4_u" (i32.const 20)) (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000)) -(assert_return (invoke "i64x2.load32x2_s" (i32.const 20)) (v128.const i64x2 0xFFFFFFFF87868584 0x0000000000008988)) -(assert_return (invoke "i64x2.load32x2_u" (i32.const 20)) (v128.const i64x2 0x0000000087868584 0x0000000000008988)) +(assert_return (invoke "v128.load8x8_s" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) +(assert_return (invoke "v128.load8x8_u" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) +(assert_return (invoke "v128.load16x4_s" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) +(assert_return (invoke "v128.load16x4_u" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) +(assert_return (invoke "v128.load32x2_s" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) +(assert_return (invoke "v128.load32x2_u" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) +(assert_return (invoke "v128.load8x8_s" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0xFF80 0xFF81)) +(assert_return (invoke "v128.load8x8_u" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0x0080 0x0081)) +(assert_return (invoke "v128.load16x4_s" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180)) +(assert_return (invoke "v128.load16x4_u" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0x00008180)) +(assert_return (invoke "v128.load32x2_s" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E)) +(assert_return (invoke "v128.load32x2_u" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0x0000000081800F0E)) +(assert_return (invoke "v128.load8x8_s" (i32.const 20)) (v128.const i16x8 0xff84 0xff85 0xff86 0xff87 0xff88 0xff89 0x0000 0x0000)) +(assert_return (invoke "v128.load8x8_u" (i32.const 20)) (v128.const i16x8 0x0084 0x0085 0x0086 0x0087 0x0088 0x0089 0x0000 0x0000)) +(assert_return (invoke "v128.load16x4_s" (i32.const 20)) (v128.const i32x4 0xffff8584 0xffff8786 0xffff8988 0x00000000)) +(assert_return (invoke "v128.load16x4_u" (i32.const 20)) (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000)) +(assert_return (invoke "v128.load32x2_s" (i32.const 20)) (v128.const i64x2 0xFFFFFFFF87868584 0x0000000000008988)) +(assert_return (invoke "v128.load32x2_u" (i32.const 20)) (v128.const i64x2 0x0000000087868584 0x0000000000008988)) ;; load by a constant amount -(assert_return (invoke "i16x8.load8x8_s_const0") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) -(assert_return (invoke "i16x8.load8x8_u_const8") (v128.const i16x8 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F)) -(assert_return (invoke "i32x4.load16x4_s_const10") (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180)) -(assert_return (invoke "i32x4.load16x4_u_const20") (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000)) -(assert_return (invoke "i64x2.load32x2_s_const65520") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E)) -(assert_return (invoke "i64x2.load32x2_u_const65526") (v128.const i64x2 0x0000000083828180 0x0000000087868584)) +(assert_return (invoke "v128.load8x8_s_const0") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) +(assert_return (invoke "v128.load8x8_u_const8") (v128.const i16x8 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F)) +(assert_return (invoke "v128.load16x4_s_const10") (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180)) +(assert_return (invoke "v128.load16x4_u_const20") (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000)) +(assert_return (invoke "v128.load32x2_s_const65520") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E)) +(assert_return (invoke "v128.load32x2_u_const65526") (v128.const i64x2 0x0000000083828180 0x0000000087868584)) ;; load data with different offset/align arguments ;; i16x8 -(assert_return (invoke "i16x8.load8x8_s_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) -(assert_return (invoke "i16x8.load8x8_s_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008)) -(assert_return (invoke "i16x8.load8x8_s_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009)) -(assert_return (invoke "i16x8.load8x8_s_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0xFF80 0xFF81 0xFF82 0xFF83 0xFF84)) -(assert_return (invoke "i16x8.load8x8_s_offset20_align8" (i32.const 4)) (v128.const i16x8 0xFF88 0xFF89 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000)) -(assert_return (invoke "i16x8.load8x8_u_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) -(assert_return (invoke "i16x8.load8x8_u_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008)) -(assert_return (invoke "i16x8.load8x8_u_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009)) -(assert_return (invoke "i16x8.load8x8_u_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0x0080 0x0081 0x0082 0x0083 0x0084)) -(assert_return (invoke "i16x8.load8x8_u_offset20_align8" (i32.const 4)) (v128.const i16x8 0x0088 0x0089 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000)) +(assert_return (invoke "v128.load8x8_s_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) +(assert_return (invoke "v128.load8x8_s_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008)) +(assert_return (invoke "v128.load8x8_s_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009)) +(assert_return (invoke "v128.load8x8_s_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0xFF80 0xFF81 0xFF82 0xFF83 0xFF84)) +(assert_return (invoke "v128.load8x8_s_offset20_align8" (i32.const 4)) (v128.const i16x8 0xFF88 0xFF89 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000)) +(assert_return (invoke "v128.load8x8_u_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) +(assert_return (invoke "v128.load8x8_u_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008)) +(assert_return (invoke "v128.load8x8_u_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009)) +(assert_return (invoke "v128.load8x8_u_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0x0080 0x0081 0x0082 0x0083 0x0084)) +(assert_return (invoke "v128.load8x8_u_offset20_align8" (i32.const 4)) (v128.const i16x8 0x0088 0x0089 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000)) ;; i32x4 -(assert_return (invoke "i32x4.load16x4_s_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) -(assert_return (invoke "i32x4.load16x4_s_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807)) -(assert_return (invoke "i32x4.load16x4_s_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908)) -(assert_return (invoke "i32x4.load16x4_s_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0xFFFF800F 0xFFFF8281 0xFFFF8483)) -(assert_return (invoke "i32x4.load16x4_s_offset20_align8" (i32.const 4)) (v128.const i32x4 0xFFFF8988 0x00000000 0x00000000 0x00000000)) -(assert_return (invoke "i32x4.load16x4_u_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) -(assert_return (invoke "i32x4.load16x4_u_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807)) -(assert_return (invoke "i32x4.load16x4_u_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908)) -(assert_return (invoke "i32x4.load16x4_u_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0x0000800F 0x00008281 0x00008483)) -(assert_return (invoke "i32x4.load16x4_u_offset20_align8" (i32.const 4)) (v128.const i32x4 0x00008988 0x00000000 0x00000000 0x00000000)) +(assert_return (invoke "v128.load16x4_s_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) +(assert_return (invoke "v128.load16x4_s_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807)) +(assert_return (invoke "v128.load16x4_s_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908)) +(assert_return (invoke "v128.load16x4_s_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0xFFFF800F 0xFFFF8281 0xFFFF8483)) +(assert_return (invoke "v128.load16x4_s_offset20_align8" (i32.const 4)) (v128.const i32x4 0xFFFF8988 0x00000000 0x00000000 0x00000000)) +(assert_return (invoke "v128.load16x4_u_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706)) +(assert_return (invoke "v128.load16x4_u_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807)) +(assert_return (invoke "v128.load16x4_u_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908)) +(assert_return (invoke "v128.load16x4_u_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0x0000800F 0x00008281 0x00008483)) +(assert_return (invoke "v128.load16x4_u_offset20_align8" (i32.const 4)) (v128.const i32x4 0x00008988 0x00000000 0x00000000 0x00000000)) ;; i64x2 -(assert_return (invoke "i64x2.load32x2_s_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) -(assert_return (invoke "i64x2.load32x2_s_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605)) -(assert_return (invoke "i64x2.load32x2_s_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706)) -(assert_return (invoke "i64x2.load32x2_s_offset10_align4" (i32.const 3)) (v128.const i64x2 0xFFFFFFFF800F0E0D 0xFFFFFFFF84838281)) -(assert_return (invoke "i64x2.load32x2_s_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000)) -(assert_return (invoke "i64x2.load32x2_u_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) -(assert_return (invoke "i64x2.load32x2_u_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605)) -(assert_return (invoke "i64x2.load32x2_u_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706)) -(assert_return (invoke "i64x2.load32x2_u_offset10_align4" (i32.const 3)) (v128.const i64x2 0x00000000800F0E0D 0x0000000084838281)) -(assert_return (invoke "i64x2.load32x2_u_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000)) +(assert_return (invoke "v128.load32x2_s_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) +(assert_return (invoke "v128.load32x2_s_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605)) +(assert_return (invoke "v128.load32x2_s_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706)) +(assert_return (invoke "v128.load32x2_s_offset10_align4" (i32.const 3)) (v128.const i64x2 0xFFFFFFFF800F0E0D 0xFFFFFFFF84838281)) +(assert_return (invoke "v128.load32x2_s_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000)) +(assert_return (invoke "v128.load32x2_u_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504)) +(assert_return (invoke "v128.load32x2_u_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605)) +(assert_return (invoke "v128.load32x2_u_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706)) +(assert_return (invoke "v128.load32x2_u_offset10_align4" (i32.const 3)) (v128.const i64x2 0x00000000800F0E0D 0x0000000084838281)) +(assert_return (invoke "v128.load32x2_u_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000)) ;; out of bounds memory access -(assert_trap (invoke "i16x8.load8x8_s" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "i16x8.load8x8_u" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "i32x4.load16x4_s" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "i32x4.load16x4_u" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "i64x2.load32x2_s" (i32.const 65529)) "out of bounds memory access") -(assert_trap (invoke "i64x2.load32x2_u" (i32.const 65529)) "out of bounds memory access") +(assert_trap (invoke "v128.load8x8_s" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load8x8_u" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load16x4_s" (i32.const 65536)) "out of bounds memory access") +(assert_trap (invoke "v128.load16x4_u" (i32.const 65536)) "out of bounds memory access") +(assert_trap (invoke "v128.load32x2_s" (i32.const 65529)) "out of bounds memory access") +(assert_trap (invoke "v128.load32x2_u" (i32.const 65529)) "out of bounds memory access") -(assert_trap (invoke "i16x8.load8x8_s_offset1_align1" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "i16x8.load8x8_u_offset1_align1" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "i32x4.load16x4_s_offset1_align1" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "i32x4.load16x4_u_offset1_align1" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "i64x2.load32x2_s_offset1_align1" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "i64x2.load32x2_u_offset1_align1" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load8x8_s_offset1_align1" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load8x8_u_offset1_align1" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load16x4_s_offset1_align1" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load16x4_u_offset1_align1" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load32x2_s_offset1_align1" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load32x2_u_offset1_align1" (i32.const -1)) "out of bounds memory access") ;; type check -(assert_invalid (module (memory 0) (func (result v128) (i16x8.load8x8_s (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (i16x8.load8x8_u (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (i32x4.load16x4_s (f64.const 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (i32x4.load16x4_u (f64.const 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (i64x2.load32x2_s (v128.const i32x4 0 0 0 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (i64x2.load32x2_u (v128.const i32x4 0 0 0 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load8x8_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load8x8_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load16x4_s (f64.const 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load16x4_u (f64.const 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load32x2_s (v128.const i32x4 0 0 0 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load32x2_u (v128.const i32x4 0 0 0 0)))) "type mismatch") ;; Test operation with empty argument (assert_invalid (module (memory 0) - (func $i16x8.load8x8_s-arg-empty (result v128) - (i16x8.load8x8_s) + (func $v128.load8x8_s-arg-empty (result v128) + (v128.load8x8_s) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $i16x8.load8x8_u-arg-empty (result v128) - (i16x8.load8x8_u) + (func $v128.load8x8_u-arg-empty (result v128) + (v128.load8x8_u) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $i32x4.load16x4_s-arg-empty (result v128) - (i32x4.load16x4_s) + (func $v128.load16x4_s-arg-empty (result v128) + (v128.load16x4_s) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $i32x4.load16x4_u-arg-empty (result v128) - (i32x4.load16x4_u) + (func $v128.load16x4_u-arg-empty (result v128) + (v128.load16x4_u) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $i64x2.load32x2_s-arg-empty (result v128) - (i64x2.load32x2_s) + (func $v128.load32x2_s-arg-empty (result v128) + (v128.load32x2_s) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $i64x2.load32x2_u-arg-empty (result v128) - (i64x2.load32x2_u) + (func $v128.load32x2_u-arg-empty (result v128) + (v128.load32x2_u) ) ) "type mismatch" @@ -309,76 +309,76 @@ (module (memory 1) (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\80\81\82\83\84\85\86\87\88\89") - (func (export "i16x8.load8x8_s-in-block") (result v128) - (block (result v128) (block (result v128) (i16x8.load8x8_s (i32.const 0)))) + (func (export "v128.load8x8_s-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load8x8_s (i32.const 0)))) ) - (func (export "i16x8.load8x8_u-in-block") (result v128) - (block (result v128) (block (result v128) (i16x8.load8x8_u (i32.const 1)))) + (func (export "v128.load8x8_u-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load8x8_u (i32.const 1)))) ) - (func (export "i32x4.load16x4_s-in-block") (result v128) - (block (result v128) (block (result v128) (i32x4.load16x4_s (i32.const 2)))) + (func (export "v128.load16x4_s-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load16x4_s (i32.const 2)))) ) - (func (export "i32x4.load16x4_u-in-block") (result v128) - (block (result v128) (block (result v128) (i32x4.load16x4_u (i32.const 3)))) + (func (export "v128.load16x4_u-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load16x4_u (i32.const 3)))) ) - (func (export "i64x2.load32x2_s-in-block") (result v128) - (block (result v128) (block (result v128) (i64x2.load32x2_s (i32.const 4)))) + (func (export "v128.load32x2_s-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load32x2_s (i32.const 4)))) ) - (func (export "i64x2.load32x2_u-in-block") (result v128) - (block (result v128) (block (result v128) (i64x2.load32x2_u (i32.const 5)))) + (func (export "v128.load32x2_u-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load32x2_u (i32.const 5)))) ) - (func (export "i16x8.load8x8_s-as-br-value") (result v128) - (block (result v128) (br 0 (i16x8.load8x8_s (i32.const 6)))) + (func (export "v128.load8x8_s-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load8x8_s (i32.const 6)))) ) - (func (export "i16x8.load8x8_u-as-br-value") (result v128) - (block (result v128) (br 0 (i16x8.load8x8_u (i32.const 7)))) + (func (export "v128.load8x8_u-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load8x8_u (i32.const 7)))) ) - (func (export "i32x4.load16x4_s-as-br-value") (result v128) - (block (result v128) (br 0 (i32x4.load16x4_s (i32.const 8)))) + (func (export "v128.load16x4_s-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load16x4_s (i32.const 8)))) ) - (func (export "i32x4.load16x4_u-as-br-value") (result v128) - (block (result v128) (br 0 (i32x4.load16x4_u (i32.const 9)))) + (func (export "v128.load16x4_u-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load16x4_u (i32.const 9)))) ) - (func (export "i64x2.load32x2_s-as-br-value") (result v128) - (block (result v128) (br 0 (i64x2.load32x2_s (i32.const 10)))) + (func (export "v128.load32x2_s-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load32x2_s (i32.const 10)))) ) - (func (export "i64x2.load32x2_u-as-br-value") (result v128) - (block (result v128) (br 0 (i64x2.load32x2_u (i32.const 11)))) + (func (export "v128.load32x2_u-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load32x2_u (i32.const 11)))) ) - (func (export "i16x8.load8x8_s-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (i16x8.load8x8_s (i32.const 12))) + (func (export "v128.load8x8_s-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load8x8_s (i32.const 12))) ) - (func (export "i16x8.load8x8_u-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (i16x8.load8x8_u (i32.const 13))) + (func (export "v128.load8x8_u-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load8x8_u (i32.const 13))) ) - (func (export "i32x4.load16x4_s-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (i32x4.load16x4_s (i32.const 14))) + (func (export "v128.load16x4_s-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load16x4_s (i32.const 14))) ) - (func (export "i32x4.load16x4_u-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (i32x4.load16x4_u (i32.const 15))) + (func (export "v128.load16x4_u-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load16x4_u (i32.const 15))) ) - (func (export "i64x2.load32x2_s-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (i64x2.load32x2_s (i32.const 16))) + (func (export "v128.load32x2_s-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load32x2_s (i32.const 16))) ) - (func (export "i64x2.load32x2_u-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (i64x2.load32x2_u (i32.const 17))) + (func (export "v128.load32x2_u-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load32x2_u (i32.const 17))) ) ) -(assert_return (invoke "i16x8.load8x8_s-in-block") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) -(assert_return (invoke "i16x8.load8x8_u-in-block") (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008)) -(assert_return (invoke "i32x4.load16x4_s-in-block") (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908)) -(assert_return (invoke "i32x4.load16x4_u-in-block") (v128.const i32x4 0x00000403 0x00000605 0x00000807 0x00000A09)) -(assert_return (invoke "i64x2.load32x2_s-in-block") (v128.const i64x2 0x0000000007060504 0x000000000B0A0908)) -(assert_return (invoke "i64x2.load32x2_u-in-block") (v128.const i64x2 0x0000000008070605 0x000000000C0B0A09)) -(assert_return (invoke "i16x8.load8x8_s-as-br-value") (v128.const i16x8 0x0006 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D)) -(assert_return (invoke "i16x8.load8x8_u-as-br-value") (v128.const i16x8 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E)) -(assert_return (invoke "i32x4.load16x4_s-as-br-value") (v128.const i32x4 0x00000908 0x00000B0A 0x00000D0C 0x00000F0E)) -(assert_return (invoke "i32x4.load16x4_u-as-br-value") (v128.const i32x4 0x00000A09 0x00000C0B 0x00000E0D 0x0000800F)) -(assert_return (invoke "i64x2.load32x2_s-as-br-value") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E)) -(assert_return (invoke "i64x2.load32x2_u-as-br-value") (v128.const i64x2 0x000000000E0D0C0B 0x000000008281800F)) -(assert_return (invoke "i16x8.load8x8_s-extract_lane_s-operand") (i32.const 12)) -(assert_return (invoke "i16x8.load8x8_u-extract_lane_s-operand") (i32.const 13)) -(assert_return (invoke "i32x4.load16x4_s-extract_lane_s-operand") (i32.const 14)) -(assert_return (invoke "i32x4.load16x4_u-extract_lane_s-operand") (i32.const 15)) -(assert_return (invoke "i64x2.load32x2_s-extract_lane_s-operand") (i32.const -128)) -(assert_return (invoke "i64x2.load32x2_u-extract_lane_s-operand") (i32.const -127)) +(assert_return (invoke "v128.load8x8_s-in-block") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007)) +(assert_return (invoke "v128.load8x8_u-in-block") (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008)) +(assert_return (invoke "v128.load16x4_s-in-block") (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908)) +(assert_return (invoke "v128.load16x4_u-in-block") (v128.const i32x4 0x00000403 0x00000605 0x00000807 0x00000A09)) +(assert_return (invoke "v128.load32x2_s-in-block") (v128.const i64x2 0x0000000007060504 0x000000000B0A0908)) +(assert_return (invoke "v128.load32x2_u-in-block") (v128.const i64x2 0x0000000008070605 0x000000000C0B0A09)) +(assert_return (invoke "v128.load8x8_s-as-br-value") (v128.const i16x8 0x0006 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D)) +(assert_return (invoke "v128.load8x8_u-as-br-value") (v128.const i16x8 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E)) +(assert_return (invoke "v128.load16x4_s-as-br-value") (v128.const i32x4 0x00000908 0x00000B0A 0x00000D0C 0x00000F0E)) +(assert_return (invoke "v128.load16x4_u-as-br-value") (v128.const i32x4 0x00000A09 0x00000C0B 0x00000E0D 0x0000800F)) +(assert_return (invoke "v128.load32x2_s-as-br-value") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E)) +(assert_return (invoke "v128.load32x2_u-as-br-value") (v128.const i64x2 0x000000000E0D0C0B 0x000000008281800F)) +(assert_return (invoke "v128.load8x8_s-extract_lane_s-operand") (i32.const 12)) +(assert_return (invoke "v128.load8x8_u-extract_lane_s-operand") (i32.const 13)) +(assert_return (invoke "v128.load16x4_s-extract_lane_s-operand") (i32.const 14)) +(assert_return (invoke "v128.load16x4_u-extract_lane_s-operand") (i32.const 15)) +(assert_return (invoke "v128.load32x2_s-extract_lane_s-operand") (i32.const -128)) +(assert_return (invoke "v128.load32x2_u-extract_lane_s-operand") (i32.const -127)) diff --git a/test/core/simd/simd_load_splat.wast b/test/core/simd/simd_load_splat.wast index 837dafcb0..d9642f8bd 100644 --- a/test/core/simd/simd_load_splat.wast +++ b/test/core/simd/simd_load_splat.wast @@ -5,61 +5,61 @@ (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F") (data (i32.const 65520) "\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F") - (func (export "v8x16.load_splat") (param $address i32) (result v128) (v8x16.load_splat (local.get $address))) - (func (export "v16x8.load_splat") (param $address i32) (result v128) (v16x8.load_splat (local.get $address))) - (func (export "v32x4.load_splat") (param $address i32) (result v128) (v32x4.load_splat (local.get $address))) - (func (export "v64x2.load_splat") (param $address i32) (result v128) (v64x2.load_splat (local.get $address))) + (func (export "v128.load8_splat") (param $address i32) (result v128) (v128.load8_splat (local.get $address))) + (func (export "v128.load16_splat") (param $address i32) (result v128) (v128.load16_splat (local.get $address))) + (func (export "v128.load32_splat") (param $address i32) (result v128) (v128.load32_splat (local.get $address))) + (func (export "v128.load64_splat") (param $address i32) (result v128) (v128.load64_splat (local.get $address))) ;; Load data with different offset/align arguments - (func (export "v8x16.offset0") (param $address i32) (result v128) (v8x16.load_splat offset=0 (local.get $address))) - (func (export "v8x16.align1") (param $address i32) (result v128) (v8x16.load_splat align=1 (local.get $address))) - (func (export "v8x16.offset1_align1") (param $address i32) (result v128) (v8x16.load_splat offset=1 align=1 (local.get $address))) - (func (export "v8x16.offset2_align1") (param $address i32) (result v128) (v8x16.load_splat offset=2 align=1 (local.get $address))) - (func (export "v8x16.offset15_align1") (param $address i32) (result v128) (v8x16.load_splat offset=15 align=1 (local.get $address))) + (func (export "v8x16.offset0") (param $address i32) (result v128) (v128.load8_splat offset=0 (local.get $address))) + (func (export "v8x16.align1") (param $address i32) (result v128) (v128.load8_splat align=1 (local.get $address))) + (func (export "v8x16.offset1_align1") (param $address i32) (result v128) (v128.load8_splat offset=1 align=1 (local.get $address))) + (func (export "v8x16.offset2_align1") (param $address i32) (result v128) (v128.load8_splat offset=2 align=1 (local.get $address))) + (func (export "v8x16.offset15_align1") (param $address i32) (result v128) (v128.load8_splat offset=15 align=1 (local.get $address))) - (func (export "v16x8.offset0") (param $address i32) (result v128) (v16x8.load_splat offset=0 (local.get $address))) - (func (export "v16x8.align1") (param $address i32) (result v128) (v16x8.load_splat align=1 (local.get $address))) - (func (export "v16x8.offset1_align1") (param $address i32) (result v128) (v16x8.load_splat offset=1 align=1 (local.get $address))) - (func (export "v16x8.offset2_align1") (param $address i32) (result v128) (v16x8.load_splat offset=2 align=1 (local.get $address))) - (func (export "v16x8.offset15_align2") (param $address i32) (result v128) (v16x8.load_splat offset=15 align=2 (local.get $address))) + (func (export "v16x8.offset0") (param $address i32) (result v128) (v128.load16_splat offset=0 (local.get $address))) + (func (export "v16x8.align1") (param $address i32) (result v128) (v128.load16_splat align=1 (local.get $address))) + (func (export "v16x8.offset1_align1") (param $address i32) (result v128) (v128.load16_splat offset=1 align=1 (local.get $address))) + (func (export "v16x8.offset2_align1") (param $address i32) (result v128) (v128.load16_splat offset=2 align=1 (local.get $address))) + (func (export "v16x8.offset15_align2") (param $address i32) (result v128) (v128.load16_splat offset=15 align=2 (local.get $address))) - (func (export "v32x4.offset0") (param $address i32) (result v128) (v32x4.load_splat offset=0 (local.get $address))) - (func (export "v32x4.align1") (param $address i32) (result v128) (v32x4.load_splat align=1 (local.get $address))) - (func (export "v32x4.offset1_align1") (param $address i32) (result v128) (v32x4.load_splat offset=1 align=1 (local.get $address))) - (func (export "v32x4.offset2_align2") (param $address i32) (result v128) (v32x4.load_splat offset=2 align=2 (local.get $address))) - (func (export "v32x4.offset15_align4") (param $address i32) (result v128) (v32x4.load_splat offset=15 align=4 (local.get $address))) + (func (export "v32x4.offset0") (param $address i32) (result v128) (v128.load32_splat offset=0 (local.get $address))) + (func (export "v32x4.align1") (param $address i32) (result v128) (v128.load32_splat align=1 (local.get $address))) + (func (export "v32x4.offset1_align1") (param $address i32) (result v128) (v128.load32_splat offset=1 align=1 (local.get $address))) + (func (export "v32x4.offset2_align2") (param $address i32) (result v128) (v128.load32_splat offset=2 align=2 (local.get $address))) + (func (export "v32x4.offset15_align4") (param $address i32) (result v128) (v128.load32_splat offset=15 align=4 (local.get $address))) - (func (export "v64x2.offset0") (param $address i32) (result v128) (v64x2.load_splat offset=0 (local.get $address))) - (func (export "v64x2.align1") (param $address i32) (result v128) (v64x2.load_splat align=1 (local.get $address))) - (func (export "v64x2.offset1_align2") (param $address i32) (result v128) (v64x2.load_splat offset=1 align=2 (local.get $address))) - (func (export "v64x2.offset2_align4") (param $address i32) (result v128) (v64x2.load_splat offset=2 align=4 (local.get $address))) - (func (export "v64x2.offset15_align8") (param $address i32) (result v128) (v64x2.load_splat offset=15 align=8 (local.get $address))) + (func (export "v64x2.offset0") (param $address i32) (result v128) (v128.load64_splat offset=0 (local.get $address))) + (func (export "v64x2.align1") (param $address i32) (result v128) (v128.load64_splat align=1 (local.get $address))) + (func (export "v64x2.offset1_align2") (param $address i32) (result v128) (v128.load64_splat offset=1 align=2 (local.get $address))) + (func (export "v64x2.offset2_align4") (param $address i32) (result v128) (v128.load64_splat offset=2 align=4 (local.get $address))) + (func (export "v64x2.offset15_align8") (param $address i32) (result v128) (v128.load64_splat offset=15 align=8 (local.get $address))) - (func (export "v8x16.offset65536") (param $address i32) (result v128) (v8x16.load_splat offset=65536 (local.get $address))) - (func (export "v16x8.offset65535") (param $address i32) (result v128) (v16x8.load_splat offset=65535 (local.get $address))) - (func (export "v32x4.offset65533") (param $address i32) (result v128) (v32x4.load_splat offset=65533 (local.get $address))) - (func (export "v64x2.offset65529") (param $address i32) (result v128) (v64x2.load_splat offset=65529 (local.get $address))) + (func (export "v8x16.offset65536") (param $address i32) (result v128) (v128.load8_splat offset=65536 (local.get $address))) + (func (export "v16x8.offset65535") (param $address i32) (result v128) (v128.load16_splat offset=65535 (local.get $address))) + (func (export "v32x4.offset65533") (param $address i32) (result v128) (v128.load32_splat offset=65533 (local.get $address))) + (func (export "v64x2.offset65529") (param $address i32) (result v128) (v128.load64_splat offset=65529 (local.get $address))) ) -(assert_return (invoke "v8x16.load_splat" (i32.const 0)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "v8x16.load_splat" (i32.const 1)) (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "v8x16.load_splat" (i32.const 2)) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) -(assert_return (invoke "v8x16.load_splat" (i32.const 3)) (v128.const i8x16 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3)) -(assert_return (invoke "v8x16.load_splat" (i32.const 65535)) (v128.const i8x16 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31)) -(assert_return (invoke "v16x8.load_splat" (i32.const 4)) (v128.const i16x8 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504)) -(assert_return (invoke "v16x8.load_splat" (i32.const 5)) (v128.const i16x8 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605)) -(assert_return (invoke "v16x8.load_splat" (i32.const 6)) (v128.const i16x8 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706)) -(assert_return (invoke "v16x8.load_splat" (i32.const 7)) (v128.const i16x8 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807)) -(assert_return (invoke "v16x8.load_splat" (i32.const 65534)) (v128.const i16x8 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E)) -(assert_return (invoke "v32x4.load_splat" (i32.const 8)) (v128.const i32x4 0x0B0A0908 0x0B0A0908 0x0B0A0908 0x0B0A0908)) -(assert_return (invoke "v32x4.load_splat" (i32.const 9)) (v128.const i32x4 0x0C0B0A09 0x0C0B0A09 0x0C0B0A09 0x0C0B0A09)) -(assert_return (invoke "v32x4.load_splat" (i32.const 10)) (v128.const i32x4 0x0D0C0B0A 0x0D0C0B0A 0x0D0C0B0A 0x0D0C0B0A)) -(assert_return (invoke "v32x4.load_splat" (i32.const 11)) (v128.const i32x4 0x0E0D0C0B 0x0E0D0C0B 0x0E0D0C0B 0x0E0D0C0B)) -(assert_return (invoke "v32x4.load_splat" (i32.const 65532)) (v128.const i32x4 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C)) -(assert_return (invoke "v64x2.load_splat" (i32.const 12)) (v128.const i64x2 0x000000000F0E0D0C 0x000000000F0E0D0C)) -(assert_return (invoke "v64x2.load_splat" (i32.const 13)) (v128.const i64x2 0x00000000000F0E0D 0x00000000000F0E0D)) -(assert_return (invoke "v64x2.load_splat" (i32.const 14)) (v128.const i64x2 0x0000000000000F0E 0x0000000000000F0E)) -(assert_return (invoke "v64x2.load_splat" (i32.const 15)) (v128.const i64x2 0x000000000000000F 0x000000000000000F)) -(assert_return (invoke "v64x2.load_splat" (i32.const 65528)) (v128.const i64x2 0x1F1E1D1C1B1A1918 0x1F1E1D1C1B1A1918)) +(assert_return (invoke "v128.load8_splat" (i32.const 0)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "v128.load8_splat" (i32.const 1)) (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "v128.load8_splat" (i32.const 2)) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) +(assert_return (invoke "v128.load8_splat" (i32.const 3)) (v128.const i8x16 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3)) +(assert_return (invoke "v128.load8_splat" (i32.const 65535)) (v128.const i8x16 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31)) +(assert_return (invoke "v128.load16_splat" (i32.const 4)) (v128.const i16x8 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504)) +(assert_return (invoke "v128.load16_splat" (i32.const 5)) (v128.const i16x8 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605)) +(assert_return (invoke "v128.load16_splat" (i32.const 6)) (v128.const i16x8 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706)) +(assert_return (invoke "v128.load16_splat" (i32.const 7)) (v128.const i16x8 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807)) +(assert_return (invoke "v128.load16_splat" (i32.const 65534)) (v128.const i16x8 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E)) +(assert_return (invoke "v128.load32_splat" (i32.const 8)) (v128.const i32x4 0x0B0A0908 0x0B0A0908 0x0B0A0908 0x0B0A0908)) +(assert_return (invoke "v128.load32_splat" (i32.const 9)) (v128.const i32x4 0x0C0B0A09 0x0C0B0A09 0x0C0B0A09 0x0C0B0A09)) +(assert_return (invoke "v128.load32_splat" (i32.const 10)) (v128.const i32x4 0x0D0C0B0A 0x0D0C0B0A 0x0D0C0B0A 0x0D0C0B0A)) +(assert_return (invoke "v128.load32_splat" (i32.const 11)) (v128.const i32x4 0x0E0D0C0B 0x0E0D0C0B 0x0E0D0C0B 0x0E0D0C0B)) +(assert_return (invoke "v128.load32_splat" (i32.const 65532)) (v128.const i32x4 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C)) +(assert_return (invoke "v128.load64_splat" (i32.const 12)) (v128.const i64x2 0x000000000F0E0D0C 0x000000000F0E0D0C)) +(assert_return (invoke "v128.load64_splat" (i32.const 13)) (v128.const i64x2 0x00000000000F0E0D 0x00000000000F0E0D)) +(assert_return (invoke "v128.load64_splat" (i32.const 14)) (v128.const i64x2 0x0000000000000F0E 0x0000000000000F0E)) +(assert_return (invoke "v128.load64_splat" (i32.const 15)) (v128.const i64x2 0x000000000000000F 0x000000000000000F)) +(assert_return (invoke "v128.load64_splat" (i32.const 65528)) (v128.const i64x2 0x1F1E1D1C1B1A1918 0x1F1E1D1C1B1A1918)) ;; v8x16 (assert_return (invoke "v8x16.offset0" (i32.const 0)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) @@ -116,14 +116,14 @@ ;; Out of bounds memory access -(assert_trap (invoke "v8x16.load_splat" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "v16x8.load_splat" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "v32x4.load_splat" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "v64x2.load_splat" (i32.const -1)) "out of bounds memory access") -(assert_trap (invoke "v8x16.load_splat" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "v16x8.load_splat" (i32.const 65535)) "out of bounds memory access") -(assert_trap (invoke "v32x4.load_splat" (i32.const 65533)) "out of bounds memory access") -(assert_trap (invoke "v64x2.load_splat" (i32.const 65529)) "out of bounds memory access") +(assert_trap (invoke "v128.load8_splat" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load16_splat" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load32_splat" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load64_splat" (i32.const -1)) "out of bounds memory access") +(assert_trap (invoke "v128.load8_splat" (i32.const 65536)) "out of bounds memory access") +(assert_trap (invoke "v128.load16_splat" (i32.const 65535)) "out of bounds memory access") +(assert_trap (invoke "v128.load32_splat" (i32.const 65533)) "out of bounds memory access") +(assert_trap (invoke "v128.load64_splat" (i32.const 65529)) "out of bounds memory access") (assert_trap (invoke "v8x16.offset1_align1" (i32.const 65535)) "out of bounds memory access") (assert_trap (invoke "v8x16.offset2_align1" (i32.const 65535)) "out of bounds memory access") @@ -158,63 +158,63 @@ (module (memory 1) (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A") - (func (export "v8x16.load_splat-in-block") (result v128) - (block (result v128) (block (result v128) (v8x16.load_splat (i32.const 0)))) + (func (export "v128.load8_splat-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load8_splat (i32.const 0)))) ) - (func (export "v16x8.load_splat-in-block") (result v128) - (block (result v128) (block (result v128) (v16x8.load_splat (i32.const 1)))) + (func (export "v128.load16_splat-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load16_splat (i32.const 1)))) ) - (func (export "v32x4.load_splat-in-block") (result v128) - (block (result v128) (block (result v128) (v32x4.load_splat (i32.const 2)))) + (func (export "v128.load32_splat-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load32_splat (i32.const 2)))) ) - (func (export "v64x2.load_splat-in-block") (result v128) - (block (result v128) (block (result v128) (v64x2.load_splat (i32.const 9)))) + (func (export "v128.load64_splat-in-block") (result v128) + (block (result v128) (block (result v128) (v128.load64_splat (i32.const 9)))) ) - (func (export "v8x16.load_splat-as-br-value") (result v128) - (block (result v128) (br 0 (v8x16.load_splat (i32.const 3)))) + (func (export "v128.load8_splat-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load8_splat (i32.const 3)))) ) - (func (export "v16x8.load_splat-as-br-value") (result v128) - (block (result v128) (br 0 (v16x8.load_splat (i32.const 4)))) + (func (export "v128.load16_splat-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load16_splat (i32.const 4)))) ) - (func (export "v32x4.load_splat-as-br-value") (result v128) - (block (result v128) (br 0 (v32x4.load_splat (i32.const 5)))) + (func (export "v128.load32_splat-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load32_splat (i32.const 5)))) ) - (func (export "v64x2.load_splat-as-br-value") (result v128) - (block (result v128) (br 0 (v64x2.load_splat (i32.const 10)))) + (func (export "v128.load64_splat-as-br-value") (result v128) + (block (result v128) (br 0 (v128.load64_splat (i32.const 10)))) ) - (func (export "v8x16.load_splat-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (v8x16.load_splat (i32.const 6))) + (func (export "v128.load8_splat-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load8_splat (i32.const 6))) ) - (func (export "v16x8.load_splat-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (v16x8.load_splat (i32.const 7))) + (func (export "v128.load16_splat-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load16_splat (i32.const 7))) ) - (func (export "v32x4.load_splat-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (v32x4.load_splat (i32.const 8))) + (func (export "v128.load32_splat-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load32_splat (i32.const 8))) ) - (func (export "v64x2.load_splat-extract_lane_s-operand") (result i32) - (i8x16.extract_lane_s 0 (v64x2.load_splat (i32.const 11))) + (func (export "v128.load64_splat-extract_lane_s-operand") (result i32) + (i8x16.extract_lane_s 0 (v128.load64_splat (i32.const 11))) ) ) -(assert_return (invoke "v8x16.load_splat-in-block") (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "v16x8.load_splat-in-block") (v128.const i16x8 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201)) -(assert_return (invoke "v32x4.load_splat-in-block") (v128.const i32x4 0x05040302 0x05040302 0x05040302 0x05040302)) -(assert_return (invoke "v64x2.load_splat-in-block") (v128.const i64x2 0x0000000000000A09 0x0000000000000A09)) -(assert_return (invoke "v8x16.load_splat-as-br-value") (v128.const i8x16 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3)) -(assert_return (invoke "v16x8.load_splat-as-br-value") (v128.const i16x8 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504)) -(assert_return (invoke "v32x4.load_splat-as-br-value") (v128.const i32x4 0x08070605 0x08070605 0x08070605 0x08070605)) -(assert_return (invoke "v64x2.load_splat-as-br-value") (v128.const i64x2 0x000000000000000A 0x000000000000000A)) -(assert_return (invoke "v8x16.load_splat-extract_lane_s-operand") (i32.const 6)) -(assert_return (invoke "v16x8.load_splat-extract_lane_s-operand") (i32.const 7)) -(assert_return (invoke "v32x4.load_splat-extract_lane_s-operand") (i32.const 8)) -(assert_return (invoke "v64x2.load_splat-extract_lane_s-operand") (i32.const 0)) +(assert_return (invoke "v128.load8_splat-in-block") (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "v128.load16_splat-in-block") (v128.const i16x8 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201)) +(assert_return (invoke "v128.load32_splat-in-block") (v128.const i32x4 0x05040302 0x05040302 0x05040302 0x05040302)) +(assert_return (invoke "v128.load64_splat-in-block") (v128.const i64x2 0x0000000000000A09 0x0000000000000A09)) +(assert_return (invoke "v128.load8_splat-as-br-value") (v128.const i8x16 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3)) +(assert_return (invoke "v128.load16_splat-as-br-value") (v128.const i16x8 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504)) +(assert_return (invoke "v128.load32_splat-as-br-value") (v128.const i32x4 0x08070605 0x08070605 0x08070605 0x08070605)) +(assert_return (invoke "v128.load64_splat-as-br-value") (v128.const i64x2 0x000000000000000A 0x000000000000000A)) +(assert_return (invoke "v128.load8_splat-extract_lane_s-operand") (i32.const 6)) +(assert_return (invoke "v128.load16_splat-extract_lane_s-operand") (i32.const 7)) +(assert_return (invoke "v128.load32_splat-extract_lane_s-operand") (i32.const 8)) +(assert_return (invoke "v128.load64_splat-extract_lane_s-operand") (i32.const 0)) ;; Type check -(assert_invalid (module (memory 0) (func (result v128) (v8x16.load_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (v16x8.load_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (v32x4.load_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") -(assert_invalid (module (memory 0) (func (result v128) (v64x2.load_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load8_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load16_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load32_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") +(assert_invalid (module (memory 0) (func (result v128) (v128.load64_splat (v128.const i32x4 0 0 0 0)))) "type mismatch") ;; Unknown operator @@ -229,32 +229,32 @@ (assert_invalid (module (memory 0) - (func $v8x16.load_splat-arg-empty (result v128) - (v8x16.load_splat) + (func $v128.load8_splat-arg-empty (result v128) + (v128.load8_splat) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $v16x8.load_splat-arg-empty (result v128) - (v16x8.load_splat) + (func $v128.load16_splat-arg-empty (result v128) + (v128.load16_splat) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $v32x4.load_splat-arg-empty (result v128) - (v32x4.load_splat) + (func $v128.load32_splat-arg-empty (result v128) + (v128.load32_splat) ) ) "type mismatch" ) (assert_invalid (module (memory 0) - (func $v64x2.load_splat-arg-empty (result v128) - (v64x2.load_splat) + (func $v128.load64_splat-arg-empty (result v128) + (v128.load64_splat) ) ) "type mismatch"