Index: src/compiler/wasm-compiler.cc |
diff --git a/src/compiler/wasm-compiler.cc b/src/compiler/wasm-compiler.cc |
index 92f389261bdd822118fd1df271a2932dd1011ab7..ce89369bccea207e00e26ce5da4ecee7e14842b5 100644 |
--- a/src/compiler/wasm-compiler.cc |
+++ b/src/compiler/wasm-compiler.cc |
@@ -3384,6 +3384,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]); |
@@ -3402,27 +3408,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: |
@@ -3455,17 +3464,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]); |
@@ -3473,19 +3482,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: |
@@ -3518,17 +3525,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]); |
@@ -3542,19 +3549,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: |
@@ -3587,17 +3592,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]); |
@@ -3611,19 +3616,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: |
Mircea Trofin
2017/03/07 22:09:30
Do you think we could do some preprocessor magic w
bbudge
2017/03/07 23:35:20
Yes, very likely, though it would require a "Great
|
- 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]); |