diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2022-04-11 15:44:01 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-11 22:44:01 +0000 |
commit | ce0333d91b70f97aa8da002f7348df68a7b56578 (patch) | |
tree | ca06495dadf712b18bd775ad050e1e3f459b5574 /test | |
parent | 5f88dcdf0d308de12579d26d30f981b0689446af (diff) | |
download | binaryen-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.wast | 112 |
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: ) |