| Index: src/wasm/ast-decoder.cc
|
| diff --git a/src/wasm/ast-decoder.cc b/src/wasm/ast-decoder.cc
|
| index 796bd9f7443412a47f0f4be1378302d00833e563..a16af97a31b75fa93f06ad35c1ed92e2e3efa2ed 100644
|
| --- a/src/wasm/ast-decoder.cc
|
| +++ b/src/wasm/ast-decoder.cc
|
| @@ -1331,16 +1331,33 @@ class WasmFullDecoder : public WasmDecoder {
|
| unsigned ExtractLane(WasmOpcode opcode, LocalType type) {
|
| LaneOperand operand(this, pc_);
|
| if (Validate(pc_, operand)) {
|
| - TFNode* input = Pop(0, LocalType::kSimd128).node;
|
| - TFNode* node = BUILD(SimdExtractLane, opcode, operand.lane, input);
|
| + compiler::NodeVector inputs(1, zone_);
|
| + inputs[0] = Pop(0, LocalType::kSimd128).node;
|
| + TFNode* node = BUILD(SimdLaneOp, opcode, operand.lane, inputs);
|
| Push(type, node);
|
| }
|
| return operand.length;
|
| }
|
|
|
| + unsigned ReplaceLane(WasmOpcode opcode, LocalType type) {
|
| + LaneOperand operand(this, pc_);
|
| + if (Validate(pc_, operand)) {
|
| + compiler::NodeVector inputs(2, zone_);
|
| + inputs[1] = Pop(1, type).node;
|
| + inputs[0] = Pop(0, LocalType::kSimd128).node;
|
| + TFNode* node = BUILD(SimdLaneOp, opcode, operand.lane, inputs);
|
| + Push(LocalType::kSimd128, node);
|
| + }
|
| + return operand.length;
|
| + }
|
| +
|
| unsigned DecodeSimdOpcode(WasmOpcode opcode) {
|
| unsigned len = 0;
|
| switch (opcode) {
|
| + case kExprI32x4ReplaceLane: {
|
| + len = ReplaceLane(opcode, LocalType::kWord32);
|
| + break;
|
| + }
|
| case kExprI32x4ExtractLane: {
|
| len = ExtractLane(opcode, LocalType::kWord32);
|
| break;
|
|
|