| Index: runtime/vm/flow_graph_optimizer.cc
|
| diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc
|
| index 170f5a45864c832b40ccb0ab7f2f7aaf5c6e7652..40240483bd246e3761040fe6f3411e5e0c264a81 100644
|
| --- a/runtime/vm/flow_graph_optimizer.cc
|
| +++ b/runtime/vm/flow_graph_optimizer.cc
|
| @@ -2053,6 +2053,26 @@ bool FlowGraphOptimizer::TryInlineFloat32x4Method(
|
| ReplaceCall(call, minmax);
|
| return true;
|
| }
|
| + case MethodRecognizer::kFloat32x4WithZWInXY:
|
| + case MethodRecognizer::kFloat32x4InterleaveXY:
|
| + case MethodRecognizer::kFloat32x4InterleaveZW:
|
| + case MethodRecognizer::kFloat32x4InterleaveXYPairs:
|
| + case MethodRecognizer::kFloat32x4InterleaveZWPairs: {
|
| + Definition* left = call->ArgumentAt(0);
|
| + Definition* right = call->ArgumentAt(1);
|
| + // Type check left.
|
| + AddCheckClass(left,
|
| + ICData::ZoneHandle(
|
| + call->ic_data()->AsUnaryClassChecksForArgNr(0)),
|
| + call->deopt_id(),
|
| + call->env(),
|
| + call);
|
| + Float32x4TwoArgShuffleInstr* two_arg_shuffle =
|
| + new Float32x4TwoArgShuffleInstr(recognized_kind, new Value(left),
|
| + new Value(right), call->deopt_id());
|
| + ReplaceCall(call, two_arg_shuffle);
|
| + return true;
|
| + }
|
| case MethodRecognizer::kFloat32x4Scale: {
|
| Definition* left = call->ArgumentAt(0);
|
| Definition* right = call->ArgumentAt(1);
|
| @@ -6372,6 +6392,11 @@ void ConstantPropagator::VisitFloat32x4ToUint32x4(
|
| SetValue(instr, non_constant_);
|
| }
|
|
|
| +void ConstantPropagator::VisitFloat32x4TwoArgShuffle(
|
| + Float32x4TwoArgShuffleInstr* instr) {
|
| + SetValue(instr, non_constant_);
|
| +}
|
| +
|
|
|
| void ConstantPropagator::VisitUint32x4BoolConstructor(
|
| Uint32x4BoolConstructorInstr* instr) {
|
|
|