diff options
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r-- | src/wasm/wasm-binary.cpp | 68 |
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; } |