| Index: runtime/vm/intermediate_language_arm64.cc
 | 
| diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc
 | 
| index 1eabe23055f10867cae5ef623d5ba392d905b47c..3503a991b702d8f84a328d78d3ff4809f4b816ef 100644
 | 
| --- a/runtime/vm/intermediate_language_arm64.cc
 | 
| +++ b/runtime/vm/intermediate_language_arm64.cc
 | 
| @@ -3482,6 +3482,41 @@ void BinaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +LocationSummary* DoubleTestOpInstr::MakeLocationSummary(Zone* zone,
 | 
| +                                                        bool opt) const {
 | 
| +  const intptr_t kNumInputs = 1;
 | 
| +  const intptr_t kNumTemps = 0;
 | 
| +  LocationSummary* summary = new(zone) LocationSummary(
 | 
| +      zone, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  summary->set_in(0, Location::RequiresFpuRegister());
 | 
| +  summary->set_out(0, Location::RequiresRegister());
 | 
| +  return summary;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void DoubleTestOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
 | 
| +  ASSERT(compiler->is_optimizing());
 | 
| +  const VRegister value = locs()->in(0).fpu_reg();
 | 
| +  const Register result = locs()->out(0).reg();
 | 
| +  if (op_kind() == MethodRecognizer::kDouble_getIsNaN) {
 | 
| +    __ fcmpd(value, value);
 | 
| +    __ LoadObject(result, Bool::False());
 | 
| +    __ LoadObject(TMP, Bool::True());
 | 
| +    __ csel(result, TMP, result, VS);
 | 
| +  } else {
 | 
| +    ASSERT(op_kind() == MethodRecognizer::kDouble_getIsInfinite);
 | 
| +    __ vmovrd(result, value, 0);
 | 
| +    // Mask off the sign.
 | 
| +    __ AndImmediate(result, result, 0x7FFFFFFFFFFFFFFFLL);
 | 
| +    // Compare with +infinity.
 | 
| +    __ CompareImmediate(result, 0x7FF0000000000000LL);
 | 
| +    __ LoadObject(result, Bool::False());
 | 
| +    __ LoadObject(TMP, Bool::True());
 | 
| +    __ csel(result, TMP, result, EQ);
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +
 | 
|  LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(Zone* zone,
 | 
|                                                               bool opt) const {
 | 
|    const intptr_t kNumInputs = 2;
 | 
| 
 |