summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-stack.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-stack.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-stack.cpp')
-rw-r--r--src/wasm/wasm-stack.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/wasm/wasm-stack.cpp b/src/wasm/wasm-stack.cpp
index 58fa3f2ef..9ebf39fb8 100644
--- a/src/wasm/wasm-stack.cpp
+++ b/src/wasm/wasm-stack.cpp
@@ -981,6 +981,19 @@ void BinaryInstWriter::visitUnary(Unary* curr) {
case SqrtVecF32x4:
o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Sqrt);
break;
+ case CeilVecF32x4:
+ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Ceil);
+ break;
+ case FloorVecF32x4:
+ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Floor);
+ break;
+ case TruncVecF32x4:
+ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Trunc);
+ break;
+ case NearestVecF32x4:
+ o << int8_t(BinaryConsts::SIMDPrefix)
+ << U32LEB(BinaryConsts::F32x4Nearest);
+ break;
case AbsVecF64x2:
o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Abs);
break;
@@ -990,6 +1003,19 @@ void BinaryInstWriter::visitUnary(Unary* curr) {
case SqrtVecF64x2:
o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Sqrt);
break;
+ case CeilVecF64x2:
+ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Ceil);
+ break;
+ case FloorVecF64x2:
+ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Floor);
+ break;
+ case TruncVecF64x2:
+ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Trunc);
+ break;
+ case NearestVecF64x2:
+ o << int8_t(BinaryConsts::SIMDPrefix)
+ << U32LEB(BinaryConsts::F64x2Nearest);
+ break;
case TruncSatSVecF32x4ToVecI32x4:
o << int8_t(BinaryConsts::SIMDPrefix)
<< U32LEB(BinaryConsts::I32x4TruncSatSF32x4);