CL/aarch64: implement the wasm SIMD i32x4.dot_i16x8_s instruction

This patch implements, for aarch64, the following wasm SIMD extensions

  i32x4.dot_i16x8_s instruction
  https://github.com/WebAssembly/simd/pull/127

It also updates dependencies as follows, in order that the new instruction can
be parsed, decoded, etc:

  wat          to  1.0.27
  wast         to  26.0.1
  wasmparser   to  0.65.0
  wasmprinter  to  0.2.12

The changes are straightforward:

* new CLIF instruction `widening_pairwise_dot_product_s`

* translation from wasm into `widening_pairwise_dot_product_s`

* new AArch64 instructions `smull`, `smull2` (part of the `VecRRR` group)

* translation from `widening_pairwise_dot_product_s` to `smull ; smull2 ; addv`

There is no testcase in this commit, because that is a separate repo.  The
implementation has been tested, nevertheless.
This commit is contained in:
Julian Seward
2020-10-27 15:04:32 +01:00
committed by julian-seward1
parent 54a97f784e
commit 5a5fb11979
26 changed files with 228 additions and 54 deletions

52
Cargo.lock generated
View File

@@ -349,7 +349,7 @@ dependencies = [
"souper-ir",
"target-lexicon",
"thiserror",
"wast 25.0.0",
"wast 26.0.1",
]
[[package]]
@@ -549,7 +549,7 @@ dependencies = [
"smallvec",
"target-lexicon",
"thiserror",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wat",
]
@@ -1062,7 +1062,7 @@ dependencies = [
"staticvec",
"thiserror",
"typemap",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wat",
]
@@ -1233,7 +1233,7 @@ dependencies = [
"peepmatic-test-operator",
"peepmatic-traits",
"serde",
"wast 25.0.0",
"wast 26.0.1",
"z3",
]
@@ -1261,7 +1261,7 @@ dependencies = [
"peepmatic-traits",
"rand 0.7.3",
"serde",
"wast 25.0.0",
"wast 26.0.1",
]
[[package]]
@@ -1286,7 +1286,7 @@ dependencies = [
"serde",
"serde_test",
"thiserror",
"wast 25.0.0",
"wast 26.0.1",
]
[[package]]
@@ -1298,7 +1298,7 @@ dependencies = [
"peepmatic",
"peepmatic-test-operator",
"souper-ir",
"wast 25.0.0",
"wast 26.0.1",
]
[[package]]
@@ -1319,7 +1319,7 @@ version = "0.67.0"
dependencies = [
"peepmatic-traits",
"serde",
"wast 25.0.0",
"wast 26.0.1",
]
[[package]]
@@ -2290,18 +2290,18 @@ checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6"
[[package]]
name = "wasmparser"
version = "0.63.0"
version = "0.65.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57da5d7300428d75d8b3cdfb736e41ee6af8926d69c1de2f201a1a22f234b7b5"
checksum = "87cc2fe6350834b4e528ba0901e7aa405d78b89dc1fa3145359eb4de0e323fcf"
[[package]]
name = "wasmprinter"
version = "0.2.10"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd1fea2e86fb107de33db6538db99f73e8d058f6fda2bbd8cceafff847dd9266"
checksum = "0fe87e79ad307dc73cb7caca2b57d049d2905c7db1317a9c21171e69aa9f93d3"
dependencies = [
"anyhow",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
]
[[package]]
@@ -2321,7 +2321,7 @@ dependencies = [
"smallvec",
"target-lexicon",
"tempfile",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wasmtime-cache",
"wasmtime-environ",
"wasmtime-jit",
@@ -2399,7 +2399,7 @@ dependencies = [
"test-programs",
"tracing-subscriber",
"wasi-common",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wasmtime",
"wasmtime-cache",
"wasmtime-debug",
@@ -2434,7 +2434,7 @@ dependencies = [
"object 0.21.1",
"target-lexicon",
"thiserror",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wasmtime-environ",
]
@@ -2453,7 +2453,7 @@ dependencies = [
"more-asserts",
"serde",
"thiserror",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
]
[[package]]
@@ -2481,7 +2481,7 @@ dependencies = [
"log",
"rayon",
"wasm-smith",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wasmprinter",
"wasmtime",
"wasmtime-wast",
@@ -2508,7 +2508,7 @@ dependencies = [
"serde",
"target-lexicon",
"thiserror",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wasmtime-cranelift",
"wasmtime-debug",
"wasmtime-environ",
@@ -2525,7 +2525,7 @@ version = "0.20.0"
dependencies = [
"cranelift-codegen",
"lightbeam",
"wasmparser 0.63.0",
"wasmparser 0.65.0",
"wasmtime-environ",
]
@@ -2617,7 +2617,7 @@ version = "0.20.0"
dependencies = [
"anyhow",
"wasmtime",
"wast 25.0.0",
"wast 26.0.1",
]
[[package]]
@@ -2652,20 +2652,20 @@ dependencies = [
[[package]]
name = "wast"
version = "25.0.0"
version = "26.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8c67a4386e4efe10563552848d8c6a4b7f941e69924a935495645c3f52b32d0"
checksum = "b3f174eed73e885ede6c8fcc3fbea8c3757afa521840676496cde56bb742ddab"
dependencies = [
"leb128",
]
[[package]]
name = "wat"
version = "1.0.26"
version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4766d466249e23279e92c52033429eb91141c5efea1c4478138fa6f6ef4efe3e"
checksum = "26b2dccbce4d0e14875091846e110a2369267b18ddd0d6423479b88dad914d71"
dependencies = [
"wast 25.0.0",
"wast 26.0.1",
]
[[package]]