summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-binary.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r--src/wasm/wasm-binary.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 6ce2c7979..0ccb9d6db 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -5524,6 +5524,26 @@ bool WasmBinaryBuilder::maybeVisitSIMDBinary(Expression*& out, uint32_t code) {
curr = allocator.alloc<Binary>();
curr->op = SwizzleVec8x16;
break;
+ case BinaryConsts::I8x16RelaxedSwizzle:
+ curr = allocator.alloc<Binary>();
+ curr->op = RelaxedSwizzleVec8x16;
+ break;
+ case BinaryConsts::F32x4RelaxedMin:
+ curr = allocator.alloc<Binary>();
+ curr->op = RelaxedMinVecF32x4;
+ break;
+ case BinaryConsts::F32x4RelaxedMax:
+ curr = allocator.alloc<Binary>();
+ curr->op = RelaxedMaxVecF32x4;
+ break;
+ case BinaryConsts::F64x2RelaxedMin:
+ curr = allocator.alloc<Binary>();
+ curr->op = RelaxedMinVecF64x2;
+ break;
+ case BinaryConsts::F64x2RelaxedMax:
+ curr = allocator.alloc<Binary>();
+ curr->op = RelaxedMaxVecF64x2;
+ break;
default:
return false;
}
@@ -5797,6 +5817,22 @@ bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) {
curr = allocator.alloc<Unary>();
curr->op = PromoteLowVecF32x4ToVecF64x2;
break;
+ case BinaryConsts::I32x4RelaxedTruncF32x4S:
+ curr = allocator.alloc<Unary>();
+ curr->op = RelaxedTruncSVecF32x4ToVecI32x4;
+ break;
+ case BinaryConsts::I32x4RelaxedTruncF32x4U:
+ curr = allocator.alloc<Unary>();
+ curr->op = RelaxedTruncUVecF32x4ToVecI32x4;
+ break;
+ case BinaryConsts::I32x4RelaxedTruncF64x2SZero:
+ curr = allocator.alloc<Unary>();
+ curr->op = RelaxedTruncZeroSVecF64x2ToVecI32x4;
+ break;
+ case BinaryConsts::I32x4RelaxedTruncF64x2UZero:
+ curr = allocator.alloc<Unary>();
+ curr->op = RelaxedTruncZeroUVecF64x2ToVecI32x4;
+ break;
default:
return false;
}
@@ -5950,6 +5986,38 @@ bool WasmBinaryBuilder::maybeVisitSIMDTernary(Expression*& out, uint32_t code) {
curr = allocator.alloc<SIMDTernary>();
curr->op = Bitselect;
break;
+ case BinaryConsts::I8x16Laneselect:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = LaneselectI8x16;
+ break;
+ case BinaryConsts::I16x8Laneselect:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = LaneselectI16x8;
+ break;
+ case BinaryConsts::I32x4Laneselect:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = LaneselectI32x4;
+ break;
+ case BinaryConsts::I64x2Laneselect:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = LaneselectI64x2;
+ break;
+ case BinaryConsts::F32x4RelaxedFma:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = RelaxedFmaVecF32x4;
+ break;
+ case BinaryConsts::F32x4RelaxedFms:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = RelaxedFmsVecF32x4;
+ break;
+ case BinaryConsts::F64x2RelaxedFma:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = RelaxedFmaVecF64x2;
+ break;
+ case BinaryConsts::F64x2RelaxedFms:
+ curr = allocator.alloc<SIMDTernary>();
+ curr->op = RelaxedFmsVecF64x2;
+ break;
default:
return false;
}