summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2022-04-11 15:44:01 -0700
committerGitHub <noreply@github.com>2022-04-11 22:44:01 +0000
commitce0333d91b70f97aa8da002f7348df68a7b56578 (patch)
treeca06495dadf712b18bd775ad050e1e3f459b5574 /test
parent5f88dcdf0d308de12579d26d30f981b0689446af (diff)
downloadbinaryen-ce0333d91b70f97aa8da002f7348df68a7b56578.tar.gz
binaryen-ce0333d91b70f97aa8da002f7348df68a7b56578.tar.bz2
binaryen-ce0333d91b70f97aa8da002f7348df68a7b56578.zip
Implement relaxed SIMD dot product instructions (#4586)
As proposed in https://github.com/WebAssembly/relaxed-simd/issues/52.
Diffstat (limited to 'test')
-rw-r--r--test/lit/relaxed-simd.wast112
1 files changed, 112 insertions, 0 deletions
diff --git a/test/lit/relaxed-simd.wast b/test/lit/relaxed-simd.wast
index e1d936c17..9d957ff60 100644
--- a/test/lit/relaxed-simd.wast
+++ b/test/lit/relaxed-simd.wast
@@ -369,6 +369,88 @@
)
)
+ ;; CHECK-BINARY: (func $i16x8.dot_i8x16_i7x16_s (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BINARY-NEXT: (i16x8.dot_i8x16_i7x16_s
+ ;; CHECK-BINARY-NEXT: (local.get $0)
+ ;; CHECK-BINARY-NEXT: (local.get $1)
+ ;; CHECK-BINARY-NEXT: )
+ ;; CHECK-BINARY-NEXT: )
+ ;; CHECK-TEXT: (func $i16x8.dot_i8x16_i7x16_s (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-TEXT-NEXT: (i16x8.dot_i8x16_i7x16_s
+ ;; CHECK-TEXT-NEXT: (local.get $0)
+ ;; CHECK-TEXT-NEXT: (local.get $1)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ (func $i16x8.dot_i8x16_i7x16_s (param $0 v128) (param $1 v128) (result v128)
+ (i16x8.dot_i8x16_i7x16_s
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+
+ ;; CHECK-BINARY: (func $i16x8.dot_i8x16_i7x16_u (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-BINARY-NEXT: (i16x8.dot_i8x16_i7x16_u
+ ;; CHECK-BINARY-NEXT: (local.get $0)
+ ;; CHECK-BINARY-NEXT: (local.get $1)
+ ;; CHECK-BINARY-NEXT: )
+ ;; CHECK-BINARY-NEXT: )
+ ;; CHECK-TEXT: (func $i16x8.dot_i8x16_i7x16_u (param $0 v128) (param $1 v128) (result v128)
+ ;; CHECK-TEXT-NEXT: (i16x8.dot_i8x16_i7x16_u
+ ;; CHECK-TEXT-NEXT: (local.get $0)
+ ;; CHECK-TEXT-NEXT: (local.get $1)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ (func $i16x8.dot_i8x16_i7x16_u (param $0 v128) (param $1 v128) (result v128)
+ (i16x8.dot_i8x16_i7x16_u
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+
+;; CHECK-BINARY: (func $i32x4.dot_i8x16_i7x16_add_s (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BINARY-NEXT: (i32x4.dot_i8x16_i7x16_add_s
+;; CHECK-BINARY-NEXT: (local.get $0)
+;; CHECK-BINARY-NEXT: (local.get $1)
+;; CHECK-BINARY-NEXT: (local.get $2)
+;; CHECK-BINARY-NEXT: )
+;; CHECK-BINARY-NEXT: )
+;; CHECK-TEXT: (func $i32x4.dot_i8x16_i7x16_add_s (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-TEXT-NEXT: (i32x4.dot_i8x16_i7x16_add_s
+;; CHECK-TEXT-NEXT: (local.get $0)
+;; CHECK-TEXT-NEXT: (local.get $1)
+;; CHECK-TEXT-NEXT: (local.get $2)
+;; CHECK-TEXT-NEXT: )
+;; CHECK-TEXT-NEXT: )
+(func $i32x4.dot_i8x16_i7x16_add_s (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (i32x4.dot_i8x16_i7x16_add_s
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+
+;; CHECK-BINARY: (func $i32x4.dot_i8x16_i7x16_add_u (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-BINARY-NEXT: (i32x4.dot_i8x16_i7x16_add_u
+;; CHECK-BINARY-NEXT: (local.get $0)
+;; CHECK-BINARY-NEXT: (local.get $1)
+;; CHECK-BINARY-NEXT: (local.get $2)
+;; CHECK-BINARY-NEXT: )
+;; CHECK-BINARY-NEXT: )
+;; CHECK-TEXT: (func $i32x4.dot_i8x16_i7x16_add_u (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-TEXT-NEXT: (i32x4.dot_i8x16_i7x16_add_u
+;; CHECK-TEXT-NEXT: (local.get $0)
+;; CHECK-TEXT-NEXT: (local.get $1)
+;; CHECK-TEXT-NEXT: (local.get $2)
+;; CHECK-TEXT-NEXT: )
+;; CHECK-TEXT-NEXT: )
+(func $i32x4.dot_i8x16_i7x16_add_u (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (i32x4.dot_i8x16_i7x16_add_u
+ (local.get $0)
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+
)
;; CHECK-NODEBUG: (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128)))
@@ -507,3 +589,33 @@
;; CHECK-NODEBUG-NEXT: (local.get $1)
;; CHECK-NODEBUG-NEXT: )
;; CHECK-NODEBUG-NEXT: )
+
+;; CHECK-NODEBUG: (func $18 (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-NODEBUG-NEXT: (i16x8.dot_i8x16_i7x16_s
+;; CHECK-NODEBUG-NEXT: (local.get $0)
+;; CHECK-NODEBUG-NEXT: (local.get $1)
+;; CHECK-NODEBUG-NEXT: )
+;; CHECK-NODEBUG-NEXT: )
+
+;; CHECK-NODEBUG: (func $19 (param $0 v128) (param $1 v128) (result v128)
+;; CHECK-NODEBUG-NEXT: (i16x8.dot_i8x16_i7x16_u
+;; CHECK-NODEBUG-NEXT: (local.get $0)
+;; CHECK-NODEBUG-NEXT: (local.get $1)
+;; CHECK-NODEBUG-NEXT: )
+;; CHECK-NODEBUG-NEXT: )
+
+;; CHECK-NODEBUG: (func $20 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-NODEBUG-NEXT: (i32x4.dot_i8x16_i7x16_add_s
+;; CHECK-NODEBUG-NEXT: (local.get $0)
+;; CHECK-NODEBUG-NEXT: (local.get $1)
+;; CHECK-NODEBUG-NEXT: (local.get $2)
+;; CHECK-NODEBUG-NEXT: )
+;; CHECK-NODEBUG-NEXT: )
+
+;; CHECK-NODEBUG: (func $21 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+;; CHECK-NODEBUG-NEXT: (i32x4.dot_i8x16_i7x16_add_u
+;; CHECK-NODEBUG-NEXT: (local.get $0)
+;; CHECK-NODEBUG-NEXT: (local.get $1)
+;; CHECK-NODEBUG-NEXT: (local.get $2)
+;; CHECK-NODEBUG-NEXT: )
+;; CHECK-NODEBUG-NEXT: )