Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Side by Side Diff: dart/runtime/vm/flow_graph_compiler_arm64.cc

Issue 828433005: Version 1.8.4 (Closed) Base URL: http://dart.googlecode.com/svn/branches/1.8/
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « dart/runtime/vm/flow_graph_compiler_arm.cc ('k') | dart/tools/VERSION » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64.
6 #if defined(TARGET_ARCH_ARM64) 6 #if defined(TARGET_ARCH_ARM64)
7 7
8 #include "vm/flow_graph_compiler.h" 8 #include "vm/flow_graph_compiler.h"
9 9
10 #include "vm/ast_printer.h" 10 #include "vm/ast_printer.h"
(...skipping 1652 matching lines...) Expand 10 before | Expand all | Expand 10 after
1663 destination.base_reg(), destination.ToStackSlotOffset()); 1663 destination.base_reg(), destination.ToStackSlotOffset());
1664 } else if (source.IsStackSlot() && destination.IsRegister()) { 1664 } else if (source.IsStackSlot() && destination.IsRegister()) {
1665 Exchange(destination.reg(), 1665 Exchange(destination.reg(),
1666 source.base_reg(), source.ToStackSlotOffset()); 1666 source.base_reg(), source.ToStackSlotOffset());
1667 } else if (source.IsStackSlot() && destination.IsStackSlot()) { 1667 } else if (source.IsStackSlot() && destination.IsStackSlot()) {
1668 Exchange(source.base_reg(), source.ToStackSlotOffset(), 1668 Exchange(source.base_reg(), source.ToStackSlotOffset(),
1669 destination.base_reg(), destination.ToStackSlotOffset()); 1669 destination.base_reg(), destination.ToStackSlotOffset());
1670 } else if (source.IsFpuRegister() && destination.IsFpuRegister()) { 1670 } else if (source.IsFpuRegister() && destination.IsFpuRegister()) {
1671 const VRegister dst = destination.fpu_reg(); 1671 const VRegister dst = destination.fpu_reg();
1672 const VRegister src = source.fpu_reg(); 1672 const VRegister src = source.fpu_reg();
1673 __ fmovdd(VTMP, src); 1673 __ vmov(VTMP, src);
1674 __ fmovdd(src, dst); 1674 __ vmov(src, dst);
1675 __ fmovdd(dst, VTMP); 1675 __ vmov(dst, VTMP);
1676 } else if (source.IsFpuRegister() || destination.IsFpuRegister()) { 1676 } else if (source.IsFpuRegister() || destination.IsFpuRegister()) {
1677 ASSERT(destination.IsDoubleStackSlot() || 1677 ASSERT(destination.IsDoubleStackSlot() ||
1678 destination.IsQuadStackSlot() || 1678 destination.IsQuadStackSlot() ||
1679 source.IsDoubleStackSlot() || 1679 source.IsDoubleStackSlot() ||
1680 source.IsQuadStackSlot()); 1680 source.IsQuadStackSlot());
1681 bool double_width = destination.IsDoubleStackSlot() || 1681 bool double_width = destination.IsDoubleStackSlot() ||
1682 source.IsDoubleStackSlot(); 1682 source.IsDoubleStackSlot();
1683 VRegister reg = source.IsFpuRegister() ? source.fpu_reg() 1683 VRegister reg = source.IsFpuRegister() ? source.fpu_reg()
1684 : destination.fpu_reg(); 1684 : destination.fpu_reg();
1685 Register base_reg = source.IsFpuRegister() 1685 Register base_reg = source.IsFpuRegister()
1686 ? destination.base_reg() 1686 ? destination.base_reg()
1687 : source.base_reg(); 1687 : source.base_reg();
1688 const intptr_t slot_offset = source.IsFpuRegister() 1688 const intptr_t slot_offset = source.IsFpuRegister()
1689 ? destination.ToStackSlotOffset() 1689 ? destination.ToStackSlotOffset()
1690 : source.ToStackSlotOffset(); 1690 : source.ToStackSlotOffset();
1691 1691
1692 if (double_width) { 1692 if (double_width) {
1693 __ LoadDFromOffset(VTMP, base_reg, slot_offset, PP); 1693 __ LoadDFromOffset(VTMP, base_reg, slot_offset, PP);
1694 __ StoreDToOffset(reg, base_reg, slot_offset, PP); 1694 __ StoreDToOffset(reg, base_reg, slot_offset, PP);
1695 __ fmovdd(reg, VTMP); 1695 __ fmovdd(reg, VTMP);
1696 } else { 1696 } else {
1697 __ LoadQFromOffset(VTMP, base_reg, slot_offset, PP); 1697 __ LoadQFromOffset(VTMP, base_reg, slot_offset, PP);
1698 __ StoreQToOffset(reg, base_reg, slot_offset, PP); 1698 __ StoreQToOffset(reg, base_reg, slot_offset, PP);
1699 __ fmovdd(reg, VTMP); 1699 __ vmov(reg, VTMP);
1700 } 1700 }
1701 } else if (source.IsDoubleStackSlot() && destination.IsDoubleStackSlot()) { 1701 } else if (source.IsDoubleStackSlot() && destination.IsDoubleStackSlot()) {
1702 const intptr_t source_offset = source.ToStackSlotOffset(); 1702 const intptr_t source_offset = source.ToStackSlotOffset();
1703 const intptr_t dest_offset = destination.ToStackSlotOffset(); 1703 const intptr_t dest_offset = destination.ToStackSlotOffset();
1704 1704
1705 ScratchFpuRegisterScope ensure_scratch(this, kNoFpuRegister); 1705 ScratchFpuRegisterScope ensure_scratch(this, kNoFpuRegister);
1706 VRegister scratch = ensure_scratch.reg(); 1706 VRegister scratch = ensure_scratch.reg();
1707 __ LoadDFromOffset(VTMP, source.base_reg(), source_offset, PP); 1707 __ LoadDFromOffset(VTMP, source.base_reg(), source_offset, PP);
1708 __ LoadDFromOffset(scratch, destination.base_reg(), dest_offset, PP); 1708 __ LoadDFromOffset(scratch, destination.base_reg(), dest_offset, PP);
1709 __ StoreDToOffset(VTMP, destination.base_reg(), dest_offset, PP); 1709 __ StoreDToOffset(VTMP, destination.base_reg(), dest_offset, PP);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1806 void ParallelMoveResolver::RestoreFpuScratch(FpuRegister reg) { 1806 void ParallelMoveResolver::RestoreFpuScratch(FpuRegister reg) {
1807 __ PopDouble(reg); 1807 __ PopDouble(reg);
1808 } 1808 }
1809 1809
1810 1810
1811 #undef __ 1811 #undef __
1812 1812
1813 } // namespace dart 1813 } // namespace dart
1814 1814
1815 #endif // defined TARGET_ARCH_ARM64 1815 #endif // defined TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « dart/runtime/vm/flow_graph_compiler_arm.cc ('k') | dart/tools/VERSION » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698