| Index: runtime/vm/flow_graph_optimizer.cc
|
| diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc
|
| index 0525341a1bce4fe00895c3c992b9ac47ebfd6242..7da716a5b4a5a06e763198caac05a57fc9f3b46c 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::kFloat32x4FromUint32x4Bits) {
|
| + Uint32x4ToFloat32x4Instr* cast =
|
| + new Uint32x4ToFloat32x4Instr(new Value(call->ArgumentAt(1)),
|
| + 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::kUint32x4FromFloat32x4Bits) {
|
| + 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:
|
|
|