@@ -317,6 +317,9 @@ fn append_instruction(ctx: &mut ValidationContext, inst: Operator, loc: InstrLoc
317317 let binop = |ctx : & mut ValidationContext , op| {
318318 ctx. alloc_instr ( Binop { op } , loc) ;
319319 } ;
320+ let ternop = |ctx : & mut ValidationContext , op| {
321+ ctx. alloc_instr ( TernOp { op } , loc) ;
322+ } ;
320323
321324 let mem_arg = |ctx : & mut ValidationContext , arg : & wasmparser:: MemArg | -> ( MemoryId , MemArg ) {
322325 (
@@ -1330,6 +1333,29 @@ fn append_instruction(ctx: &mut ValidationContext, inst: Operator, loc: InstrLoc
13301333 ctx. alloc_instr ( ReturnCallIndirect { ty, table } , loc) ;
13311334 }
13321335
1336+ Operator :: I8x16RelaxedSwizzle => binop ( ctx, BinaryOp :: I8x16RelaxedSwizzle ) ,
1337+ Operator :: I32x4RelaxedTruncF32x4S => unop ( ctx, UnaryOp :: I32x4RelaxedTruncF32x4S ) ,
1338+ Operator :: I32x4RelaxedTruncF32x4U => unop ( ctx, UnaryOp :: I32x4RelaxedTruncF32x4U ) ,
1339+ Operator :: I32x4RelaxedTruncF64x2SZero => unop ( ctx, UnaryOp :: I32x4RelaxedTruncF64x2SZero ) ,
1340+ Operator :: I32x4RelaxedTruncF64x2UZero => unop ( ctx, UnaryOp :: I32x4RelaxedTruncF64x2UZero ) ,
1341+ Operator :: F32x4RelaxedMadd => ternop ( ctx, TernaryOp :: F32x4RelaxedMadd ) ,
1342+ Operator :: F32x4RelaxedNmadd => ternop ( ctx, TernaryOp :: F32x4RelaxedNmadd ) ,
1343+ Operator :: F64x2RelaxedMadd => ternop ( ctx, TernaryOp :: F64x2RelaxedMadd ) ,
1344+ Operator :: F64x2RelaxedNmadd => ternop ( ctx, TernaryOp :: F64x2RelaxedNmadd ) ,
1345+ Operator :: I8x16RelaxedLaneselect => ternop ( ctx, TernaryOp :: I8x16RelaxedLaneselect ) ,
1346+ Operator :: I16x8RelaxedLaneselect => ternop ( ctx, TernaryOp :: I16x8RelaxedLaneselect ) ,
1347+ Operator :: I32x4RelaxedLaneselect => ternop ( ctx, TernaryOp :: I32x4RelaxedLaneselect ) ,
1348+ Operator :: I64x2RelaxedLaneselect => ternop ( ctx, TernaryOp :: I64x2RelaxedLaneselect ) ,
1349+ Operator :: F32x4RelaxedMin => binop ( ctx, BinaryOp :: F32x4RelaxedMin ) ,
1350+ Operator :: F32x4RelaxedMax => binop ( ctx, BinaryOp :: F32x4RelaxedMax ) ,
1351+ Operator :: F64x2RelaxedMin => binop ( ctx, BinaryOp :: F64x2RelaxedMin ) ,
1352+ Operator :: F64x2RelaxedMax => binop ( ctx, BinaryOp :: F64x2RelaxedMax ) ,
1353+ Operator :: I16x8RelaxedQ15mulrS => binop ( ctx, BinaryOp :: I16x8RelaxedQ15mulrS ) ,
1354+ Operator :: I16x8RelaxedDotI8x16I7x16S => binop ( ctx, BinaryOp :: I16x8RelaxedDotI8x16I7x16S ) ,
1355+ Operator :: I32x4RelaxedDotI8x16I7x16AddS => {
1356+ ternop ( ctx, TernaryOp :: I32x4RelaxedDotI8x16I7x16AddS )
1357+ }
1358+
13331359 // List all unimplmented operators instead of have a catch-all arm.
13341360 // So that future upgrades won't miss additions to this list that may be important to know.
13351361 Operator :: TryTable { try_table : _ }
@@ -1465,26 +1491,6 @@ fn append_instruction(ctx: &mut ValidationContext, inst: Operator, loc: InstrLoc
14651491 ordering : _,
14661492 global_index : _,
14671493 }
1468- | Operator :: I8x16RelaxedSwizzle
1469- | Operator :: I32x4RelaxedTruncF32x4S
1470- | Operator :: I32x4RelaxedTruncF32x4U
1471- | Operator :: I32x4RelaxedTruncF64x2SZero
1472- | Operator :: I32x4RelaxedTruncF64x2UZero
1473- | Operator :: F32x4RelaxedMadd
1474- | Operator :: F32x4RelaxedNmadd
1475- | Operator :: F64x2RelaxedMadd
1476- | Operator :: F64x2RelaxedNmadd
1477- | Operator :: I8x16RelaxedLaneselect
1478- | Operator :: I16x8RelaxedLaneselect
1479- | Operator :: I32x4RelaxedLaneselect
1480- | Operator :: I64x2RelaxedLaneselect
1481- | Operator :: F32x4RelaxedMin
1482- | Operator :: F32x4RelaxedMax
1483- | Operator :: F64x2RelaxedMin
1484- | Operator :: F64x2RelaxedMax
1485- | Operator :: I16x8RelaxedQ15mulrS
1486- | Operator :: I16x8RelaxedDotI8x16I7x16S
1487- | Operator :: I32x4RelaxedDotI8x16I7x16AddS
14881494 | Operator :: CallRef { type_index : _ }
14891495 | Operator :: ReturnCallRef { type_index : _ }
14901496 | Operator :: RefAsNonNull
0 commit comments