[wasm][fuzzer] Fix fuzzer for saturated conversion

Opcodes for saturated conversions are 2 bytes long, hence EmitWithPrefix is necessary.

Bug: chromium:1084344
Change-Id: I7b8821ba952abee6b113f705559f2f3572d0f7c4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2209058
Commit-Queue: Richard Stotz <rstz@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#67918}
This commit is contained in:
Richard Stotz 2020-05-20 09:08:11 +02:00 committed by Commit Bot
parent 4e8efce9db
commit 567f9e085e

View File

@ -364,7 +364,7 @@ class WasmGenerator {
}
template <WasmOpcode Op, ValueType::Kind... Args>
void simd_op(DataRange* data) {
void op_with_prefix(DataRange* data) {
Generate<Args...>(data);
builder_->EmitWithPrefix(Op);
}
@ -790,14 +790,14 @@ void WasmGenerator::Generate<ValueType::kI32>(DataRange* data) {
&WasmGenerator::op<kExprI32UConvertF64, ValueType::kF64>,
&WasmGenerator::op<kExprI32ReinterpretF32, ValueType::kF32>,
&WasmGenerator::op<kExprI32SConvertSatF32, ValueType::kF32>,
&WasmGenerator::op<kExprI32UConvertSatF32, ValueType::kF32>,
&WasmGenerator::op<kExprI32SConvertSatF64, ValueType::kF64>,
&WasmGenerator::op<kExprI32UConvertSatF64, ValueType::kF64>,
&WasmGenerator::op<kExprI64SConvertSatF32, ValueType::kF32>,
&WasmGenerator::op<kExprI64UConvertSatF32, ValueType::kF32>,
&WasmGenerator::op<kExprI64SConvertSatF64, ValueType::kF64>,
&WasmGenerator::op<kExprI64UConvertSatF64, ValueType::kF64>,
&WasmGenerator::op_with_prefix<kExprI32SConvertSatF32, ValueType::kF32>,
&WasmGenerator::op_with_prefix<kExprI32UConvertSatF32, ValueType::kF32>,
&WasmGenerator::op_with_prefix<kExprI32SConvertSatF64, ValueType::kF64>,
&WasmGenerator::op_with_prefix<kExprI32UConvertSatF64, ValueType::kF64>,
&WasmGenerator::op_with_prefix<kExprI64SConvertSatF32, ValueType::kF32>,
&WasmGenerator::op_with_prefix<kExprI64UConvertSatF32, ValueType::kF32>,
&WasmGenerator::op_with_prefix<kExprI64SConvertSatF64, ValueType::kF64>,
&WasmGenerator::op_with_prefix<kExprI64UConvertSatF64, ValueType::kF64>,
&WasmGenerator::block<ValueType::kI32>,
&WasmGenerator::loop<ValueType::kI32>,
@ -858,9 +858,9 @@ void WasmGenerator::Generate<ValueType::kI32>(DataRange* data) {
ValueType::kI32, ValueType::kI32,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprS1x16AnyTrue, ValueType::kS128>,
&WasmGenerator::simd_op<kExprS1x8AnyTrue, ValueType::kS128>,
&WasmGenerator::simd_op<kExprS1x4AnyTrue, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprS1x16AnyTrue, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprS1x8AnyTrue, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprS1x4AnyTrue, ValueType::kS128>,
&WasmGenerator::current_memory,
&WasmGenerator::grow_memory,
@ -1133,227 +1133,257 @@ void WasmGenerator::Generate<ValueType::kS128>(DataRange* data) {
}
constexpr GenerateFn alternatives[] = {
&WasmGenerator::simd_op<kExprI8x16Splat, ValueType::kI32>,
&WasmGenerator::simd_op<kExprI8x16Eq, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16Ne, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16LtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16LtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16GtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16GtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16LeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16LeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16GeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16GeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16Neg, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16Shl, ValueType::kS128, ValueType::kI32>,
&WasmGenerator::simd_op<kExprI8x16ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI8x16ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI8x16Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16AddSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16AddSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16SubSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16SubSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16MinS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16MinU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16Splat, ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI8x16Eq, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16Ne, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16LtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16LtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16GtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16GtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16LeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16LeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16GeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16GeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16Neg, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16Shl, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI8x16ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI8x16ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI8x16Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16AddSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16AddSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16SubSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16SubSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16MinS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16MinU, ValueType::kS128,
ValueType::kS128>,
// I8x16Mul is prototyped but not in the proposal, thus omitted here.
&WasmGenerator::simd_op<kExprI8x16MaxS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16MaxU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16MaxS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16MaxU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8Splat, ValueType::kI32>,
&WasmGenerator::simd_op<kExprI16x8Eq, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8Ne, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8LtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8LtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8GtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8GtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8LeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8LeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8GeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8GeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8Neg, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8Shl, ValueType::kS128, ValueType::kI32>,
&WasmGenerator::simd_op<kExprI16x8ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI16x8ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI16x8Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8AddSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8AddSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8SubSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8SubSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8MinS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8MinU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8MaxS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8MaxU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8Splat, ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI16x8Eq, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8Ne, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8LtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8LtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8GtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8GtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8LeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8LeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8GeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8GeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8Neg, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8Shl, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI16x8ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI16x8ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI16x8Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8AddSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8AddSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8SubSaturateS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8SubSaturateU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8MinS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8MinU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8MaxS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8MaxU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4Splat, ValueType::kI32>,
&WasmGenerator::simd_op<kExprI32x4Eq, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4Ne, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4LtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4LtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4GtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4GtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4LeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4LeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4GeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4GeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4Neg, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4Shl, ValueType::kS128, ValueType::kI32>,
&WasmGenerator::simd_op<kExprI32x4ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI32x4ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI32x4Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4MinS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4MinU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4MaxS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4MaxU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4Splat, ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI32x4Eq, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4Ne, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4LtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4LtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4GtS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4GtU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4LeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4LeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4GeS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4GeU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4Neg, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4Shl, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI32x4ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI32x4ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI32x4Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4MinS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4MinU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4MaxS, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4MaxU, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI64x2Splat, ValueType::kI64>,
&WasmGenerator::simd_op<kExprI64x2Neg, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI64x2Shl, ValueType::kS128, ValueType::kI32>,
&WasmGenerator::simd_op<kExprI64x2ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI64x2ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::simd_op<kExprI64x2Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI64x2Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI64x2Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI64x2Splat, ValueType::kI64>,
&WasmGenerator::op_with_prefix<kExprI64x2Neg, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI64x2Shl, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI64x2ShrS, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI64x2ShrU, ValueType::kS128,
ValueType::kI32>,
&WasmGenerator::op_with_prefix<kExprI64x2Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI64x2Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI64x2Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Splat, ValueType::kF32>,
&WasmGenerator::simd_op<kExprF32x4Eq, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Ne, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Lt, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Gt, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Le, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Ge, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Abs, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Neg, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Sqrt, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Div, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Min, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4Max, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Splat, ValueType::kF32>,
&WasmGenerator::op_with_prefix<kExprF32x4Eq, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Ne, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Lt, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Gt, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Le, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Ge, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Abs, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Neg, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Sqrt, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Div, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Min, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4Max, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Splat, ValueType::kF64>,
&WasmGenerator::simd_op<kExprF64x2Eq, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Ne, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Lt, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Gt, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Le, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Ge, ValueType::kS128, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Abs, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Neg, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Sqrt, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Div, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Min, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprF64x2Max, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Splat, ValueType::kF64>,
&WasmGenerator::op_with_prefix<kExprF64x2Eq, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Ne, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Lt, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Gt, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Le, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Ge, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Abs, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Neg, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Sqrt, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Add, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Sub, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Mul, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Div, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Min, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF64x2Max, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4SConvertF32x4, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4UConvertF32x4, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4SConvertI32x4, ValueType::kS128>,
&WasmGenerator::simd_op<kExprF32x4UConvertI32x4, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4SConvertF32x4, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4UConvertF32x4, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4SConvertI32x4, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprF32x4UConvertI32x4, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16SConvertI16x8, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI8x16UConvertI16x8, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8SConvertI32x4, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8UConvertI32x4, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16SConvertI16x8, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI8x16UConvertI16x8, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8SConvertI32x4, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8UConvertI32x4, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8SConvertI8x16Low, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8SConvertI8x16High, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8UConvertI8x16Low, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI16x8UConvertI8x16High, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4SConvertI16x8Low, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4SConvertI16x8High, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4UConvertI16x8Low, ValueType::kS128>,
&WasmGenerator::simd_op<kExprI32x4UConvertI16x8High, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8SConvertI8x16Low,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8SConvertI8x16High,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8UConvertI8x16Low,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI16x8UConvertI8x16High,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4SConvertI16x8Low,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4SConvertI16x8High,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4UConvertI16x8Low,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprI32x4UConvertI16x8High,
ValueType::kS128>,
&WasmGenerator::simd_shuffle,
&WasmGenerator::simd_op<kExprS8x16Swizzle, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprS8x16Swizzle, ValueType::kS128,
ValueType::kS128>,
&WasmGenerator::memop<kExprS128LoadMem>,
&WasmGenerator::memop<kExprI16x8Load8x8S>,