summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-binary.cpp
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2021-01-19 19:32:10 -0500
committerGitHub <noreply@github.com>2021-01-19 16:32:10 -0800
commita4d1b53ff3374a5d7843b0a879a7908334d5bb46 (patch)
tree6bc7c3fd1ca8850f5fbba27ee850b98343306656 /src/wasm/wasm-binary.cpp
parent0f212dfc69306688afa5057e3179aed5af3edc85 (diff)
downloadbinaryen-a4d1b53ff3374a5d7843b0a879a7908334d5bb46.tar.gz
binaryen-a4d1b53ff3374a5d7843b0a879a7908334d5bb46.tar.bz2
binaryen-a4d1b53ff3374a5d7843b0a879a7908334d5bb46.zip
Prototype additional f64x2 conversions (#3501)
As proposed in https://github.com/WebAssembly/simd/pull/383, with opcodes coordinated with the WIP V8 prototype.
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r--src/wasm/wasm-binary.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index bf2e4afef..eea0a9c21 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -5037,6 +5037,30 @@ bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) {
curr = allocator.alloc<Unary>();
curr->op = WidenHighUVecI32x4ToVecI64x2;
break;
+ case BinaryConsts::F64x2ConvertLowSI32x4:
+ curr = allocator.alloc<Unary>();
+ curr->op = ConvertLowSVecI32x4ToVecF64x2;
+ break;
+ case BinaryConsts::F64x2ConvertLowUI32x4:
+ curr = allocator.alloc<Unary>();
+ curr->op = ConvertLowUVecI32x4ToVecF64x2;
+ break;
+ case BinaryConsts::I32x4TruncSatZeroSF64x2:
+ curr = allocator.alloc<Unary>();
+ curr->op = TruncSatZeroSVecF64x2ToVecI32x4;
+ break;
+ case BinaryConsts::I32x4TruncSatZeroUF64x2:
+ curr = allocator.alloc<Unary>();
+ curr->op = TruncSatZeroUVecF64x2ToVecI32x4;
+ break;
+ case BinaryConsts::F32x4DemoteZeroF64x2:
+ curr = allocator.alloc<Unary>();
+ curr->op = DemoteZeroVecF64x2ToVecF32x4;
+ break;
+ case BinaryConsts::F64x2PromoteLowF32x4:
+ curr = allocator.alloc<Unary>();
+ curr->op = PromoteLowVecF32x4ToVecF64x2;
+ break;
default:
return false;
}