Chromium Code Reviews| Index: src/compiler/machine-operator-reducer.cc |
| diff --git a/src/compiler/machine-operator-reducer.cc b/src/compiler/machine-operator-reducer.cc |
| index 0ad20f068441b2ec4b059cc4c29a55a868a68dd7..8ee4224b13fb048f03cceabe4c62ee69ba094cdc 100644 |
| --- a/src/compiler/machine-operator-reducer.cc |
| +++ b/src/compiler/machine-operator-reducer.cc |
| @@ -50,12 +50,12 @@ Node* MachineOperatorReducer::Float64Mul(Node* lhs, Node* rhs) { |
| Node* MachineOperatorReducer::Float64PowHalf(Node* value) { |
| value = |
| graph()->NewNode(machine()->Float64Add(), Float64Constant(0.0), value); |
| - return graph()->NewNode( |
| - common()->Select(MachineRepresentation::kFloat64, BranchHint::kFalse), |
| - graph()->NewNode(machine()->Float64LessThanOrEqual(), value, |
| - Float64Constant(-V8_INFINITY)), |
| - Float64Constant(V8_INFINITY), |
| - graph()->NewNode(machine()->Float64Sqrt(), value)); |
| + Diamond d(graph(), common(), |
|
ahaas
2016/11/28 08:34:43
Why do you do this change in this CL?
titzer
2016/11/28 09:30:22
Because otherwise, with selects in the graph, we n
|
| + graph()->NewNode(machine()->Float64LessThanOrEqual(), value, |
| + Float64Constant(-V8_INFINITY)), |
| + BranchHint::kFalse); |
| + return d.Phi(MachineRepresentation::kFloat64, Float64Constant(V8_INFINITY), |
| + graph()->NewNode(machine()->Float64Sqrt(), value)); |
| } |
| Node* MachineOperatorReducer::Word32And(Node* lhs, Node* rhs) { |
| @@ -841,14 +841,13 @@ Reduction MachineOperatorReducer::ReduceInt32Mod(Node* node) { |
| if (base::bits::IsPowerOfTwo32(divisor)) { |
| uint32_t const mask = divisor - 1; |
| Node* const zero = Int32Constant(0); |
| - node->ReplaceInput( |
| - 0, graph()->NewNode(machine()->Int32LessThan(), dividend, zero)); |
| - node->ReplaceInput( |
| - 1, Int32Sub(zero, Word32And(Int32Sub(zero, dividend), mask))); |
| - node->ReplaceInput(2, Word32And(dividend, mask)); |
| - NodeProperties::ChangeOp( |
| - node, |
| - common()->Select(MachineRepresentation::kWord32, BranchHint::kFalse)); |
| + Diamond d(graph(), common(), |
| + graph()->NewNode(machine()->Int32LessThan(), dividend, zero), |
| + BranchHint::kFalse); |
| + return Replace( |
| + d.Phi(MachineRepresentation::kWord32, |
| + Int32Sub(zero, Word32And(Int32Sub(zero, dividend), mask)), |
| + Word32And(dividend, mask))); |
| } else { |
| Node* quotient = Int32Div(dividend, divisor); |
| DCHECK_EQ(dividend, node->InputAt(0)); |