summaryrefslogtreecommitdiff
path: root/test/simd.wast.fromBinary
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2020-10-22 21:47:17 -0700
committerGitHub <noreply@github.com>2020-10-22 21:47:17 -0700
commitdaf0782b7754e225c9063f9fbf5195b4b4a3c7e3 (patch)
treed0004ebe92a2559e8bfcd86c4bdfdf972dc81432 /test/simd.wast.fromBinary
parenta2fa37eb94fdd6896f4d90f22e34fbd5f028d742 (diff)
downloadbinaryen-daf0782b7754e225c9063f9fbf5195b4b4a3c7e3.tar.gz
binaryen-daf0782b7754e225c9063f9fbf5195b4b4a3c7e3.tar.bz2
binaryen-daf0782b7754e225c9063f9fbf5195b4b4a3c7e3.zip
Implement v128.{load,store}{8,16,32,64}_lane instructions (#3278)
These instructions are proposed in https://github.com/WebAssembly/simd/pull/350. This PR implements them throughout Binaryen except in the C/JS APIs and in the fuzzer, where it leaves TODOs instead. Right now these instructions are just being implemented for prototyping so adding them to the APIs isn't critical and they aren't generally available to be fuzzed in Wasm engines.
Diffstat (limited to 'test/simd.wast.fromBinary')
-rw-r--r--test/simd.wast.fromBinary87
1 files changed, 86 insertions, 1 deletions
diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary
index a56689449..932b45950 100644
--- a/test/simd.wast.fromBinary
+++ b/test/simd.wast.fromBinary
@@ -4,9 +4,10 @@
(type $v128_=>_i32 (func (param v128) (result i32)))
(type $i32_=>_v128 (func (param i32) (result v128)))
(type $v128_i32_=>_v128 (func (param v128 i32) (result v128)))
+ (type $i32_v128_=>_none (func (param i32 v128)))
+ (type $i32_v128_=>_v128 (func (param i32 v128) (result v128)))
(type $none_=>_v128 (func (result v128)))
(type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128)))
- (type $i32_v128_=>_none (func (param i32 v128)))
(type $v128_=>_i64 (func (param v128) (result i64)))
(type $v128_=>_f32 (func (param v128) (result f32)))
(type $v128_=>_f64 (func (param v128) (result f64)))
@@ -440,6 +441,90 @@
(local.get $2)
)
)
+ (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load8_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load16_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load32_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane offset=32 align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.store8_lane (param $0 i32) (param $1 v128)
+ (v128.store8_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.store16_lane (param $0 i32) (param $1 v128)
+ (v128.store16_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.store32_lane (param $0 i32) (param $1 v128)
+ (v128.store32_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.store64_lane (param $0 i32) (param $1 v128)
+ (v128.store64_lane 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.store64_lane_align (param $0 i32) (param $1 v128)
+ (v128.store64_lane align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.store64_lane_offset (param $0 i32) (param $1 v128)
+ (v128.store64_lane offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128)
+ (v128.store64_lane offset=32 align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(func $i8x16.abs (param $0 v128) (result v128)
(i8x16.abs
(local.get $0)