| Index: src/compiler/wasm-compiler.cc
|
| diff --git a/src/compiler/wasm-compiler.cc b/src/compiler/wasm-compiler.cc
|
| index 7cafb16dd2712a6a019278ee1fac7a40e6c5500e..5660b71c173ef9d54272956c681f99b51ea0d9c0 100644
|
| --- a/src/compiler/wasm-compiler.cc
|
| +++ b/src/compiler/wasm-compiler.cc
|
| @@ -3379,6 +3379,12 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4Neg(), inputs[0]);
|
| case wasm::kExprF32x4Sqrt:
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4Sqrt(), inputs[0]);
|
| + case wasm::kExprF32x4RecipApprox:
|
| + return graph()->NewNode(jsgraph()->machine()->Float32x4RecipApprox(),
|
| + inputs[0]);
|
| + case wasm::kExprF32x4RecipSqrtApprox:
|
| + return graph()->NewNode(jsgraph()->machine()->Float32x4RecipSqrtApprox(),
|
| + inputs[0]);
|
| case wasm::kExprF32x4Add:
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4Add(), inputs[0],
|
| inputs[1]);
|
| @@ -3397,27 +3403,30 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| case wasm::kExprF32x4Max:
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4Max(), inputs[0],
|
| inputs[1]);
|
| + case wasm::kExprF32x4RecipRefine:
|
| + return graph()->NewNode(jsgraph()->machine()->Float32x4RecipRefine(),
|
| + inputs[0], inputs[1]);
|
| + case wasm::kExprF32x4RecipSqrtRefine:
|
| + return graph()->NewNode(jsgraph()->machine()->Float32x4RecipSqrtRefine(),
|
| + inputs[0], inputs[1]);
|
| case wasm::kExprF32x4Eq:
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4Equal(), inputs[0],
|
| inputs[1]);
|
| case wasm::kExprF32x4Ne:
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4NotEqual(),
|
| inputs[0], inputs[1]);
|
| - // TODO(aseemgarg): Get rid of GreaterThan and GreaterThanEquals machine ops
|
| - // for all SIMD types.
|
| - case wasm::kExprF32x4Gt:
|
| - return graph()->NewNode(jsgraph()->machine()->Float32x4GreaterThan(),
|
| - inputs[0], inputs[1]);
|
| - case wasm::kExprF32x4Ge:
|
| - return graph()->NewNode(
|
| - jsgraph()->machine()->Float32x4GreaterThanOrEqual(), inputs[0],
|
| - inputs[1]);
|
| case wasm::kExprF32x4Lt:
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4LessThan(),
|
| inputs[0], inputs[1]);
|
| case wasm::kExprF32x4Le:
|
| return graph()->NewNode(jsgraph()->machine()->Float32x4LessThanOrEqual(),
|
| inputs[0], inputs[1]);
|
| + case wasm::kExprF32x4Gt:
|
| + return graph()->NewNode(jsgraph()->machine()->Float32x4LessThan(),
|
| + inputs[1], inputs[0]);
|
| + case wasm::kExprF32x4Ge:
|
| + return graph()->NewNode(jsgraph()->machine()->Float32x4LessThanOrEqual(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI32x4Splat:
|
| return graph()->NewNode(jsgraph()->machine()->Int32x4Splat(), inputs[0]);
|
| case wasm::kExprI32x4SConvertF32x4:
|
| @@ -3450,17 +3459,17 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| return graph()->NewNode(jsgraph()->machine()->Int32x4NotEqual(),
|
| inputs[0], inputs[1]);
|
| case wasm::kExprI32x4LtS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThan(),
|
| - inputs[1], inputs[0]);
|
| + return graph()->NewNode(jsgraph()->machine()->Int32x4LessThan(),
|
| + inputs[0], inputs[1]);
|
| case wasm::kExprI32x4LeS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThanOrEqual(),
|
| - inputs[1], inputs[0]);
|
| - case wasm::kExprI32x4GtS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThan(),
|
| + return graph()->NewNode(jsgraph()->machine()->Int32x4LessThanOrEqual(),
|
| inputs[0], inputs[1]);
|
| + case wasm::kExprI32x4GtS:
|
| + return graph()->NewNode(jsgraph()->machine()->Int32x4LessThan(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI32x4GeS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThanOrEqual(),
|
| - inputs[0], inputs[1]);
|
| + return graph()->NewNode(jsgraph()->machine()->Int32x4LessThanOrEqual(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI32x4MinU:
|
| return graph()->NewNode(jsgraph()->machine()->Uint32x4Min(), inputs[0],
|
| inputs[1]);
|
| @@ -3468,19 +3477,17 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| return graph()->NewNode(jsgraph()->machine()->Uint32x4Max(), inputs[0],
|
| inputs[1]);
|
| case wasm::kExprI32x4LtU:
|
| - return graph()->NewNode(jsgraph()->machine()->Uint32x4GreaterThan(),
|
| - inputs[1], inputs[0]);
|
| + return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThan(),
|
| + inputs[0], inputs[1]);
|
| case wasm::kExprI32x4LeU:
|
| - return graph()->NewNode(
|
| - jsgraph()->machine()->Uint32x4GreaterThanOrEqual(), inputs[1],
|
| - inputs[0]);
|
| - case wasm::kExprI32x4GtU:
|
| - return graph()->NewNode(jsgraph()->machine()->Uint32x4GreaterThan(),
|
| + return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThanOrEqual(),
|
| inputs[0], inputs[1]);
|
| + case wasm::kExprI32x4GtU:
|
| + return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThan(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI32x4GeU:
|
| - return graph()->NewNode(
|
| - jsgraph()->machine()->Uint32x4GreaterThanOrEqual(), inputs[0],
|
| - inputs[1]);
|
| + return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThanOrEqual(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI16x8Splat:
|
| return graph()->NewNode(jsgraph()->machine()->Int16x8Splat(), inputs[0]);
|
| case wasm::kExprI16x8Neg:
|
| @@ -3513,17 +3520,17 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| return graph()->NewNode(jsgraph()->machine()->Int16x8NotEqual(),
|
| inputs[0], inputs[1]);
|
| case wasm::kExprI16x8LtS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThan(),
|
| - inputs[1], inputs[0]);
|
| + return graph()->NewNode(jsgraph()->machine()->Int16x8LessThan(),
|
| + inputs[0], inputs[1]);
|
| case wasm::kExprI16x8LeS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThanOrEqual(),
|
| - inputs[1], inputs[0]);
|
| - case wasm::kExprI16x8GtS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThan(),
|
| + return graph()->NewNode(jsgraph()->machine()->Int16x8LessThanOrEqual(),
|
| inputs[0], inputs[1]);
|
| + case wasm::kExprI16x8GtS:
|
| + return graph()->NewNode(jsgraph()->machine()->Int16x8LessThan(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI16x8GeS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThanOrEqual(),
|
| - inputs[0], inputs[1]);
|
| + return graph()->NewNode(jsgraph()->machine()->Int16x8LessThanOrEqual(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI16x8AddSaturateU:
|
| return graph()->NewNode(jsgraph()->machine()->Uint16x8AddSaturate(),
|
| inputs[0], inputs[1]);
|
| @@ -3537,19 +3544,17 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| return graph()->NewNode(jsgraph()->machine()->Uint16x8Max(), inputs[0],
|
| inputs[1]);
|
| case wasm::kExprI16x8LtU:
|
| - return graph()->NewNode(jsgraph()->machine()->Uint16x8GreaterThan(),
|
| - inputs[1], inputs[0]);
|
| + return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThan(),
|
| + inputs[0], inputs[1]);
|
| case wasm::kExprI16x8LeU:
|
| - return graph()->NewNode(
|
| - jsgraph()->machine()->Uint16x8GreaterThanOrEqual(), inputs[1],
|
| - inputs[0]);
|
| - case wasm::kExprI16x8GtU:
|
| - return graph()->NewNode(jsgraph()->machine()->Uint16x8GreaterThan(),
|
| + return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThanOrEqual(),
|
| inputs[0], inputs[1]);
|
| + case wasm::kExprI16x8GtU:
|
| + return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThan(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI16x8GeU:
|
| - return graph()->NewNode(
|
| - jsgraph()->machine()->Uint16x8GreaterThanOrEqual(), inputs[0],
|
| - inputs[1]);
|
| + return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThanOrEqual(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI8x16Splat:
|
| return graph()->NewNode(jsgraph()->machine()->Int8x16Splat(), inputs[0]);
|
| case wasm::kExprI8x16Neg:
|
| @@ -3582,17 +3587,17 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| return graph()->NewNode(jsgraph()->machine()->Int8x16NotEqual(),
|
| inputs[0], inputs[1]);
|
| case wasm::kExprI8x16LtS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThan(),
|
| - inputs[1], inputs[0]);
|
| + return graph()->NewNode(jsgraph()->machine()->Int8x16LessThan(),
|
| + inputs[0], inputs[1]);
|
| case wasm::kExprI8x16LeS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThanOrEqual(),
|
| - inputs[1], inputs[0]);
|
| - case wasm::kExprI8x16GtS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThan(),
|
| + return graph()->NewNode(jsgraph()->machine()->Int8x16LessThanOrEqual(),
|
| inputs[0], inputs[1]);
|
| + case wasm::kExprI8x16GtS:
|
| + return graph()->NewNode(jsgraph()->machine()->Int8x16LessThan(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI8x16GeS:
|
| - return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThanOrEqual(),
|
| - inputs[0], inputs[1]);
|
| + return graph()->NewNode(jsgraph()->machine()->Int8x16LessThanOrEqual(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI8x16AddSaturateU:
|
| return graph()->NewNode(jsgraph()->machine()->Uint8x16AddSaturate(),
|
| inputs[0], inputs[1]);
|
| @@ -3606,19 +3611,17 @@ Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode,
|
| return graph()->NewNode(jsgraph()->machine()->Uint8x16Max(), inputs[0],
|
| inputs[1]);
|
| case wasm::kExprI8x16LtU:
|
| - return graph()->NewNode(jsgraph()->machine()->Uint8x16GreaterThan(),
|
| - inputs[1], inputs[0]);
|
| + return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThan(),
|
| + inputs[0], inputs[1]);
|
| case wasm::kExprI8x16LeU:
|
| - return graph()->NewNode(
|
| - jsgraph()->machine()->Uint8x16GreaterThanOrEqual(), inputs[1],
|
| - inputs[0]);
|
| - case wasm::kExprI8x16GtU:
|
| - return graph()->NewNode(jsgraph()->machine()->Uint8x16GreaterThan(),
|
| + return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThanOrEqual(),
|
| inputs[0], inputs[1]);
|
| + case wasm::kExprI8x16GtU:
|
| + return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThan(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprI8x16GeU:
|
| - return graph()->NewNode(
|
| - jsgraph()->machine()->Uint8x16GreaterThanOrEqual(), inputs[0],
|
| - inputs[1]);
|
| + return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThanOrEqual(),
|
| + inputs[1], inputs[0]);
|
| case wasm::kExprS128And:
|
| return graph()->NewNode(jsgraph()->machine()->Simd128And(), inputs[0],
|
| inputs[1]);
|
|
|