Chromium Code Reviews| Index: runtime/vm/flow_graph_optimizer.cc |
| diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc |
| index 35dc377d8caf71108332c906bcde1700fb414ac7..e89066358b8aba13775067aec8750da2a1634021 100644 |
| --- a/runtime/vm/flow_graph_optimizer.cc |
| +++ b/runtime/vm/flow_graph_optimizer.cc |
| @@ -2107,6 +2107,24 @@ void FlowGraphOptimizer::VisitStaticCall(StaticCallInstr* call) { |
| MathSqrtInstr* sqrt = |
| new MathSqrtInstr(new Value(call->ArgumentAt(0)), call); |
| ReplaceCall(call, sqrt); |
| + } else if (recognized_kind == MethodRecognizer::kFloat32x4Zero) { |
| + Float32x4ZeroInstr* zero = |
| + new Float32x4ZeroInstr(recognized_kind, call); |
| + ReplaceCall(call, zero); |
| + } else if (recognized_kind == MethodRecognizer::kFloat32x4Splat) { |
| + Float32x4SplatInstr* splat = |
| + new Float32x4SplatInstr(recognized_kind, new Value(call->ArgumentAt(1)), |
| + call); |
| + ReplaceCall(call, splat); |
| + } else if (recognized_kind == MethodRecognizer::kFloat32x4Constructor) { |
| + Float32x4ConstructorInstr* con = |
| + new Float32x4ConstructorInstr(recognized_kind, |
| + new Value(call->ArgumentAt(1)), |
| + new Value(call->ArgumentAt(2)), |
| + new Value(call->ArgumentAt(3)), |
| + new Value(call->ArgumentAt(4)), |
| + call); |
| + ReplaceCall(call, con); |
| } |
| } |
| @@ -4729,11 +4747,26 @@ void ConstantPropagator::VisitBinaryFloat32x4Op( |
| } |
| +void ConstantPropagator::VisitFloat32x4Constructor( |
| + Float32x4ConstructorInstr* instr) { |
| + SetValue(instr, non_constant_); |
| +} |
| + |
| + |
| void ConstantPropagator::VisitFloat32x4Shuffle(Float32x4ShuffleInstr* instr) { |
| SetValue(instr, non_constant_); |
| } |
| +void ConstantPropagator::VisitFloat32x4Zero(Float32x4ZeroInstr* instr) { |
|
srdjan
2013/04/25 20:19:25
Add SetValue(...)
Cutch
2013/04/25 20:52:07
Done.
|
| +} |
| + |
| + |
| +void ConstantPropagator::VisitFloat32x4Splat(Float32x4SplatInstr* instr) { |
| + SetValue(instr, non_constant_); |
| +} |
| + |
| + |
| void ConstantPropagator::VisitMathSqrt(MathSqrtInstr* instr) { |
| const Object& value = instr->value()->definition()->constant_value(); |
| if (IsNonConstant(value)) { |