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 fab3254d2a0c55309b520695c0607d3dbfd22d73..77949d8b145195c611720b19494a50c5e9c04fcc 100644 |
| --- a/runtime/vm/flow_graph_optimizer.cc |
| +++ b/runtime/vm/flow_graph_optimizer.cc |
| @@ -2183,6 +2183,12 @@ bool FlowGraphOptimizer::TryInlineFloat32x4Constructor( |
| call->deopt_id()); |
| ReplaceCall(call, con); |
| return true; |
| + } else if (recognized_kind == MethodRecognizer::kFloat32x4Uint32x4Bits) { |
|
zra
2013/09/24 00:29:09
It's a little confusing that Float32x4 and Uint32x
Cutch
2013/09/24 16:00:05
I have cleaned up the MethodRecognizer name to be
|
| + Uint32x4ToFloat32x4Instr* cast = |
| + new Uint32x4ToFloat32x4Instr(new Value(call->ArgumentAt(1)), |
|
zra
2013/09/24 00:29:09
I guess you'd have to rename this to Float32x4From
|
| + call->deopt_id()); |
| + ReplaceCall(call, cast); |
| + return true; |
| } |
| return false; |
| } |
| @@ -2203,6 +2209,12 @@ bool FlowGraphOptimizer::TryInlineUint32x4Constructor( |
| call->deopt_id()); |
| ReplaceCall(call, con); |
| return true; |
| + } else if (recognized_kind == MethodRecognizer::kUint32x4Float32x4Bits) { |
|
zra
2013/09/24 00:29:09
Similar here.
|
| + Float32x4ToUint32x4Instr* cast = |
| + new Float32x4ToUint32x4Instr(new Value(call->ArgumentAt(1)), |
| + call->deopt_id()); |
| + ReplaceCall(call, cast); |
| + return true; |
| } |
| return false; |
| } |
| @@ -2373,20 +2385,6 @@ bool FlowGraphOptimizer::TryInlineFloat32x4Method( |
| ReplaceCall(call, clamp); |
| return true; |
| } |
| - case MethodRecognizer::kFloat32x4ToUint32x4: { |
| - Definition* left = call->ArgumentAt(0); |
| - // Type check left. |
| - AddCheckClass(left, |
| - ICData::ZoneHandle( |
| - call->ic_data()->AsUnaryClassChecksForArgNr(0)), |
| - call->deopt_id(), |
| - call->env(), |
| - call); |
| - Float32x4ToUint32x4Instr* cast = |
| - new Float32x4ToUint32x4Instr(new Value(left), call->deopt_id()); |
| - ReplaceCall(call, cast); |
| - return true; |
| - } |
| case MethodRecognizer::kFloat32x4Shuffle: { |
| return InlineFloat32x4Getter(call, recognized_kind); |
| } |
| @@ -2432,20 +2430,6 @@ bool FlowGraphOptimizer::TryInlineUint32x4Method( |
| ReplaceCall(call, select); |
| return true; |
| } |
| - case MethodRecognizer::kUint32x4ToUint32x4: { |
| - Definition* left = call->ArgumentAt(0); |
| - // Type check left. |
| - AddCheckClass(left, |
| - ICData::ZoneHandle( |
| - call->ic_data()->AsUnaryClassChecksForArgNr(0)), |
| - call->deopt_id(), |
| - call->env(), |
| - call); |
| - Uint32x4ToFloat32x4Instr* cast = |
| - new Uint32x4ToFloat32x4Instr(new Value(left), call->deopt_id()); |
| - ReplaceCall(call, cast); |
| - return true; |
| - } |
| case MethodRecognizer::kUint32x4WithFlagX: |
| case MethodRecognizer::kUint32x4WithFlagY: |
| case MethodRecognizer::kUint32x4WithFlagZ: |