| Index: src/wasm/ast-decoder.cc
|
| diff --git a/src/wasm/ast-decoder.cc b/src/wasm/ast-decoder.cc
|
| index facdab62eeecd7c568dc33180daee24dca7e1a88..88e70cbf17e5062a88f18ccb47172e6c12047a17 100644
|
| --- a/src/wasm/ast-decoder.cc
|
| +++ b/src/wasm/ast-decoder.cc
|
| @@ -1019,6 +1019,15 @@ class WasmFullDecoder : public WasmDecoder {
|
| len = 1 + operand.length;
|
| break;
|
| }
|
| + case kSimdPrefix: {
|
| + if (FLAG_wasm_simd_prototype) {
|
| + len++;
|
| + byte simd_index = *(pc_ + 1);
|
| + opcode = static_cast<WasmOpcode>(opcode << 8 | simd_index);
|
| + DecodeSimdOpcode(opcode);
|
| + break;
|
| + }
|
| + }
|
| case kExprJITSingleFunction: {
|
| if (FLAG_wasm_jit_prototype) {
|
| JITSingleFunctionOperand operand(this, pc_);
|
| @@ -1139,6 +1148,17 @@ class WasmFullDecoder : public WasmDecoder {
|
| return 1 + operand.length;
|
| }
|
|
|
| + void DecodeSimdOpcode(WasmOpcode opcode) {
|
| + FunctionSig* sig = WasmOpcodes::Signature(opcode);
|
| + compiler::NodeVector inputs(sig->parameter_count(), zone_);
|
| + for (size_t i = sig->parameter_count(); i > 0; i--) {
|
| + Value val = Pop(static_cast<int>(i - 1), sig->GetParam(i - 1));
|
| + inputs[i - 1] = val.node;
|
| + }
|
| + TFNode* node = BUILD(SimdOp, opcode, inputs);
|
| + Push(GetReturnType(sig), node);
|
| + }
|
| +
|
| void DoReturn() {
|
| int count = static_cast<int>(sig_->return_count());
|
| TFNode** buffer = nullptr;
|
|
|