Chromium Code Reviews| Index: runtime/vm/flow_graph_compiler_arm.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_compiler_arm.cc (revision 42037) |
| +++ runtime/vm/flow_graph_compiler_arm.cc (working copy) |
| @@ -1690,11 +1690,19 @@ |
| Exchange(source.base_reg(), source.ToStackSlotOffset(), |
| destination.base_reg(), destination.ToStackSlotOffset()); |
| } else if (source.IsFpuRegister() && destination.IsFpuRegister()) { |
| - const DRegister dst = EvenDRegisterOf(destination.fpu_reg()); |
| - DRegister src = EvenDRegisterOf(source.fpu_reg()); |
| - __ vmovd(DTMP, src); |
| - __ vmovd(src, dst); |
| - __ vmovd(dst, DTMP); |
| + if (TargetCPUFeatures::neon_supported()) { |
| + QRegister dst = destination.fpu_reg(); |
|
zerny-google
2014/12/01 15:23:02
Nit: should we keep const here and below?
Florian Schneider
2014/12/01 15:24:40
Done.
|
| + QRegister src = source.fpu_reg(); |
| + __ vmovq(QTMP, src); |
| + __ vmovq(src, dst); |
| + __ vmovq(dst, QTMP); |
| + } else { |
| + DRegister dst = EvenDRegisterOf(destination.fpu_reg()); |
| + DRegister src = EvenDRegisterOf(source.fpu_reg()); |
| + __ vmovd(DTMP, src); |
| + __ vmovd(src, dst); |
| + __ vmovd(dst, DTMP); |
| + } |
| } else if (source.IsFpuRegister() || destination.IsFpuRegister()) { |
| ASSERT(destination.IsDoubleStackSlot() || |
| destination.IsQuadStackSlot() || |