summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2020-12-11 19:06:34 -0500
committerGitHub <noreply@github.com>2020-12-11 19:06:34 -0500
commitdd33ae0512aa97f537d40e61631d268c8a8fd17e (patch)
treee5c219ba349e56940669bb873bb57a3f2626bf77 /test
parent290147d8d43a7448d68939ec711b524ba4fb3fbd (diff)
downloadbinaryen-dd33ae0512aa97f537d40e61631d268c8a8fd17e.tar.gz
binaryen-dd33ae0512aa97f537d40e61631d268c8a8fd17e.tar.bz2
binaryen-dd33ae0512aa97f537d40e61631d268c8a8fd17e.zip
Prototype SIMD instructions implemented in LLVM (#3440)
- i64x2.eq (https://github.com/WebAssembly/simd/pull/381) - i64x2 widens (https://github.com/WebAssembly/simd/pull/290) - i64x2.bitmask (https://github.com/WebAssembly/simd/pull/368) - signselect ops (https://github.com/WebAssembly/simd/pull/124)
Diffstat (limited to 'test')
-rw-r--r--test/simd.wast59
-rw-r--r--test/simd.wast.from-wast61
-rw-r--r--test/simd.wast.fromBinary61
-rw-r--r--test/simd.wast.fromBinary.noDebugInfo415
-rw-r--r--test/spec/simd.wast24
5 files changed, 440 insertions, 180 deletions
diff --git a/test/simd.wast b/test/simd.wast
index 8ff2298a8..7296a075e 100644
--- a/test/simd.wast
+++ b/test/simd.wast
@@ -316,6 +316,12 @@
(local.get $1)
)
)
+ (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128)
+ (i64x2.eq
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(func $f32x4.eq (param $0 v128) (param $1 v128) (result v128)
(f32x4.eq
(local.get $0)
@@ -424,6 +430,34 @@
(local.get $2)
)
)
+ (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v8x16.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v16x8.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v32x4.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v64x2.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
(func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128)
(v128.load8_lane 0
(local.get $0)
@@ -903,6 +937,11 @@
(local.get $0)
)
)
+ (func $i64x2.bitmask (param $0 v128) (result i32)
+ (i64x2.bitmask
+ (local.get $0)
+ )
+ )
(func $i64x2.shl (param $0 v128) (param $1 i32) (result v128)
(i64x2.shl
(local.get $0)
@@ -1281,6 +1320,26 @@
(local.get $0)
)
)
+ (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_u
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_u
+ (local.get $0)
+ )
+ )
(func $i16x8.load8x8_u (param $0 i32) (result v128)
(i16x8.load8x8_u
(local.get $0)
diff --git a/test/simd.wast.from-wast b/test/simd.wast.from-wast
index bf71a0ac3..ab30772d3 100644
--- a/test/simd.wast.from-wast
+++ b/test/simd.wast.from-wast
@@ -4,10 +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 $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (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 $v128_=>_i64 (func (param v128) (result i64)))
(type $v128_=>_f32 (func (param v128) (result f32)))
(type $v128_=>_f64 (func (param v128) (result f64)))
@@ -333,6 +333,12 @@
(local.get $1)
)
)
+ (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128)
+ (i64x2.eq
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(func $f32x4.eq (param $0 v128) (param $1 v128) (result v128)
(f32x4.eq
(local.get $0)
@@ -441,6 +447,34 @@
(local.get $2)
)
)
+ (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v8x16.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v16x8.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v32x4.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v64x2.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
(func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128)
(v128.load8_lane 0
(local.get $0)
@@ -920,6 +954,11 @@
(local.get $0)
)
)
+ (func $i64x2.bitmask (param $0 v128) (result i32)
+ (i64x2.bitmask
+ (local.get $0)
+ )
+ )
(func $i64x2.shl (param $0 v128) (param $1 i32) (result v128)
(i64x2.shl
(local.get $0)
@@ -1298,6 +1337,26 @@
(local.get $0)
)
)
+ (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_u
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_u
+ (local.get $0)
+ )
+ )
(func $i16x8.load8x8_u (param $0 i32) (result v128)
(i16x8.load8x8_u
(local.get $0)
diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary
index 94435e153..935de0c09 100644
--- a/test/simd.wast.fromBinary
+++ b/test/simd.wast.fromBinary
@@ -4,10 +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 $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (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 $v128_=>_i64 (func (param v128) (result i64)))
(type $v128_=>_f32 (func (param v128) (result f32)))
(type $v128_=>_f64 (func (param v128) (result f64)))
@@ -333,6 +333,12 @@
(local.get $1)
)
)
+ (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128)
+ (i64x2.eq
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(func $f32x4.eq (param $0 v128) (param $1 v128) (result v128)
(f32x4.eq
(local.get $0)
@@ -441,6 +447,34 @@
(local.get $2)
)
)
+ (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v8x16.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v16x8.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v32x4.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v64x2.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
(func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128)
(v128.load8_lane 0
(local.get $0)
@@ -920,6 +954,11 @@
(local.get $0)
)
)
+ (func $i64x2.bitmask (param $0 v128) (result i32)
+ (i64x2.bitmask
+ (local.get $0)
+ )
+ )
(func $i64x2.shl (param $0 v128) (param $1 i32) (result v128)
(i64x2.shl
(local.get $0)
@@ -1298,6 +1337,26 @@
(local.get $0)
)
)
+ (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_u
+ (local.get $0)
+ )
+ )
+ (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_u
+ (local.get $0)
+ )
+ )
(func $i16x8.load8x8_u (param $0 i32) (result v128)
(i16x8.load8x8_u
(local.get $0)
diff --git a/test/simd.wast.fromBinary.noDebugInfo b/test/simd.wast.fromBinary.noDebugInfo
index 25d3ef4e2..42543f448 100644
--- a/test/simd.wast.fromBinary.noDebugInfo
+++ b/test/simd.wast.fromBinary.noDebugInfo
@@ -4,10 +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 $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (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 $v128_=>_i64 (func (param v128) (result i64)))
(type $v128_=>_f32 (func (param v128) (result f32)))
(type $v128_=>_f64 (func (param v128) (result f64)))
@@ -334,1011 +334,1070 @@
)
)
(func $58 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.eq
+ (i64x2.eq
(local.get $0)
(local.get $1)
)
)
(func $59 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.ne
+ (f32x4.eq
(local.get $0)
(local.get $1)
)
)
(func $60 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.lt
+ (f32x4.ne
(local.get $0)
(local.get $1)
)
)
(func $61 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.gt
+ (f32x4.lt
(local.get $0)
(local.get $1)
)
)
(func $62 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.le
+ (f32x4.gt
(local.get $0)
(local.get $1)
)
)
(func $63 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.ge
+ (f32x4.le
(local.get $0)
(local.get $1)
)
)
(func $64 (param $0 v128) (param $1 v128) (result v128)
- (f64x2.eq
+ (f32x4.ge
(local.get $0)
(local.get $1)
)
)
(func $65 (param $0 v128) (param $1 v128) (result v128)
- (f64x2.ne
+ (f64x2.eq
(local.get $0)
(local.get $1)
)
)
(func $66 (param $0 v128) (param $1 v128) (result v128)
- (f64x2.lt
+ (f64x2.ne
(local.get $0)
(local.get $1)
)
)
(func $67 (param $0 v128) (param $1 v128) (result v128)
- (f64x2.gt
+ (f64x2.lt
(local.get $0)
(local.get $1)
)
)
(func $68 (param $0 v128) (param $1 v128) (result v128)
- (f64x2.le
+ (f64x2.gt
(local.get $0)
(local.get $1)
)
)
(func $69 (param $0 v128) (param $1 v128) (result v128)
+ (f64x2.le
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $70 (param $0 v128) (param $1 v128) (result v128)
(f64x2.ge
(local.get $0)
(local.get $1)
)
)
- (func $70 (param $0 v128) (result v128)
+ (func $71 (param $0 v128) (result v128)
(v128.not
(local.get $0)
)
)
- (func $71 (param $0 v128) (param $1 v128) (result v128)
+ (func $72 (param $0 v128) (param $1 v128) (result v128)
(v128.and
(local.get $0)
(local.get $1)
)
)
- (func $72 (param $0 v128) (param $1 v128) (result v128)
+ (func $73 (param $0 v128) (param $1 v128) (result v128)
(v128.or
(local.get $0)
(local.get $1)
)
)
- (func $73 (param $0 v128) (param $1 v128) (result v128)
+ (func $74 (param $0 v128) (param $1 v128) (result v128)
(v128.xor
(local.get $0)
(local.get $1)
)
)
- (func $74 (param $0 v128) (param $1 v128) (result v128)
+ (func $75 (param $0 v128) (param $1 v128) (result v128)
(v128.andnot
(local.get $0)
(local.get $1)
)
)
- (func $75 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $76 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(v128.bitselect
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $76 (param $0 i32) (param $1 v128) (result v128)
+ (func $77 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v8x16.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $78 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v16x8.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $79 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v32x4.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $80 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v64x2.signselect
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (func $81 (param $0 i32) (param $1 v128) (result v128)
(v128.load8_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $77 (param $0 i32) (param $1 v128) (result v128)
+ (func $82 (param $0 i32) (param $1 v128) (result v128)
(v128.load16_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $78 (param $0 i32) (param $1 v128) (result v128)
+ (func $83 (param $0 i32) (param $1 v128) (result v128)
(v128.load32_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $79 (param $0 i32) (param $1 v128) (result v128)
+ (func $84 (param $0 i32) (param $1 v128) (result v128)
(v128.load64_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $80 (param $0 i32) (param $1 v128) (result v128)
+ (func $85 (param $0 i32) (param $1 v128) (result v128)
(v128.load64_lane align=1 0
(local.get $0)
(local.get $1)
)
)
- (func $81 (param $0 i32) (param $1 v128) (result v128)
+ (func $86 (param $0 i32) (param $1 v128) (result v128)
(v128.load64_lane offset=32 0
(local.get $0)
(local.get $1)
)
)
- (func $82 (param $0 i32) (param $1 v128) (result v128)
+ (func $87 (param $0 i32) (param $1 v128) (result v128)
(v128.load64_lane offset=32 align=1 0
(local.get $0)
(local.get $1)
)
)
- (func $83 (param $0 i32) (param $1 v128)
+ (func $88 (param $0 i32) (param $1 v128)
(v128.store8_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $84 (param $0 i32) (param $1 v128)
+ (func $89 (param $0 i32) (param $1 v128)
(v128.store16_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $85 (param $0 i32) (param $1 v128)
+ (func $90 (param $0 i32) (param $1 v128)
(v128.store32_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $86 (param $0 i32) (param $1 v128)
+ (func $91 (param $0 i32) (param $1 v128)
(v128.store64_lane 0
(local.get $0)
(local.get $1)
)
)
- (func $87 (param $0 i32) (param $1 v128)
+ (func $92 (param $0 i32) (param $1 v128)
(v128.store64_lane align=1 0
(local.get $0)
(local.get $1)
)
)
- (func $88 (param $0 i32) (param $1 v128)
+ (func $93 (param $0 i32) (param $1 v128)
(v128.store64_lane offset=32 0
(local.get $0)
(local.get $1)
)
)
- (func $89 (param $0 i32) (param $1 v128)
+ (func $94 (param $0 i32) (param $1 v128)
(v128.store64_lane offset=32 align=1 0
(local.get $0)
(local.get $1)
)
)
- (func $90 (param $0 v128) (result v128)
+ (func $95 (param $0 v128) (result v128)
(i8x16.popcnt
(local.get $0)
)
)
- (func $91 (param $0 v128) (result v128)
+ (func $96 (param $0 v128) (result v128)
(i8x16.abs
(local.get $0)
)
)
- (func $92 (param $0 v128) (result v128)
+ (func $97 (param $0 v128) (result v128)
(i8x16.neg
(local.get $0)
)
)
- (func $93 (param $0 v128) (result i32)
+ (func $98 (param $0 v128) (result i32)
(i8x16.any_true
(local.get $0)
)
)
- (func $94 (param $0 v128) (result i32)
+ (func $99 (param $0 v128) (result i32)
(i8x16.all_true
(local.get $0)
)
)
- (func $95 (param $0 v128) (result i32)
+ (func $100 (param $0 v128) (result i32)
(i8x16.bitmask
(local.get $0)
)
)
- (func $96 (param $0 v128) (param $1 i32) (result v128)
+ (func $101 (param $0 v128) (param $1 i32) (result v128)
(i8x16.shl
(local.get $0)
(local.get $1)
)
)
- (func $97 (param $0 v128) (param $1 i32) (result v128)
+ (func $102 (param $0 v128) (param $1 i32) (result v128)
(i8x16.shr_s
(local.get $0)
(local.get $1)
)
)
- (func $98 (param $0 v128) (param $1 i32) (result v128)
+ (func $103 (param $0 v128) (param $1 i32) (result v128)
(i8x16.shr_u
(local.get $0)
(local.get $1)
)
)
- (func $99 (param $0 v128) (param $1 v128) (result v128)
+ (func $104 (param $0 v128) (param $1 v128) (result v128)
(i8x16.add
(local.get $0)
(local.get $1)
)
)
- (func $100 (param $0 v128) (param $1 v128) (result v128)
+ (func $105 (param $0 v128) (param $1 v128) (result v128)
(i8x16.add_saturate_s
(local.get $0)
(local.get $1)
)
)
- (func $101 (param $0 v128) (param $1 v128) (result v128)
+ (func $106 (param $0 v128) (param $1 v128) (result v128)
(i8x16.add_saturate_u
(local.get $0)
(local.get $1)
)
)
- (func $102 (param $0 v128) (param $1 v128) (result v128)
+ (func $107 (param $0 v128) (param $1 v128) (result v128)
(i8x16.sub
(local.get $0)
(local.get $1)
)
)
- (func $103 (param $0 v128) (param $1 v128) (result v128)
+ (func $108 (param $0 v128) (param $1 v128) (result v128)
(i8x16.sub_saturate_s
(local.get $0)
(local.get $1)
)
)
- (func $104 (param $0 v128) (param $1 v128) (result v128)
+ (func $109 (param $0 v128) (param $1 v128) (result v128)
(i8x16.sub_saturate_u
(local.get $0)
(local.get $1)
)
)
- (func $105 (param $0 v128) (param $1 v128) (result v128)
+ (func $110 (param $0 v128) (param $1 v128) (result v128)
(i8x16.mul
(local.get $0)
(local.get $1)
)
)
- (func $106 (param $0 v128) (param $1 v128) (result v128)
+ (func $111 (param $0 v128) (param $1 v128) (result v128)
(i8x16.min_s
(local.get $0)
(local.get $1)
)
)
- (func $107 (param $0 v128) (param $1 v128) (result v128)
+ (func $112 (param $0 v128) (param $1 v128) (result v128)
(i8x16.min_u
(local.get $0)
(local.get $1)
)
)
- (func $108 (param $0 v128) (param $1 v128) (result v128)
+ (func $113 (param $0 v128) (param $1 v128) (result v128)
(i8x16.max_s
(local.get $0)
(local.get $1)
)
)
- (func $109 (param $0 v128) (param $1 v128) (result v128)
+ (func $114 (param $0 v128) (param $1 v128) (result v128)
(i8x16.max_u
(local.get $0)
(local.get $1)
)
)
- (func $110 (param $0 v128) (param $1 v128) (result v128)
+ (func $115 (param $0 v128) (param $1 v128) (result v128)
(i8x16.avgr_u
(local.get $0)
(local.get $1)
)
)
- (func $111 (param $0 v128) (result v128)
+ (func $116 (param $0 v128) (result v128)
(i16x8.abs
(local.get $0)
)
)
- (func $112 (param $0 v128) (result v128)
+ (func $117 (param $0 v128) (result v128)
(i16x8.neg
(local.get $0)
)
)
- (func $113 (param $0 v128) (result i32)
+ (func $118 (param $0 v128) (result i32)
(i16x8.any_true
(local.get $0)
)
)
- (func $114 (param $0 v128) (result i32)
+ (func $119 (param $0 v128) (result i32)
(i16x8.all_true
(local.get $0)
)
)
- (func $115 (param $0 v128) (result i32)
+ (func $120 (param $0 v128) (result i32)
(i16x8.bitmask
(local.get $0)
)
)
- (func $116 (param $0 v128) (param $1 i32) (result v128)
+ (func $121 (param $0 v128) (param $1 i32) (result v128)
(i16x8.shl
(local.get $0)
(local.get $1)
)
)
- (func $117 (param $0 v128) (param $1 i32) (result v128)
+ (func $122 (param $0 v128) (param $1 i32) (result v128)
(i16x8.shr_s
(local.get $0)
(local.get $1)
)
)
- (func $118 (param $0 v128) (param $1 i32) (result v128)
+ (func $123 (param $0 v128) (param $1 i32) (result v128)
(i16x8.shr_u
(local.get $0)
(local.get $1)
)
)
- (func $119 (param $0 v128) (param $1 v128) (result v128)
+ (func $124 (param $0 v128) (param $1 v128) (result v128)
(i16x8.add
(local.get $0)
(local.get $1)
)
)
- (func $120 (param $0 v128) (param $1 v128) (result v128)
+ (func $125 (param $0 v128) (param $1 v128) (result v128)
(i16x8.add_saturate_s
(local.get $0)
(local.get $1)
)
)
- (func $121 (param $0 v128) (param $1 v128) (result v128)
+ (func $126 (param $0 v128) (param $1 v128) (result v128)
(i16x8.add_saturate_u
(local.get $0)
(local.get $1)
)
)
- (func $122 (param $0 v128) (param $1 v128) (result v128)
+ (func $127 (param $0 v128) (param $1 v128) (result v128)
(i16x8.sub
(local.get $0)
(local.get $1)
)
)
- (func $123 (param $0 v128) (param $1 v128) (result v128)
+ (func $128 (param $0 v128) (param $1 v128) (result v128)
(i16x8.sub_saturate_s
(local.get $0)
(local.get $1)
)
)
- (func $124 (param $0 v128) (param $1 v128) (result v128)
+ (func $129 (param $0 v128) (param $1 v128) (result v128)
(i16x8.sub_saturate_u
(local.get $0)
(local.get $1)
)
)
- (func $125 (param $0 v128) (param $1 v128) (result v128)
+ (func $130 (param $0 v128) (param $1 v128) (result v128)
(i16x8.mul
(local.get $0)
(local.get $1)
)
)
- (func $126 (param $0 v128) (param $1 v128) (result v128)
+ (func $131 (param $0 v128) (param $1 v128) (result v128)
(i16x8.min_s
(local.get $0)
(local.get $1)
)
)
- (func $127 (param $0 v128) (param $1 v128) (result v128)
+ (func $132 (param $0 v128) (param $1 v128) (result v128)
(i16x8.min_u
(local.get $0)
(local.get $1)
)
)
- (func $128 (param $0 v128) (param $1 v128) (result v128)
+ (func $133 (param $0 v128) (param $1 v128) (result v128)
(i16x8.max_s
(local.get $0)
(local.get $1)
)
)
- (func $129 (param $0 v128) (param $1 v128) (result v128)
+ (func $134 (param $0 v128) (param $1 v128) (result v128)
(i16x8.max_u
(local.get $0)
(local.get $1)
)
)
- (func $130 (param $0 v128) (param $1 v128) (result v128)
+ (func $135 (param $0 v128) (param $1 v128) (result v128)
(i16x8.avgr_u
(local.get $0)
(local.get $1)
)
)
- (func $131 (param $0 v128) (param $1 v128) (result v128)
+ (func $136 (param $0 v128) (param $1 v128) (result v128)
(i16x8.q15mulr_sat_s
(local.get $0)
(local.get $1)
)
)
- (func $132 (param $0 v128) (param $1 v128) (result v128)
+ (func $137 (param $0 v128) (param $1 v128) (result v128)
(i16x8.extmul_low_i8x16_s
(local.get $0)
(local.get $1)
)
)
- (func $133 (param $0 v128) (param $1 v128) (result v128)
+ (func $138 (param $0 v128) (param $1 v128) (result v128)
(i16x8.extmul_high_i8x16_s
(local.get $0)
(local.get $1)
)
)
- (func $134 (param $0 v128) (param $1 v128) (result v128)
+ (func $139 (param $0 v128) (param $1 v128) (result v128)
(i16x8.extmul_low_i8x16_u
(local.get $0)
(local.get $1)
)
)
- (func $135 (param $0 v128) (param $1 v128) (result v128)
+ (func $140 (param $0 v128) (param $1 v128) (result v128)
(i16x8.extmul_high_i8x16_u
(local.get $0)
(local.get $1)
)
)
- (func $136 (param $0 v128) (result v128)
+ (func $141 (param $0 v128) (result v128)
(i32x4.abs
(local.get $0)
)
)
- (func $137 (param $0 v128) (result v128)
+ (func $142 (param $0 v128) (result v128)
(i32x4.neg
(local.get $0)
)
)
- (func $138 (param $0 v128) (result i32)
+ (func $143 (param $0 v128) (result i32)
(i32x4.any_true
(local.get $0)
)
)
- (func $139 (param $0 v128) (result i32)
+ (func $144 (param $0 v128) (result i32)
(i32x4.all_true
(local.get $0)
)
)
- (func $140 (param $0 v128) (result i32)
+ (func $145 (param $0 v128) (result i32)
(i32x4.bitmask
(local.get $0)
)
)
- (func $141 (param $0 v128) (param $1 i32) (result v128)
+ (func $146 (param $0 v128) (param $1 i32) (result v128)
(i32x4.shl
(local.get $0)
(local.get $1)
)
)
- (func $142 (param $0 v128) (param $1 i32) (result v128)
+ (func $147 (param $0 v128) (param $1 i32) (result v128)
(i32x4.shr_s
(local.get $0)
(local.get $1)
)
)
- (func $143 (param $0 v128) (param $1 i32) (result v128)
+ (func $148 (param $0 v128) (param $1 i32) (result v128)
(i32x4.shr_u
(local.get $0)
(local.get $1)
)
)
- (func $144 (param $0 v128) (param $1 v128) (result v128)
+ (func $149 (param $0 v128) (param $1 v128) (result v128)
(i32x4.add
(local.get $0)
(local.get $1)
)
)
- (func $145 (param $0 v128) (param $1 v128) (result v128)
+ (func $150 (param $0 v128) (param $1 v128) (result v128)
(i32x4.sub
(local.get $0)
(local.get $1)
)
)
- (func $146 (param $0 v128) (param $1 v128) (result v128)
+ (func $151 (param $0 v128) (param $1 v128) (result v128)
(i32x4.mul
(local.get $0)
(local.get $1)
)
)
- (func $147 (param $0 v128) (param $1 v128) (result v128)
+ (func $152 (param $0 v128) (param $1 v128) (result v128)
(i32x4.min_s
(local.get $0)
(local.get $1)
)
)
- (func $148 (param $0 v128) (param $1 v128) (result v128)
+ (func $153 (param $0 v128) (param $1 v128) (result v128)
(i32x4.min_u
(local.get $0)
(local.get $1)
)
)
- (func $149 (param $0 v128) (param $1 v128) (result v128)
+ (func $154 (param $0 v128) (param $1 v128) (result v128)
(i32x4.max_s
(local.get $0)
(local.get $1)
)
)
- (func $150 (param $0 v128) (param $1 v128) (result v128)
+ (func $155 (param $0 v128) (param $1 v128) (result v128)
(i32x4.max_u
(local.get $0)
(local.get $1)
)
)
- (func $151 (param $0 v128) (param $1 v128) (result v128)
+ (func $156 (param $0 v128) (param $1 v128) (result v128)
(i32x4.dot_i16x8_s
(local.get $0)
(local.get $1)
)
)
- (func $152 (param $0 v128) (param $1 v128) (result v128)
+ (func $157 (param $0 v128) (param $1 v128) (result v128)
(i32x4.extmul_low_i16x8_s
(local.get $0)
(local.get $1)
)
)
- (func $153 (param $0 v128) (param $1 v128) (result v128)
+ (func $158 (param $0 v128) (param $1 v128) (result v128)
(i32x4.extmul_high_i16x8_s
(local.get $0)
(local.get $1)
)
)
- (func $154 (param $0 v128) (param $1 v128) (result v128)
+ (func $159 (param $0 v128) (param $1 v128) (result v128)
(i32x4.extmul_low_i16x8_u
(local.get $0)
(local.get $1)
)
)
- (func $155 (param $0 v128) (param $1 v128) (result v128)
+ (func $160 (param $0 v128) (param $1 v128) (result v128)
(i32x4.extmul_high_i16x8_u
(local.get $0)
(local.get $1)
)
)
- (func $156 (param $0 v128) (result v128)
+ (func $161 (param $0 v128) (result v128)
(i64x2.neg
(local.get $0)
)
)
- (func $157 (param $0 v128) (result i32)
+ (func $162 (param $0 v128) (result i32)
(i64x2.any_true
(local.get $0)
)
)
- (func $158 (param $0 v128) (result i32)
+ (func $163 (param $0 v128) (result i32)
(i64x2.all_true
(local.get $0)
)
)
- (func $159 (param $0 v128) (param $1 i32) (result v128)
+ (func $164 (param $0 v128) (result i32)
+ (i64x2.bitmask
+ (local.get $0)
+ )
+ )
+ (func $165 (param $0 v128) (param $1 i32) (result v128)
(i64x2.shl
(local.get $0)
(local.get $1)
)
)
- (func $160 (param $0 v128) (param $1 i32) (result v128)
+ (func $166 (param $0 v128) (param $1 i32) (result v128)
(i64x2.shr_s
(local.get $0)
(local.get $1)
)
)
- (func $161 (param $0 v128) (param $1 i32) (result v128)
+ (func $167 (param $0 v128) (param $1 i32) (result v128)
(i64x2.shr_u
(local.get $0)
(local.get $1)
)
)
- (func $162 (param $0 v128) (param $1 v128) (result v128)
+ (func $168 (param $0 v128) (param $1 v128) (result v128)
(i64x2.add
(local.get $0)
(local.get $1)
)
)
- (func $163 (param $0 v128) (param $1 v128) (result v128)
+ (func $169 (param $0 v128) (param $1 v128) (result v128)
(i64x2.sub
(local.get $0)
(local.get $1)
)
)
- (func $164 (param $0 v128) (param $1 v128) (result v128)
+ (func $170 (param $0 v128) (param $1 v128) (result v128)
(i64x2.mul
(local.get $0)
(local.get $1)
)
)
- (func $165 (param $0 v128) (param $1 v128) (result v128)
+ (func $171 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_low_i32x4_s
(local.get $0)
(local.get $1)
)
)
- (func $166 (param $0 v128) (param $1 v128) (result v128)
+ (func $172 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_high_i32x4_s
(local.get $0)
(local.get $1)
)
)
- (func $167 (param $0 v128) (param $1 v128) (result v128)
+ (func $173 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_low_i32x4_u
(local.get $0)
(local.get $1)
)
)
- (func $168 (param $0 v128) (param $1 v128) (result v128)
+ (func $174 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_high_i32x4_u
(local.get $0)
(local.get $1)
)
)
- (func $169 (param $0 v128) (param $1 v128) (result v128)
+ (func $175 (param $0 v128) (param $1 v128) (result v128)
(f32x4.add
(local.get $0)
(local.get $1)
)
)
- (func $170 (param $0 v128) (param $1 v128) (result v128)
+ (func $176 (param $0 v128) (param $1 v128) (result v128)
(f32x4.sub
(local.get $0)
(local.get $1)
)
)
- (func $171 (param $0 v128) (param $1 v128) (result v128)
+ (func $177 (param $0 v128) (param $1 v128) (result v128)
(f32x4.mul
(local.get $0)
(local.get $1)
)
)
- (func $172 (param $0 v128) (param $1 v128) (result v128)
+ (func $178 (param $0 v128) (param $1 v128) (result v128)
(f32x4.div
(local.get $0)
(local.get $1)
)
)
- (func $173 (param $0 v128) (param $1 v128) (result v128)
+ (func $179 (param $0 v128) (param $1 v128) (result v128)
(f32x4.min
(local.get $0)
(local.get $1)
)
)
- (func $174 (param $0 v128) (param $1 v128) (result v128)
+ (func $180 (param $0 v128) (param $1 v128) (result v128)
(f32x4.max
(local.get $0)
(local.get $1)
)
)
- (func $175 (param $0 v128) (param $1 v128) (result v128)
+ (func $181 (param $0 v128) (param $1 v128) (result v128)
(f32x4.pmin
(local.get $0)
(local.get $1)
)
)
- (func $176 (param $0 v128) (param $1 v128) (result v128)
+ (func $182 (param $0 v128) (param $1 v128) (result v128)
(f32x4.pmax
(local.get $0)
(local.get $1)
)
)
- (func $177 (param $0 v128) (result v128)
+ (func $183 (param $0 v128) (result v128)
(f32x4.ceil
(local.get $0)
)
)
- (func $178 (param $0 v128) (result v128)
+ (func $184 (param $0 v128) (result v128)
(f32x4.floor
(local.get $0)
)
)
- (func $179 (param $0 v128) (result v128)
+ (func $185 (param $0 v128) (result v128)
(f32x4.trunc
(local.get $0)
)
)
- (func $180 (param $0 v128) (result v128)
+ (func $186 (param $0 v128) (result v128)
(f32x4.nearest
(local.get $0)
)
)
- (func $181 (param $0 v128) (result v128)
+ (func $187 (param $0 v128) (result v128)
(f32x4.abs
(local.get $0)
)
)
- (func $182 (param $0 v128) (result v128)
+ (func $188 (param $0 v128) (result v128)
(f32x4.neg
(local.get $0)
)
)
- (func $183 (param $0 v128) (result v128)
+ (func $189 (param $0 v128) (result v128)
(f32x4.sqrt
(local.get $0)
)
)
- (func $184 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $190 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.qfma
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $185 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $191 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.qfms
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $186 (param $0 v128) (param $1 v128) (result v128)
+ (func $192 (param $0 v128) (param $1 v128) (result v128)
(f64x2.add
(local.get $0)
(local.get $1)
)
)
- (func $187 (param $0 v128) (param $1 v128) (result v128)
+ (func $193 (param $0 v128) (param $1 v128) (result v128)
(f64x2.sub
(local.get $0)
(local.get $1)
)
)
- (func $188 (param $0 v128) (param $1 v128) (result v128)
+ (func $194 (param $0 v128) (param $1 v128) (result v128)
(f64x2.mul
(local.get $0)
(local.get $1)
)
)
- (func $189 (param $0 v128) (param $1 v128) (result v128)
+ (func $195 (param $0 v128) (param $1 v128) (result v128)
(f64x2.div
(local.get $0)
(local.get $1)
)
)
- (func $190 (param $0 v128) (param $1 v128) (result v128)
+ (func $196 (param $0 v128) (param $1 v128) (result v128)
(f64x2.min
(local.get $0)
(local.get $1)
)
)
- (func $191 (param $0 v128) (param $1 v128) (result v128)
+ (func $197 (param $0 v128) (param $1 v128) (result v128)
(f64x2.max
(local.get $0)
(local.get $1)
)
)
- (func $192 (param $0 v128) (param $1 v128) (result v128)
+ (func $198 (param $0 v128) (param $1 v128) (result v128)
(f64x2.pmin
(local.get $0)
(local.get $1)
)
)
- (func $193 (param $0 v128) (param $1 v128) (result v128)
+ (func $199 (param $0 v128) (param $1 v128) (result v128)
(f64x2.pmax
(local.get $0)
(local.get $1)
)
)
- (func $194 (param $0 v128) (result v128)
+ (func $200 (param $0 v128) (result v128)
(f64x2.ceil
(local.get $0)
)
)
- (func $195 (param $0 v128) (result v128)
+ (func $201 (param $0 v128) (result v128)
(f64x2.floor
(local.get $0)
)
)
- (func $196 (param $0 v128) (result v128)
+ (func $202 (param $0 v128) (result v128)
(f64x2.trunc
(local.get $0)
)
)
- (func $197 (param $0 v128) (result v128)
+ (func $203 (param $0 v128) (result v128)
(f64x2.nearest
(local.get $0)
)
)
- (func $198 (param $0 v128) (result v128)
+ (func $204 (param $0 v128) (result v128)
(f64x2.abs
(local.get $0)
)
)
- (func $199 (param $0 v128) (result v128)
+ (func $205 (param $0 v128) (result v128)
(f64x2.neg
(local.get $0)
)
)
- (func $200 (param $0 v128) (result v128)
+ (func $206 (param $0 v128) (result v128)
(f64x2.sqrt
(local.get $0)
)
)
- (func $201 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $207 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.qfma
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $202 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $208 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.qfms
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $203 (param $0 v128) (result v128)
+ (func $209 (param $0 v128) (result v128)
(i32x4.trunc_sat_f32x4_s
(local.get $0)
)
)
- (func $204 (param $0 v128) (result v128)
+ (func $210 (param $0 v128) (result v128)
(i32x4.trunc_sat_f32x4_u
(local.get $0)
)
)
- (func $205 (param $0 v128) (result v128)
+ (func $211 (param $0 v128) (result v128)
(i64x2.trunc_sat_f64x2_s
(local.get $0)
)
)
- (func $206 (param $0 v128) (result v128)
+ (func $212 (param $0 v128) (result v128)
(i64x2.trunc_sat_f64x2_u
(local.get $0)
)
)
- (func $207 (param $0 v128) (result v128)
+ (func $213 (param $0 v128) (result v128)
(f32x4.convert_i32x4_s
(local.get $0)
)
)
- (func $208 (param $0 v128) (result v128)
+ (func $214 (param $0 v128) (result v128)
(f32x4.convert_i32x4_u
(local.get $0)
)
)
- (func $209 (param $0 v128) (result v128)
+ (func $215 (param $0 v128) (result v128)
(f64x2.convert_i64x2_s
(local.get $0)
)
)
- (func $210 (param $0 v128) (result v128)
+ (func $216 (param $0 v128) (result v128)
(f64x2.convert_i64x2_u
(local.get $0)
)
)
- (func $211 (param $0 i32) (result v128)
+ (func $217 (param $0 i32) (result v128)
(v8x16.load_splat
(local.get $0)
)
)
- (func $212 (param $0 i32) (result v128)
+ (func $218 (param $0 i32) (result v128)
(v16x8.load_splat
(local.get $0)
)
)
- (func $213 (param $0 i32) (result v128)
+ (func $219 (param $0 i32) (result v128)
(v32x4.load_splat
(local.get $0)
)
)
- (func $214 (param $0 i32) (result v128)
+ (func $220 (param $0 i32) (result v128)
(v64x2.load_splat
(local.get $0)
)
)
- (func $215 (param $0 v128) (param $1 v128) (result v128)
+ (func $221 (param $0 v128) (param $1 v128) (result v128)
(i8x16.narrow_i16x8_s
(local.get $0)
(local.get $1)
)
)
- (func $216 (param $0 v128) (param $1 v128) (result v128)
+ (func $222 (param $0 v128) (param $1 v128) (result v128)
(i8x16.narrow_i16x8_u
(local.get $0)
(local.get $1)
)
)
- (func $217 (param $0 v128) (param $1 v128) (result v128)
+ (func $223 (param $0 v128) (param $1 v128) (result v128)
(i16x8.narrow_i32x4_s
(local.get $0)
(local.get $1)
)
)
- (func $218 (param $0 v128) (param $1 v128) (result v128)
+ (func $224 (param $0 v128) (param $1 v128) (result v128)
(i16x8.narrow_i32x4_u
(local.get $0)
(local.get $1)
)
)
- (func $219 (param $0 v128) (result v128)
+ (func $225 (param $0 v128) (result v128)
(i16x8.widen_low_i8x16_s
(local.get $0)
)
)
- (func $220 (param $0 v128) (result v128)
+ (func $226 (param $0 v128) (result v128)
(i16x8.widen_high_i8x16_s
(local.get $0)
)
)
- (func $221 (param $0 v128) (result v128)
+ (func $227 (param $0 v128) (result v128)
(i16x8.widen_low_i8x16_u
(local.get $0)
)
)
- (func $222 (param $0 v128) (result v128)
+ (func $228 (param $0 v128) (result v128)
(i16x8.widen_high_i8x16_u
(local.get $0)
)
)
- (func $223 (param $0 v128) (result v128)
+ (func $229 (param $0 v128) (result v128)
(i32x4.widen_low_i16x8_s
(local.get $0)
)
)
- (func $224 (param $0 v128) (result v128)
+ (func $230 (param $0 v128) (result v128)
(i32x4.widen_high_i16x8_s
(local.get $0)
)
)
- (func $225 (param $0 v128) (result v128)
+ (func $231 (param $0 v128) (result v128)
(i32x4.widen_low_i16x8_u
(local.get $0)
)
)
- (func $226 (param $0 v128) (result v128)
+ (func $232 (param $0 v128) (result v128)
(i32x4.widen_high_i16x8_u
(local.get $0)
)
)
- (func $227 (param $0 i32) (result v128)
+ (func $233 (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $234 (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_s
+ (local.get $0)
+ )
+ )
+ (func $235 (param $0 v128) (result v128)
+ (i64x2.widen_low_i32x4_u
+ (local.get $0)
+ )
+ )
+ (func $236 (param $0 v128) (result v128)
+ (i64x2.widen_high_i32x4_u
+ (local.get $0)
+ )
+ )
+ (func $237 (param $0 i32) (result v128)
(i16x8.load8x8_u
(local.get $0)
)
)
- (func $228 (param $0 i32) (result v128)
+ (func $238 (param $0 i32) (result v128)
(i16x8.load8x8_s
(local.get $0)
)
)
- (func $229 (param $0 i32) (result v128)
+ (func $239 (param $0 i32) (result v128)
(i32x4.load16x4_s
(local.get $0)
)
)
- (func $230 (param $0 i32) (result v128)
+ (func $240 (param $0 i32) (result v128)
(i32x4.load16x4_u
(local.get $0)
)
)
- (func $231 (param $0 i32) (result v128)
+ (func $241 (param $0 i32) (result v128)
(i64x2.load32x2_s
(local.get $0)
)
)
- (func $232 (param $0 i32) (result v128)
+ (func $242 (param $0 i32) (result v128)
(i64x2.load32x2_u
(local.get $0)
)
)
- (func $233 (param $0 i32) (result v128)
+ (func $243 (param $0 i32) (result v128)
(v128.load32_zero
(local.get $0)
)
)
- (func $234 (param $0 i32) (result v128)
+ (func $244 (param $0 i32) (result v128)
(v128.load64_zero
(local.get $0)
)
)
- (func $235 (param $0 v128) (param $1 v128) (result v128)
+ (func $245 (param $0 v128) (param $1 v128) (result v128)
(v8x16.swizzle
(local.get $0)
(local.get $1)
diff --git a/test/spec/simd.wast b/test/spec/simd.wast
index 332d48d01..51bea4deb 100644
--- a/test/spec/simd.wast
+++ b/test/spec/simd.wast
@@ -84,6 +84,7 @@
(func (export "i32x4.le_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1)))
(func (export "i32x4.ge_s") (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1)))
(func (export "i32x4.ge_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1)))
+ (func (export "i64x2.eq") (param $0 v128) (param $1 v128) (result v128) (i64x2.eq (local.get $0) (local.get $1)))
(func (export "f32x4.eq") (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1)))
(func (export "f32x4.ne") (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1)))
(func (export "f32x4.lt") (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1)))
@@ -104,6 +105,18 @@
(func (export "v128.bitselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(v128.bitselect (local.get $0) (local.get $1) (local.get $2))
)
+ (func (export "v8x16.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v8x16.signselect (local.get $0) (local.get $1) (local.get $2))
+ )
+ (func (export "v16x8.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v16x8.signselect (local.get $0) (local.get $1) (local.get $2))
+ )
+ (func (export "v32x4.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v32x4.signselect (local.get $0) (local.get $1) (local.get $2))
+ )
+ (func (export "v64x2.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (v64x2.signselect (local.get $0) (local.get $1) (local.get $2))
+ )
(func (export "v128.load8_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) (local.get $1)))
(func (export "v128.load16_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane 0 (local.get $0) (local.get $1)))
(func (export "v128.load32_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane 0 (local.get $0) (local.get $1)))
@@ -174,6 +187,7 @@
(func (export "i64x2.neg") (param $0 v128) (result v128) (i64x2.neg (local.get $0)))
(func (export "i64x2.any_true") (param $0 v128) (result i32) (i64x2.any_true (local.get $0)))
(func (export "i64x2.all_true") (param $0 v128) (result i32) (i64x2.all_true (local.get $0)))
+ (func (export "i64x2.bitmask") (param $0 v128) (result i32) (i64x2.bitmask (local.get $0)))
(func (export "i64x2.shl") (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1)))
(func (export "i64x2.shr_s") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1)))
(func (export "i64x2.shr_u") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1)))
@@ -238,6 +252,10 @@
(func (export "i32x4.widen_high_i16x8_s") (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0)))
(func (export "i32x4.widen_low_i16x8_u") (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0)))
(func (export "i32x4.widen_high_i16x8_u") (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0)))
+ (func (export "i64x2.widen_low_i32x4_s") (param $0 v128) (result v128) (i64x2.widen_low_i32x4_s (local.get $0)))
+ (func (export "i64x2.widen_high_i32x4_s") (param $0 v128) (result v128) (i64x2.widen_high_i32x4_s (local.get $0)))
+ (func (export "i64x2.widen_low_i32x4_u") (param $0 v128) (result v128) (i64x2.widen_low_i32x4_u (local.get $0)))
+ (func (export "i64x2.widen_high_i32x4_u") (param $0 v128) (result v128) (i64x2.widen_high_i32x4_u (local.get $0)))
(func (export "i16x8.load8x8_u") (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0)))
(func (export "i16x8.load8x8_s") (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0)))
(func (export "i32x4.load16x4_u") (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0)))
@@ -474,6 +492,9 @@
(assert_return (invoke "i32x4.ge_s" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 0 -1 0))
(assert_return (invoke "i32x4.ge_u" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 -1 0 0))
+;; i64x2 comparisons
+(assert_return (invoke "i64x2.eq" (v128.const i64x2 0 -1) (v128.const i64x2 -1 -1)) (v128.const i64x2 0 -1))
+
;; f32x4 comparisons
(assert_return (invoke "f32x4.eq" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 -1 0 0 0))
(assert_return (invoke "f32x4.ne" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 0 -1 -1 -1))
@@ -521,6 +542,7 @@
)
(v128.const i32x4 0xABABABAB 0xAAAAAAAA 0xBBBBBBBB 0xAABBAABB)
)
+;; TODO: signselect tests
;; load/store lane
(assert_return (invoke "v128.load8_lane"
@@ -851,6 +873,7 @@
(assert_return (invoke "i64x2.all_true" (v128.const i64x2 0 0)) (i32.const 0))
(assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 0)) (i32.const 0))
(assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 1)) (i32.const 1))
+;; TODO: test i64x2.bitmask
(assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 2 0))
(assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000))
(assert_return (invoke "i64x2.shr_s" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 0 0xc000000000000000))
@@ -1005,6 +1028,7 @@
(assert_return (invoke "i32x4.widen_high_i16x8_s" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 32767 -32767 16384 -16384))
(assert_return (invoke "i32x4.widen_low_i16x8_u" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 0 1 65535 32768))
(assert_return (invoke "i32x4.widen_high_i16x8_u" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 32767 32769 16384 49152))
+;; TODO: test i64x2 widens
(assert_return (invoke "i16x8.load8x8_s" (i32.const 256)) (v128.const i16x8 0xff80 0xff90 0xffa0 0xffb0 0xffc0 0xffd0 0xffe0 0xfff0))
(assert_return (invoke "i16x8.load8x8_u" (i32.const 256)) (v128.const i16x8 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0))
(assert_return (invoke "i32x4.load16x4_s" (i32.const 256)) (v128.const i32x4 0xffff9080 0xffffb0a0 0xffffd0c0 0xfffff0e0))