summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-binary.cpp
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2020-06-05 10:46:23 -0700
committerGitHub <noreply@github.com>2020-06-05 10:46:23 -0700
commit037d7a5d04c376b2fa8fc26076af9579c3712063 (patch)
tree510e3023d8472e1d235b0002adff963fae89009e /src/wasm/wasm-binary.cpp
parent0c58de1d350928e5e45594e4642349dc77697725 (diff)
downloadbinaryen-037d7a5d04c376b2fa8fc26076af9579c3712063.tar.gz
binaryen-037d7a5d04c376b2fa8fc26076af9579c3712063.tar.bz2
binaryen-037d7a5d04c376b2fa8fc26076af9579c3712063.zip
Add prototype SIMD rounding instructions (#2895)
As specified in https://github.com/WebAssembly/simd/pull/232.
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r--src/wasm/wasm-binary.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 3441953a7..a766e9b63 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -4194,6 +4194,22 @@ bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) {
curr = allocator.alloc<Unary>();
curr->op = SqrtVecF32x4;
break;
+ case BinaryConsts::F32x4Ceil:
+ curr = allocator.alloc<Unary>();
+ curr->op = CeilVecF32x4;
+ break;
+ case BinaryConsts::F32x4Floor:
+ curr = allocator.alloc<Unary>();
+ curr->op = FloorVecF32x4;
+ break;
+ case BinaryConsts::F32x4Trunc:
+ curr = allocator.alloc<Unary>();
+ curr->op = TruncVecF32x4;
+ break;
+ case BinaryConsts::F32x4Nearest:
+ curr = allocator.alloc<Unary>();
+ curr->op = NearestVecF32x4;
+ break;
case BinaryConsts::F64x2Abs:
curr = allocator.alloc<Unary>();
curr->op = AbsVecF64x2;
@@ -4206,6 +4222,22 @@ bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) {
curr = allocator.alloc<Unary>();
curr->op = SqrtVecF64x2;
break;
+ case BinaryConsts::F64x2Ceil:
+ curr = allocator.alloc<Unary>();
+ curr->op = CeilVecF64x2;
+ break;
+ case BinaryConsts::F64x2Floor:
+ curr = allocator.alloc<Unary>();
+ curr->op = FloorVecF64x2;
+ break;
+ case BinaryConsts::F64x2Trunc:
+ curr = allocator.alloc<Unary>();
+ curr->op = TruncVecF64x2;
+ break;
+ case BinaryConsts::F64x2Nearest:
+ curr = allocator.alloc<Unary>();
+ curr->op = NearestVecF64x2;
+ break;
case BinaryConsts::I32x4TruncSatSF32x4:
curr = allocator.alloc<Unary>();
curr->op = TruncSatSVecF32x4ToVecI32x4;