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

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: 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 1594 matching lines...) Expand 10 before | Expand all | Expand 10 after
1605 break; 1605 break;
1606 case kMips64Lb: 1606 case kMips64Lb:
1607 __ lb(i.OutputRegister(), i.MemoryOperand()); 1607 __ lb(i.OutputRegister(), i.MemoryOperand());
1608 break; 1608 break;
1609 case kMips64Sb: 1609 case kMips64Sb:
1610 __ sb(i.InputRegister(2), i.MemoryOperand()); 1610 __ sb(i.InputRegister(2), i.MemoryOperand());
1611 break; 1611 break;
1612 case kMips64Lhu: 1612 case kMips64Lhu:
1613 __ lhu(i.OutputRegister(), i.MemoryOperand()); 1613 __ lhu(i.OutputRegister(), i.MemoryOperand());
1614 break; 1614 break;
1615 case kMips64Ulhu:
1616 __ Ulhu(i.OutputRegister(), i.MemoryOperand());
1617 break;
1615 case kMips64Lh: 1618 case kMips64Lh:
1616 __ lh(i.OutputRegister(), i.MemoryOperand()); 1619 __ lh(i.OutputRegister(), i.MemoryOperand());
1617 break; 1620 break;
1621 case kMips64Ulh:
1622 __ Ulh(i.OutputRegister(), i.MemoryOperand());
1623 break;
1618 case kMips64Sh: 1624 case kMips64Sh:
1619 __ sh(i.InputRegister(2), i.MemoryOperand()); 1625 __ sh(i.InputRegister(2), i.MemoryOperand());
1620 break; 1626 break;
1627 case kMips64Ush:
1628 __ Ush(i.InputRegister(2), i.MemoryOperand(), kScratchReg);
1629 break;
1621 case kMips64Lw: 1630 case kMips64Lw:
1622 __ lw(i.OutputRegister(), i.MemoryOperand()); 1631 __ lw(i.OutputRegister(), i.MemoryOperand());
1623 break; 1632 break;
1633 case kMips64Ulw:
1634 __ Ulw(i.OutputRegister(), i.MemoryOperand());
1635 break;
1624 case kMips64Lwu: 1636 case kMips64Lwu:
1625 __ lwu(i.OutputRegister(), i.MemoryOperand()); 1637 __ lwu(i.OutputRegister(), i.MemoryOperand());
1626 break; 1638 break;
1639 case kMips64Ulwu:
1640 __ Ulwu(i.OutputRegister(), i.MemoryOperand());
1641 break;
1627 case kMips64Ld: 1642 case kMips64Ld:
1628 __ ld(i.OutputRegister(), i.MemoryOperand()); 1643 __ ld(i.OutputRegister(), i.MemoryOperand());
1629 break; 1644 break;
1645 case kMips64Uld:
1646 __ Uld(i.OutputRegister(), i.MemoryOperand());
1647 break;
1630 case kMips64Sw: 1648 case kMips64Sw:
1631 __ sw(i.InputRegister(2), i.MemoryOperand()); 1649 __ sw(i.InputRegister(2), i.MemoryOperand());
1632 break; 1650 break;
1651 case kMips64Usw:
1652 __ Usw(i.InputRegister(2), i.MemoryOperand());
1653 break;
1633 case kMips64Sd: 1654 case kMips64Sd:
1634 __ sd(i.InputRegister(2), i.MemoryOperand()); 1655 __ sd(i.InputRegister(2), i.MemoryOperand());
1635 break; 1656 break;
1657 case kMips64Usd:
1658 __ Usd(i.InputRegister(2), i.MemoryOperand());
1659 break;
1636 case kMips64Lwc1: { 1660 case kMips64Lwc1: {
1637 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand()); 1661 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand());
1638 break; 1662 break;
1639 } 1663 }
1664 case kMips64Ulwc1: {
1665 __ Ulwc1(i.OutputSingleRegister(), i.MemoryOperand(), kScratchReg);
1666 break;
1667 }
1640 case kMips64Swc1: { 1668 case kMips64Swc1: {
1641 size_t index = 0; 1669 size_t index = 0;
1642 MemOperand operand = i.MemoryOperand(&index); 1670 MemOperand operand = i.MemoryOperand(&index);
1643 __ swc1(i.InputSingleRegister(index), operand); 1671 __ swc1(i.InputSingleRegister(index), operand);
1644 break; 1672 break;
1645 } 1673 }
1674 case kMips64Uswc1: {
1675 size_t index = 0;
1676 MemOperand operand = i.MemoryOperand(&index);
1677 __ Uswc1(i.InputSingleRegister(index), operand, kScratchReg);
1678 break;
1679 }
1646 case kMips64Ldc1: 1680 case kMips64Ldc1:
1647 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand()); 1681 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand());
1648 break; 1682 break;
1683 case kMips64Uldc1:
1684 __ Uldc1(i.OutputDoubleRegister(), i.MemoryOperand(), kScratchReg);
1685 break;
1649 case kMips64Sdc1: 1686 case kMips64Sdc1:
1650 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand()); 1687 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand());
1651 break; 1688 break;
1689 case kMips64Usdc1:
1690 __ Usdc1(i.InputDoubleRegister(2), i.MemoryOperand(), kScratchReg);
1691 break;
1652 case kMips64Push: 1692 case kMips64Push:
1653 if (instr->InputAt(0)->IsFPRegister()) { 1693 if (instr->InputAt(0)->IsFPRegister()) {
1654 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize)); 1694 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize));
1655 __ Subu(sp, sp, Operand(kDoubleSize)); 1695 __ Subu(sp, sp, Operand(kDoubleSize));
1656 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); 1696 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
1657 } else { 1697 } else {
1658 __ Push(i.InputRegister(0)); 1698 __ Push(i.InputRegister(0));
1659 frame_access_state()->IncreaseSPDelta(1); 1699 frame_access_state()->IncreaseSPDelta(1);
1660 } 1700 }
1661 break; 1701 break;
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
2372 padding_size -= v8::internal::Assembler::kInstrSize; 2412 padding_size -= v8::internal::Assembler::kInstrSize;
2373 } 2413 }
2374 } 2414 }
2375 } 2415 }
2376 2416
2377 #undef __ 2417 #undef __
2378 2418
2379 } // namespace compiler 2419 } // namespace compiler
2380 } // namespace internal 2420 } // namespace internal
2381 } // namespace v8 2421 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698