summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2020-05-19 10:17:07 -0700
committerGitHub <noreply@github.com>2020-05-19 10:17:07 -0700
commitfc7346918f8d15ce45639472f00fea5fa8102ff0 (patch)
tree9d6a3e179c69aedbcef4681db2454fe86c65cc3c /test
parent417ccb54ccbb0776148f51cb2869c122826db6d9 (diff)
downloadbinaryen-fc7346918f8d15ce45639472f00fea5fa8102ff0.tar.gz
binaryen-fc7346918f8d15ce45639472f00fea5fa8102ff0.tar.bz2
binaryen-fc7346918f8d15ce45639472f00fea5fa8102ff0.zip
Implement i64x2.mul (#2860)
This is the only instruction in the current spec proposal that had not yet been implemnented in the tools.
Diffstat (limited to 'test')
-rw-r--r--test/binaryen.js/kitchen-sink.js1
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt12
-rw-r--r--test/example/c-api-kitchen-sink.c1
-rw-r--r--test/example/c-api-kitchen-sink.txt6
-rw-r--r--test/simd.wast6
-rw-r--r--test/simd.wast.from-wast6
-rw-r--r--test/simd.wast.fromBinary6
-rw-r--r--test/simd.wast.fromBinary.noDebugInfo118
-rw-r--r--test/spec/simd.wast2
9 files changed, 102 insertions, 56 deletions
diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js
index 0b693b970..b0b81433d 100644
--- a/test/binaryen.js/kitchen-sink.js
+++ b/test/binaryen.js/kitchen-sink.js
@@ -383,6 +383,7 @@ function test_core() {
module.i32x4.dot_i16x8_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.i64x2.add(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.i64x2.sub(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
+ module.i64x2.mul(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.f32x4.add(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.f32x4.sub(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.f32x4.mul(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index 0e93201ff..b27d147b3 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -1244,6 +1244,12 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i64x2.mul
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.add
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
@@ -3036,6 +3042,12 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i64x2.mul
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.add
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index 9b3b68cf7..3ea6c4ef0 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -550,6 +550,7 @@ void test_core() {
makeBinary(module, BinaryenMulVecI32x4(), v128),
makeBinary(module, BinaryenAddVecI64x2(), v128),
makeBinary(module, BinaryenSubVecI64x2(), v128),
+ makeBinary(module, BinaryenMulVecI64x2(), v128),
makeBinary(module, BinaryenAddVecF32x4(), v128),
makeBinary(module, BinaryenSubVecF32x4(), v128),
makeBinary(module, BinaryenMulVecF32x4(), v128),
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index d3e0281ee..ced13ac72 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -1147,6 +1147,12 @@ BinaryenFeatureAll: 1023
)
)
(drop
+ (i64x2.mul
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.add
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
diff --git a/test/simd.wast b/test/simd.wast
index fdb6d0309..edd9a2c43 100644
--- a/test/simd.wast
+++ b/test/simd.wast
@@ -790,6 +790,12 @@
(local.get $1)
)
)
+ (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128)
+ (i64x2.mul
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(func $f32x4.add (param $0 v128) (param $1 v128) (result v128)
(f32x4.add
(local.get $0)
diff --git a/test/simd.wast.from-wast b/test/simd.wast.from-wast
index 17b9d7ffd..35643ec04 100644
--- a/test/simd.wast.from-wast
+++ b/test/simd.wast.from-wast
@@ -806,6 +806,12 @@
(local.get $1)
)
)
+ (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128)
+ (i64x2.mul
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(func $f32x4.add (param $0 v128) (param $1 v128) (result v128)
(f32x4.add
(local.get $0)
diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary
index 8ddfb9a6f..40ce99ec2 100644
--- a/test/simd.wast.fromBinary
+++ b/test/simd.wast.fromBinary
@@ -806,6 +806,12 @@
(local.get $1)
)
)
+ (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128)
+ (i64x2.mul
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(func $f32x4.add (param $0 v128) (param $1 v128) (result v128)
(f32x4.add
(local.get $0)
diff --git a/test/simd.wast.fromBinary.noDebugInfo b/test/simd.wast.fromBinary.noDebugInfo
index 20617d09d..85ca0a9f4 100644
--- a/test/simd.wast.fromBinary.noDebugInfo
+++ b/test/simd.wast.fromBinary.noDebugInfo
@@ -807,314 +807,320 @@
)
)
(func $140 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.add
+ (i64x2.mul
(local.get $0)
(local.get $1)
)
)
(func $141 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.sub
+ (f32x4.add
(local.get $0)
(local.get $1)
)
)
(func $142 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.mul
+ (f32x4.sub
(local.get $0)
(local.get $1)
)
)
(func $143 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.div
+ (f32x4.mul
(local.get $0)
(local.get $1)
)
)
(func $144 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.min
+ (f32x4.div
(local.get $0)
(local.get $1)
)
)
(func $145 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.max
+ (f32x4.min
(local.get $0)
(local.get $1)
)
)
(func $146 (param $0 v128) (param $1 v128) (result v128)
- (f32x4.pmin
+ (f32x4.max
(local.get $0)
(local.get $1)
)
)
(func $147 (param $0 v128) (param $1 v128) (result v128)
+ (f32x4.pmin
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (func $148 (param $0 v128) (param $1 v128) (result v128)
(f32x4.pmax
(local.get $0)
(local.get $1)
)
)
- (func $148 (param $0 v128) (result v128)
+ (func $149 (param $0 v128) (result v128)
(f32x4.abs
(local.get $0)
)
)
- (func $149 (param $0 v128) (result v128)
+ (func $150 (param $0 v128) (result v128)
(f32x4.neg
(local.get $0)
)
)
- (func $150 (param $0 v128) (result v128)
+ (func $151 (param $0 v128) (result v128)
(f32x4.sqrt
(local.get $0)
)
)
- (func $151 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $152 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.qfma
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $152 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $153 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.qfms
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $153 (param $0 v128) (param $1 v128) (result v128)
+ (func $154 (param $0 v128) (param $1 v128) (result v128)
(f64x2.add
(local.get $0)
(local.get $1)
)
)
- (func $154 (param $0 v128) (param $1 v128) (result v128)
+ (func $155 (param $0 v128) (param $1 v128) (result v128)
(f64x2.sub
(local.get $0)
(local.get $1)
)
)
- (func $155 (param $0 v128) (param $1 v128) (result v128)
+ (func $156 (param $0 v128) (param $1 v128) (result v128)
(f64x2.mul
(local.get $0)
(local.get $1)
)
)
- (func $156 (param $0 v128) (param $1 v128) (result v128)
+ (func $157 (param $0 v128) (param $1 v128) (result v128)
(f64x2.div
(local.get $0)
(local.get $1)
)
)
- (func $157 (param $0 v128) (param $1 v128) (result v128)
+ (func $158 (param $0 v128) (param $1 v128) (result v128)
(f64x2.min
(local.get $0)
(local.get $1)
)
)
- (func $158 (param $0 v128) (param $1 v128) (result v128)
+ (func $159 (param $0 v128) (param $1 v128) (result v128)
(f64x2.max
(local.get $0)
(local.get $1)
)
)
- (func $159 (param $0 v128) (param $1 v128) (result v128)
+ (func $160 (param $0 v128) (param $1 v128) (result v128)
(f64x2.pmin
(local.get $0)
(local.get $1)
)
)
- (func $160 (param $0 v128) (param $1 v128) (result v128)
+ (func $161 (param $0 v128) (param $1 v128) (result v128)
(f64x2.pmax
(local.get $0)
(local.get $1)
)
)
- (func $161 (param $0 v128) (result v128)
+ (func $162 (param $0 v128) (result v128)
(f64x2.abs
(local.get $0)
)
)
- (func $162 (param $0 v128) (result v128)
+ (func $163 (param $0 v128) (result v128)
(f64x2.neg
(local.get $0)
)
)
- (func $163 (param $0 v128) (result v128)
+ (func $164 (param $0 v128) (result v128)
(f64x2.sqrt
(local.get $0)
)
)
- (func $164 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $165 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.qfma
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $165 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $166 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.qfms
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $166 (param $0 v128) (result v128)
+ (func $167 (param $0 v128) (result v128)
(i32x4.trunc_sat_f32x4_s
(local.get $0)
)
)
- (func $167 (param $0 v128) (result v128)
+ (func $168 (param $0 v128) (result v128)
(i32x4.trunc_sat_f32x4_u
(local.get $0)
)
)
- (func $168 (param $0 v128) (result v128)
+ (func $169 (param $0 v128) (result v128)
(i64x2.trunc_sat_f64x2_s
(local.get $0)
)
)
- (func $169 (param $0 v128) (result v128)
+ (func $170 (param $0 v128) (result v128)
(i64x2.trunc_sat_f64x2_u
(local.get $0)
)
)
- (func $170 (param $0 v128) (result v128)
+ (func $171 (param $0 v128) (result v128)
(f32x4.convert_i32x4_s
(local.get $0)
)
)
- (func $171 (param $0 v128) (result v128)
+ (func $172 (param $0 v128) (result v128)
(f32x4.convert_i32x4_u
(local.get $0)
)
)
- (func $172 (param $0 v128) (result v128)
+ (func $173 (param $0 v128) (result v128)
(f64x2.convert_i64x2_s
(local.get $0)
)
)
- (func $173 (param $0 v128) (result v128)
+ (func $174 (param $0 v128) (result v128)
(f64x2.convert_i64x2_u
(local.get $0)
)
)
- (func $174 (param $0 i32) (result v128)
+ (func $175 (param $0 i32) (result v128)
(v8x16.load_splat
(local.get $0)
)
)
- (func $175 (param $0 i32) (result v128)
+ (func $176 (param $0 i32) (result v128)
(v16x8.load_splat
(local.get $0)
)
)
- (func $176 (param $0 i32) (result v128)
+ (func $177 (param $0 i32) (result v128)
(v32x4.load_splat
(local.get $0)
)
)
- (func $177 (param $0 i32) (result v128)
+ (func $178 (param $0 i32) (result v128)
(v64x2.load_splat
(local.get $0)
)
)
- (func $178 (param $0 v128) (param $1 v128) (result v128)
+ (func $179 (param $0 v128) (param $1 v128) (result v128)
(i8x16.narrow_i16x8_s
(local.get $0)
(local.get $1)
)
)
- (func $179 (param $0 v128) (param $1 v128) (result v128)
+ (func $180 (param $0 v128) (param $1 v128) (result v128)
(i8x16.narrow_i16x8_u
(local.get $0)
(local.get $1)
)
)
- (func $180 (param $0 v128) (param $1 v128) (result v128)
+ (func $181 (param $0 v128) (param $1 v128) (result v128)
(i16x8.narrow_i32x4_s
(local.get $0)
(local.get $1)
)
)
- (func $181 (param $0 v128) (param $1 v128) (result v128)
+ (func $182 (param $0 v128) (param $1 v128) (result v128)
(i16x8.narrow_i32x4_u
(local.get $0)
(local.get $1)
)
)
- (func $182 (param $0 v128) (result v128)
+ (func $183 (param $0 v128) (result v128)
(i16x8.widen_low_i8x16_s
(local.get $0)
)
)
- (func $183 (param $0 v128) (result v128)
+ (func $184 (param $0 v128) (result v128)
(i16x8.widen_high_i8x16_s
(local.get $0)
)
)
- (func $184 (param $0 v128) (result v128)
+ (func $185 (param $0 v128) (result v128)
(i16x8.widen_low_i8x16_u
(local.get $0)
)
)
- (func $185 (param $0 v128) (result v128)
+ (func $186 (param $0 v128) (result v128)
(i16x8.widen_high_i8x16_u
(local.get $0)
)
)
- (func $186 (param $0 v128) (result v128)
+ (func $187 (param $0 v128) (result v128)
(i32x4.widen_low_i16x8_s
(local.get $0)
)
)
- (func $187 (param $0 v128) (result v128)
+ (func $188 (param $0 v128) (result v128)
(i32x4.widen_high_i16x8_s
(local.get $0)
)
)
- (func $188 (param $0 v128) (result v128)
+ (func $189 (param $0 v128) (result v128)
(i32x4.widen_low_i16x8_u
(local.get $0)
)
)
- (func $189 (param $0 v128) (result v128)
+ (func $190 (param $0 v128) (result v128)
(i32x4.widen_high_i16x8_u
(local.get $0)
)
)
- (func $190 (param $0 i32) (result v128)
+ (func $191 (param $0 i32) (result v128)
(i16x8.load8x8_u
(local.get $0)
)
)
- (func $191 (param $0 i32) (result v128)
+ (func $192 (param $0 i32) (result v128)
(i16x8.load8x8_s
(local.get $0)
)
)
- (func $192 (param $0 i32) (result v128)
+ (func $193 (param $0 i32) (result v128)
(i32x4.load16x4_s
(local.get $0)
)
)
- (func $193 (param $0 i32) (result v128)
+ (func $194 (param $0 i32) (result v128)
(i32x4.load16x4_u
(local.get $0)
)
)
- (func $194 (param $0 i32) (result v128)
+ (func $195 (param $0 i32) (result v128)
(i64x2.load32x2_s
(local.get $0)
)
)
- (func $195 (param $0 i32) (result v128)
+ (func $196 (param $0 i32) (result v128)
(i64x2.load32x2_u
(local.get $0)
)
)
- (func $196 (param $0 v128) (param $1 v128) (result v128)
+ (func $197 (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 d6549f486..26da927a9 100644
--- a/test/spec/simd.wast
+++ b/test/spec/simd.wast
@@ -167,6 +167,7 @@
(func (export "i64x2.shr_u") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1)))
(func (export "i64x2.add") (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1)))
(func (export "i64x2.sub") (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1)))
+ (func (export "i64x2.mul") (param $0 v128) (param $1 v128) (result v128) (i64x2.mul (local.get $0) (local.get $1)))
(func (export "f32x4.abs") (param $0 v128) (result v128) (f32x4.abs (local.get $0)))
(func (export "f32x4.neg") (param $0 v128) (result v128) (f32x4.neg (local.get $0)))
(func (export "f32x4.sqrt") (param $0 v128) (result v128) (f32x4.sqrt (local.get $0)))
@@ -783,6 +784,7 @@
(assert_return (invoke "i64x2.shr_u" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000))
(assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000001 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 2 42))
(assert_return (invoke "i64x2.sub" (v128.const i64x2 2 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 0x8000000000000001 42))
+(assert_return (invoke "i64x2.mul" (v128.const i64x2 2 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 2 0))
;; f32x4 arithmetic
(assert_return (invoke "f32x4.abs" (v128.const f32x4 -0 nan -infinity 5)) (v128.const f32x4 0 nan infinity 5))