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

Side by Side Diff: src/compiler/mips64/code-generator-mips64.cc

Issue 2122853002: Implement UnaligedLoad and UnaligedStore turbofan operators. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Nits. Fixes some errors Created 4 years, 5 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/ast/scopes.h" 5 #include "src/ast/scopes.h"
6 #include "src/compiler/code-generator.h" 6 #include "src/compiler/code-generator.h"
7 #include "src/compiler/code-generator-impl.h" 7 #include "src/compiler/code-generator-impl.h"
8 #include "src/compiler/gap-resolver.h" 8 #include "src/compiler/gap-resolver.h"
9 #include "src/compiler/node-matchers.h" 9 #include "src/compiler/node-matchers.h"
10 #include "src/compiler/osr.h" 10 #include "src/compiler/osr.h"
(...skipping 1617 matching lines...) Expand 10 before | Expand all | Expand 10 after
1628 break; 1628 break;
1629 case kMips64Lb: 1629 case kMips64Lb:
1630 __ lb(i.OutputRegister(), i.MemoryOperand()); 1630 __ lb(i.OutputRegister(), i.MemoryOperand());
1631 break; 1631 break;
1632 case kMips64Sb: 1632 case kMips64Sb:
1633 __ sb(i.InputRegister(2), i.MemoryOperand()); 1633 __ sb(i.InputRegister(2), i.MemoryOperand());
1634 break; 1634 break;
1635 case kMips64Lhu: 1635 case kMips64Lhu:
1636 __ lhu(i.OutputRegister(), i.MemoryOperand()); 1636 __ lhu(i.OutputRegister(), i.MemoryOperand());
1637 break; 1637 break;
1638 case kMips64Ulhu:
1639 __ Ulhu(i.OutputRegister(), i.MemoryOperand());
1640 break;
1638 case kMips64Lh: 1641 case kMips64Lh:
1639 __ lh(i.OutputRegister(), i.MemoryOperand()); 1642 __ lh(i.OutputRegister(), i.MemoryOperand());
1640 break; 1643 break;
1644 case kMips64Ulh:
1645 __ Ulh(i.OutputRegister(), i.MemoryOperand());
1646 break;
1641 case kMips64Sh: 1647 case kMips64Sh:
1642 __ sh(i.InputRegister(2), i.MemoryOperand()); 1648 __ sh(i.InputRegister(2), i.MemoryOperand());
1643 break; 1649 break;
1650 case kMips64Ush:
1651 __ Ush(i.InputRegister(2), i.MemoryOperand(), kScratchReg);
1652 break;
1644 case kMips64Lw: 1653 case kMips64Lw:
1645 __ lw(i.OutputRegister(), i.MemoryOperand()); 1654 __ lw(i.OutputRegister(), i.MemoryOperand());
1646 break; 1655 break;
1656 case kMips64Ulw:
1657 __ Ulw(i.OutputRegister(), i.MemoryOperand());
1658 break;
1647 case kMips64Lwu: 1659 case kMips64Lwu:
1648 __ lwu(i.OutputRegister(), i.MemoryOperand()); 1660 __ lwu(i.OutputRegister(), i.MemoryOperand());
1649 break; 1661 break;
1662 case kMips64Ulwu:
1663 __ Ulwu(i.OutputRegister(), i.MemoryOperand());
1664 break;
1650 case kMips64Ld: 1665 case kMips64Ld:
1651 __ ld(i.OutputRegister(), i.MemoryOperand()); 1666 __ ld(i.OutputRegister(), i.MemoryOperand());
1652 break; 1667 break;
1668 case kMips64Uld:
1669 __ Uld(i.OutputRegister(), i.MemoryOperand());
1670 break;
1653 case kMips64Sw: 1671 case kMips64Sw:
1654 __ sw(i.InputRegister(2), i.MemoryOperand()); 1672 __ sw(i.InputRegister(2), i.MemoryOperand());
1655 break; 1673 break;
1674 case kMips64Usw:
1675 __ Usw(i.InputRegister(2), i.MemoryOperand());
1676 break;
1656 case kMips64Sd: 1677 case kMips64Sd:
1657 __ sd(i.InputRegister(2), i.MemoryOperand()); 1678 __ sd(i.InputRegister(2), i.MemoryOperand());
1658 break; 1679 break;
1680 case kMips64Usd:
1681 __ Usd(i.InputRegister(2), i.MemoryOperand());
1682 break;
1659 case kMips64Lwc1: { 1683 case kMips64Lwc1: {
1660 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand()); 1684 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand());
1661 break; 1685 break;
1662 } 1686 }
1687 case kMips64Ulwc1: {
1688 __ Ulwc1(i.OutputSingleRegister(), i.MemoryOperand(), kScratchReg);
1689 break;
1690 }
1663 case kMips64Swc1: { 1691 case kMips64Swc1: {
1664 size_t index = 0; 1692 size_t index = 0;
1665 MemOperand operand = i.MemoryOperand(&index); 1693 MemOperand operand = i.MemoryOperand(&index);
1666 __ swc1(i.InputSingleRegister(index), operand); 1694 __ swc1(i.InputSingleRegister(index), operand);
1667 break; 1695 break;
1668 } 1696 }
1697 case kMips64Uswc1: {
1698 size_t index = 0;
1699 MemOperand operand = i.MemoryOperand(&index);
1700 __ Uswc1(i.InputSingleRegister(index), operand, kScratchReg);
1701 break;
1702 }
1669 case kMips64Ldc1: 1703 case kMips64Ldc1:
1670 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand()); 1704 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand());
1671 break; 1705 break;
1706 case kMips64Uldc1:
1707 __ Uldc1(i.OutputDoubleRegister(), i.MemoryOperand(), kScratchReg);
1708 break;
1672 case kMips64Sdc1: 1709 case kMips64Sdc1:
1673 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand()); 1710 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand());
1674 break; 1711 break;
1712 case kMips64Usdc1:
1713 __ Usdc1(i.InputDoubleRegister(2), i.MemoryOperand(), kScratchReg);
1714 break;
1675 case kMips64Push: 1715 case kMips64Push:
1676 if (instr->InputAt(0)->IsFPRegister()) { 1716 if (instr->InputAt(0)->IsFPRegister()) {
1677 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize)); 1717 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize));
1678 __ Subu(sp, sp, Operand(kDoubleSize)); 1718 __ Subu(sp, sp, Operand(kDoubleSize));
1679 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); 1719 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
1680 } else { 1720 } else {
1681 __ Push(i.InputRegister(0)); 1721 __ Push(i.InputRegister(0));
1682 frame_access_state()->IncreaseSPDelta(1); 1722 frame_access_state()->IncreaseSPDelta(1);
1683 } 1723 }
1684 break; 1724 break;
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
2417 padding_size -= v8::internal::Assembler::kInstrSize; 2457 padding_size -= v8::internal::Assembler::kInstrSize;
2418 } 2458 }
2419 } 2459 }
2420 } 2460 }
2421 2461
2422 #undef __ 2462 #undef __
2423 2463
2424 } // namespace compiler 2464 } // namespace compiler
2425 } // namespace internal 2465 } // namespace internal
2426 } // namespace v8 2466 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/mips/instruction-selector-mips.cc ('k') | src/compiler/mips64/instruction-codes-mips64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698