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

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

Issue 2776753004: [wasm] Make Opcode names consistent across architectures, implementations (Closed)
Patch Set: Fix convert order Created 3 years, 8 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
« no previous file with comments | « no previous file | src/compiler/arm/instruction-codes-arm.h » ('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 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/compiler/code-generator.h" 5 #include "src/compiler/code-generator.h"
6 6
7 #include "src/arm/macro-assembler-arm.h" 7 #include "src/arm/macro-assembler-arm.h"
8 #include "src/assembler-inl.h" 8 #include "src/assembler-inl.h"
9 #include "src/compilation-info.h" 9 #include "src/compilation-info.h"
10 #include "src/compiler/code-generator-impl.h" 10 #include "src/compiler/code-generator-impl.h"
(...skipping 1538 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 frame_access_state()->IncreaseSPDelta(1); 1549 frame_access_state()->IncreaseSPDelta(1);
1550 } 1550 }
1551 DCHECK_EQ(LeaveCC, i.OutputSBit()); 1551 DCHECK_EQ(LeaveCC, i.OutputSBit());
1552 break; 1552 break;
1553 case kArmPoke: { 1553 case kArmPoke: {
1554 int const slot = MiscField::decode(instr->opcode()); 1554 int const slot = MiscField::decode(instr->opcode());
1555 __ str(i.InputRegister(0), MemOperand(sp, slot * kPointerSize)); 1555 __ str(i.InputRegister(0), MemOperand(sp, slot * kPointerSize));
1556 DCHECK_EQ(LeaveCC, i.OutputSBit()); 1556 DCHECK_EQ(LeaveCC, i.OutputSBit());
1557 break; 1557 break;
1558 } 1558 }
1559 case kArmFloat32x4Splat: { 1559 case kArmF32x4Splat: {
1560 __ vdup(i.OutputSimd128Register(), i.InputFloatRegister(0)); 1560 __ vdup(i.OutputSimd128Register(), i.InputFloatRegister(0));
1561 break; 1561 break;
1562 } 1562 }
1563 case kArmFloat32x4ExtractLane: { 1563 case kArmF32x4ExtractLane: {
1564 __ ExtractLane(i.OutputFloatRegister(), i.InputSimd128Register(0), 1564 __ ExtractLane(i.OutputFloatRegister(), i.InputSimd128Register(0),
1565 kScratchReg, i.InputInt8(1)); 1565 kScratchReg, i.InputInt8(1));
1566 break; 1566 break;
1567 } 1567 }
1568 case kArmFloat32x4ReplaceLane: { 1568 case kArmF32x4ReplaceLane: {
1569 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0), 1569 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0),
1570 i.InputFloatRegister(2), kScratchReg, i.InputInt8(1)); 1570 i.InputFloatRegister(2), kScratchReg, i.InputInt8(1));
1571 break; 1571 break;
1572 } 1572 }
1573 case kArmFloat32x4FromInt32x4: { 1573 case kArmF32x4Abs: {
aseemgarg 2017/03/28 22:25:22 seems like you forgot to create the convert cases
gdeepti 2017/03/28 22:27:24 Fixed in the patch I uploaded right after this one
1574 __ vcvt_f32_s32(i.OutputSimd128Register(), i.InputSimd128Register(0));
1575 break;
1576 }
1577 case kArmFloat32x4FromUint32x4: {
1578 __ vcvt_f32_u32(i.OutputSimd128Register(), i.InputSimd128Register(0));
1579 break;
1580 }
1581 case kArmFloat32x4Abs: {
1582 __ vabs(i.OutputSimd128Register(), i.InputSimd128Register(0)); 1574 __ vabs(i.OutputSimd128Register(), i.InputSimd128Register(0));
1583 break; 1575 break;
1584 } 1576 }
1585 case kArmFloat32x4Neg: { 1577 case kArmF32x4Neg: {
1586 __ vneg(i.OutputSimd128Register(), i.InputSimd128Register(0)); 1578 __ vneg(i.OutputSimd128Register(), i.InputSimd128Register(0));
1587 break; 1579 break;
1588 } 1580 }
1589 case kArmFloat32x4RecipApprox: { 1581 case kArmF32x4RecipApprox: {
1590 __ vrecpe(i.OutputSimd128Register(), i.InputSimd128Register(0)); 1582 __ vrecpe(i.OutputSimd128Register(), i.InputSimd128Register(0));
1591 break; 1583 break;
1592 } 1584 }
1593 case kArmFloat32x4RecipSqrtApprox: { 1585 case kArmF32x4RecipSqrtApprox: {
1594 __ vrsqrte(i.OutputSimd128Register(), i.InputSimd128Register(0)); 1586 __ vrsqrte(i.OutputSimd128Register(), i.InputSimd128Register(0));
1595 break; 1587 break;
1596 } 1588 }
1597 case kArmFloat32x4Add: { 1589 case kArmF32x4Add: {
1598 __ vadd(i.OutputSimd128Register(), i.InputSimd128Register(0), 1590 __ vadd(i.OutputSimd128Register(), i.InputSimd128Register(0),
1599 i.InputSimd128Register(1)); 1591 i.InputSimd128Register(1));
1600 break; 1592 break;
1601 } 1593 }
1602 case kArmFloat32x4Sub: { 1594 case kArmF32x4Sub: {
1603 __ vsub(i.OutputSimd128Register(), i.InputSimd128Register(0), 1595 __ vsub(i.OutputSimd128Register(), i.InputSimd128Register(0),
1604 i.InputSimd128Register(1)); 1596 i.InputSimd128Register(1));
1605 break; 1597 break;
1606 } 1598 }
1607 case kArmFloat32x4Mul: { 1599 case kArmF32x4Mul: {
1608 __ vmul(i.OutputSimd128Register(), i.InputSimd128Register(0), 1600 __ vmul(i.OutputSimd128Register(), i.InputSimd128Register(0),
1609 i.InputSimd128Register(1)); 1601 i.InputSimd128Register(1));
1610 break; 1602 break;
1611 } 1603 }
1612 case kArmFloat32x4Min: { 1604 case kArmF32x4Min: {
1613 __ vmin(i.OutputSimd128Register(), i.InputSimd128Register(0), 1605 __ vmin(i.OutputSimd128Register(), i.InputSimd128Register(0),
1614 i.InputSimd128Register(1)); 1606 i.InputSimd128Register(1));
1615 break; 1607 break;
1616 } 1608 }
1617 case kArmFloat32x4Max: { 1609 case kArmF32x4Max: {
1618 __ vmax(i.OutputSimd128Register(), i.InputSimd128Register(0), 1610 __ vmax(i.OutputSimd128Register(), i.InputSimd128Register(0),
1619 i.InputSimd128Register(1)); 1611 i.InputSimd128Register(1));
1620 break; 1612 break;
1621 } 1613 }
1622 case kArmFloat32x4RecipRefine: { 1614 case kArmF32x4RecipRefine: {
1623 __ vrecps(i.OutputSimd128Register(), i.InputSimd128Register(0), 1615 __ vrecps(i.OutputSimd128Register(), i.InputSimd128Register(0),
1624 i.InputSimd128Register(1)); 1616 i.InputSimd128Register(1));
1625 break; 1617 break;
1626 } 1618 }
1627 case kArmFloat32x4RecipSqrtRefine: { 1619 case kArmF32x4RecipSqrtRefine: {
1628 __ vrsqrts(i.OutputSimd128Register(), i.InputSimd128Register(0), 1620 __ vrsqrts(i.OutputSimd128Register(), i.InputSimd128Register(0),
1629 i.InputSimd128Register(1)); 1621 i.InputSimd128Register(1));
1630 break; 1622 break;
1631 } 1623 }
1632 case kArmFloat32x4Equal: { 1624 case kArmF32x4Eq: {
1633 __ vceq(i.OutputSimd128Register(), i.InputSimd128Register(0), 1625 __ vceq(i.OutputSimd128Register(), i.InputSimd128Register(0),
1634 i.InputSimd128Register(1)); 1626 i.InputSimd128Register(1));
1635 break; 1627 break;
1636 } 1628 }
1637 case kArmFloat32x4NotEqual: { 1629 case kArmF32x4Ne: {
1638 Simd128Register dst = i.OutputSimd128Register(); 1630 Simd128Register dst = i.OutputSimd128Register();
1639 __ vceq(dst, i.InputSimd128Register(0), i.InputSimd128Register(1)); 1631 __ vceq(dst, i.InputSimd128Register(0), i.InputSimd128Register(1));
1640 __ vmvn(dst, dst); 1632 __ vmvn(dst, dst);
1641 break; 1633 break;
1642 } 1634 }
1643 case kArmFloat32x4LessThan: { 1635 case kArmF32x4Lt: {
1644 __ vcgt(i.OutputSimd128Register(), i.InputSimd128Register(1), 1636 __ vcgt(i.OutputSimd128Register(), i.InputSimd128Register(1),
1645 i.InputSimd128Register(0)); 1637 i.InputSimd128Register(0));
1646 break; 1638 break;
1647 } 1639 }
1648 case kArmFloat32x4LessThanOrEqual: { 1640 case kArmF32x4Le: {
1649 __ vcge(i.OutputSimd128Register(), i.InputSimd128Register(1), 1641 __ vcge(i.OutputSimd128Register(), i.InputSimd128Register(1),
1650 i.InputSimd128Register(0)); 1642 i.InputSimd128Register(0));
1651 break; 1643 break;
1652 } 1644 }
1653 case kArmInt32x4Splat: { 1645 case kArmI32x4Splat: {
1654 __ vdup(Neon32, i.OutputSimd128Register(), i.InputRegister(0)); 1646 __ vdup(Neon32, i.OutputSimd128Register(), i.InputRegister(0));
1655 break; 1647 break;
1656 } 1648 }
1657 case kArmInt32x4ExtractLane: { 1649 case kArmI32x4ExtractLane: {
1658 __ ExtractLane(i.OutputRegister(), i.InputSimd128Register(0), NeonS32, 1650 __ ExtractLane(i.OutputRegister(), i.InputSimd128Register(0), NeonS32,
1659 i.InputInt8(1)); 1651 i.InputInt8(1));
1660 break; 1652 break;
1661 } 1653 }
1662 case kArmInt32x4ReplaceLane: { 1654 case kArmI32x4ReplaceLane: {
1663 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0), 1655 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0),
1664 i.InputRegister(2), NeonS32, i.InputInt8(1)); 1656 i.InputRegister(2), NeonS32, i.InputInt8(1));
1665 break; 1657 break;
1666 } 1658 }
1667 case kArmInt32x4FromFloat32x4: { 1659 case kArmI32x4SConvertF32x4: {
1668 __ vcvt_s32_f32(i.OutputSimd128Register(), i.InputSimd128Register(0)); 1660 __ vcvt_s32_f32(i.OutputSimd128Register(), i.InputSimd128Register(0));
1669 break; 1661 break;
1670 } 1662 }
1671 case kArmUint32x4FromFloat32x4: { 1663 case kArmI32x4Neg: {
1672 __ vcvt_u32_f32(i.OutputSimd128Register(), i.InputSimd128Register(0));
1673 break;
1674 }
1675 case kArmInt32x4Neg: {
1676 __ vneg(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0)); 1664 __ vneg(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0));
1677 break; 1665 break;
1678 } 1666 }
1679 case kArmInt32x4ShiftLeftByScalar: { 1667 case kArmI32x4Shl: {
1680 __ vshl(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1668 __ vshl(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1681 i.InputInt5(1)); 1669 i.InputInt5(1));
1682 break; 1670 break;
1683 } 1671 }
1684 case kArmInt32x4ShiftRightByScalar: { 1672 case kArmI32x4ShrS: {
1685 __ vshr(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1673 __ vshr(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1686 i.InputInt5(1)); 1674 i.InputInt5(1));
1687 break; 1675 break;
1688 } 1676 }
1689 case kArmInt32x4Add: { 1677 case kArmI32x4Add: {
1690 __ vadd(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1678 __ vadd(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1691 i.InputSimd128Register(1)); 1679 i.InputSimd128Register(1));
1692 break; 1680 break;
1693 } 1681 }
1694 case kArmInt32x4Sub: { 1682 case kArmI32x4Sub: {
1695 __ vsub(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1683 __ vsub(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1696 i.InputSimd128Register(1)); 1684 i.InputSimd128Register(1));
1697 break; 1685 break;
1698 } 1686 }
1699 case kArmInt32x4Mul: { 1687 case kArmI32x4Mul: {
1700 __ vmul(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1688 __ vmul(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1701 i.InputSimd128Register(1)); 1689 i.InputSimd128Register(1));
1702 break; 1690 break;
1703 } 1691 }
1704 case kArmInt32x4Min: { 1692 case kArmI32x4MinS: {
1705 __ vmin(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1693 __ vmin(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1706 i.InputSimd128Register(1)); 1694 i.InputSimd128Register(1));
1707 break; 1695 break;
1708 } 1696 }
1709 case kArmInt32x4Max: { 1697 case kArmI32x4MaxS: {
1710 __ vmax(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1698 __ vmax(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1711 i.InputSimd128Register(1)); 1699 i.InputSimd128Register(1));
1712 break; 1700 break;
1713 } 1701 }
1714 case kArmInt32x4Equal: { 1702 case kArmI32x4Eq: {
1715 __ vceq(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1703 __ vceq(Neon32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1716 i.InputSimd128Register(1)); 1704 i.InputSimd128Register(1));
1717 break; 1705 break;
1718 } 1706 }
1719 case kArmInt32x4NotEqual: { 1707 case kArmI32x4Ne: {
1720 Simd128Register dst = i.OutputSimd128Register(); 1708 Simd128Register dst = i.OutputSimd128Register();
1721 __ vceq(Neon32, dst, i.InputSimd128Register(0), 1709 __ vceq(Neon32, dst, i.InputSimd128Register(0),
1722 i.InputSimd128Register(1)); 1710 i.InputSimd128Register(1));
1723 __ vmvn(dst, dst); 1711 __ vmvn(dst, dst);
1724 break; 1712 break;
1725 } 1713 }
1726 case kArmInt32x4LessThan: { 1714 case kArmI32x4LtS: {
1727 __ vcgt(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(1), 1715 __ vcgt(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(1),
1728 i.InputSimd128Register(0)); 1716 i.InputSimd128Register(0));
1729 break; 1717 break;
1730 } 1718 }
1731 case kArmInt32x4LessThanOrEqual: { 1719 case kArmI32x4LeS: {
1732 __ vcge(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(1), 1720 __ vcge(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(1),
1733 i.InputSimd128Register(0)); 1721 i.InputSimd128Register(0));
1734 break; 1722 break;
1735 } 1723 }
1736 case kArmUint32x4ShiftRightByScalar: { 1724 case kArmI32x4UConvertF32x4: {
1725 __ vcvt_u32_f32(i.OutputSimd128Register(), i.InputSimd128Register(0));
1726 break;
1727 }
1728 case kArmI32x4ShrU: {
1737 __ vshr(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1729 __ vshr(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1738 i.InputInt5(1)); 1730 i.InputInt5(1));
1739 break; 1731 break;
1740 } 1732 }
1741 case kArmUint32x4Min: { 1733 case kArmI32x4MinU: {
1742 __ vmin(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1734 __ vmin(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1743 i.InputSimd128Register(1)); 1735 i.InputSimd128Register(1));
1744 break; 1736 break;
1745 } 1737 }
1746 case kArmUint32x4Max: { 1738 case kArmI32x4MaxU: {
1747 __ vmax(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0), 1739 __ vmax(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0),
1748 i.InputSimd128Register(1)); 1740 i.InputSimd128Register(1));
1749 break; 1741 break;
1750 } 1742 }
1751 case kArmUint32x4LessThan: { 1743 case kArmI32x4LtU: {
1752 __ vcgt(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(1), 1744 __ vcgt(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(1),
1753 i.InputSimd128Register(0)); 1745 i.InputSimd128Register(0));
1754 break; 1746 break;
1755 } 1747 }
1756 case kArmUint32x4LessThanOrEqual: { 1748 case kArmI32x4LeU: {
1757 __ vcge(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(1), 1749 __ vcge(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(1),
1758 i.InputSimd128Register(0)); 1750 i.InputSimd128Register(0));
1759 break; 1751 break;
1760 } 1752 }
1761 case kArmInt16x8Splat: { 1753 case kArmI16x8Splat: {
1762 __ vdup(Neon16, i.OutputSimd128Register(), i.InputRegister(0)); 1754 __ vdup(Neon16, i.OutputSimd128Register(), i.InputRegister(0));
1763 break; 1755 break;
1764 } 1756 }
1765 case kArmInt16x8ExtractLane: { 1757 case kArmI16x8ExtractLane: {
1766 __ ExtractLane(i.OutputRegister(), i.InputSimd128Register(0), NeonS16, 1758 __ ExtractLane(i.OutputRegister(), i.InputSimd128Register(0), NeonS16,
1767 i.InputInt8(1)); 1759 i.InputInt8(1));
1768 break; 1760 break;
1769 } 1761 }
1770 case kArmInt16x8ReplaceLane: { 1762 case kArmI16x8ReplaceLane: {
1771 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0), 1763 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0),
1772 i.InputRegister(2), NeonS16, i.InputInt8(1)); 1764 i.InputRegister(2), NeonS16, i.InputInt8(1));
1773 break; 1765 break;
1774 } 1766 }
1775 case kArmInt16x8Neg: { 1767 case kArmI16x8Neg: {
1776 __ vneg(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0)); 1768 __ vneg(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0));
1777 break; 1769 break;
1778 } 1770 }
1779 case kArmInt16x8ShiftLeftByScalar: { 1771 case kArmI16x8Shl: {
1780 __ vshl(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1772 __ vshl(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1781 i.InputInt4(1)); 1773 i.InputInt4(1));
1782 break; 1774 break;
1783 } 1775 }
1784 case kArmInt16x8ShiftRightByScalar: { 1776 case kArmI16x8ShrS: {
1785 __ vshr(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1777 __ vshr(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1786 i.InputInt4(1)); 1778 i.InputInt4(1));
1787 break; 1779 break;
1788 } 1780 }
1789 case kArmInt16x8Add: { 1781 case kArmI16x8Add: {
1790 __ vadd(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1782 __ vadd(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1791 i.InputSimd128Register(1)); 1783 i.InputSimd128Register(1));
1792 break; 1784 break;
1793 } 1785 }
1794 case kArmInt16x8AddSaturate: { 1786 case kArmI16x8AddSaturate: {
1795 __ vqadd(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1787 __ vqadd(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1796 i.InputSimd128Register(1)); 1788 i.InputSimd128Register(1));
1797 break; 1789 break;
1798 } 1790 }
1799 case kArmInt16x8Sub: { 1791 case kArmI16x8Sub: {
1800 __ vsub(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1792 __ vsub(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1801 i.InputSimd128Register(1)); 1793 i.InputSimd128Register(1));
1802 break; 1794 break;
1803 } 1795 }
1804 case kArmInt16x8SubSaturate: { 1796 case kArmI16x8SubSaturate: {
1805 __ vqsub(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1797 __ vqsub(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1806 i.InputSimd128Register(1)); 1798 i.InputSimd128Register(1));
1807 break; 1799 break;
1808 } 1800 }
1809 case kArmInt16x8Mul: { 1801 case kArmI16x8Mul: {
1810 __ vmul(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1802 __ vmul(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1811 i.InputSimd128Register(1)); 1803 i.InputSimd128Register(1));
1812 break; 1804 break;
1813 } 1805 }
1814 case kArmInt16x8Min: { 1806 case kArmI16x8MinS: {
1815 __ vmin(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1807 __ vmin(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1816 i.InputSimd128Register(1)); 1808 i.InputSimd128Register(1));
1817 break; 1809 break;
1818 } 1810 }
1819 case kArmInt16x8Max: { 1811 case kArmI16x8MaxS: {
1820 __ vmax(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1812 __ vmax(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1821 i.InputSimd128Register(1)); 1813 i.InputSimd128Register(1));
1822 break; 1814 break;
1823 } 1815 }
1824 case kArmInt16x8Equal: { 1816 case kArmI16x8Eq: {
1825 __ vceq(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1817 __ vceq(Neon16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1826 i.InputSimd128Register(1)); 1818 i.InputSimd128Register(1));
1827 break; 1819 break;
1828 } 1820 }
1829 case kArmInt16x8NotEqual: { 1821 case kArmI16x8Ne: {
1830 Simd128Register dst = i.OutputSimd128Register(); 1822 Simd128Register dst = i.OutputSimd128Register();
1831 __ vceq(Neon16, dst, i.InputSimd128Register(0), 1823 __ vceq(Neon16, dst, i.InputSimd128Register(0),
1832 i.InputSimd128Register(1)); 1824 i.InputSimd128Register(1));
1833 __ vmvn(dst, dst); 1825 __ vmvn(dst, dst);
1834 break; 1826 break;
1835 } 1827 }
1836 case kArmInt16x8LessThan: { 1828 case kArmI16x8LtS: {
1837 __ vcgt(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(1), 1829 __ vcgt(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(1),
1838 i.InputSimd128Register(0)); 1830 i.InputSimd128Register(0));
1839 break; 1831 break;
1840 } 1832 }
1841 case kArmInt16x8LessThanOrEqual: { 1833 case kArmI16x8LeS: {
1842 __ vcge(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(1), 1834 __ vcge(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(1),
1843 i.InputSimd128Register(0)); 1835 i.InputSimd128Register(0));
1844 break; 1836 break;
1845 } 1837 }
1846 case kArmUint16x8ShiftRightByScalar: { 1838 case kArmI16x8ShrU: {
1847 __ vshr(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1839 __ vshr(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1848 i.InputInt4(1)); 1840 i.InputInt4(1));
1849 break; 1841 break;
1850 } 1842 }
1851 case kArmUint16x8AddSaturate: { 1843 case kArmI16x8AddSaturateU: {
1852 __ vqadd(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1844 __ vqadd(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1853 i.InputSimd128Register(1)); 1845 i.InputSimd128Register(1));
1854 break; 1846 break;
1855 } 1847 }
1856 case kArmUint16x8SubSaturate: { 1848 case kArmI16x8SubSaturateU: {
1857 __ vqsub(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1849 __ vqsub(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1858 i.InputSimd128Register(1)); 1850 i.InputSimd128Register(1));
1859 break; 1851 break;
1860 } 1852 }
1861 case kArmUint16x8Min: { 1853 case kArmI16x8MinU: {
1862 __ vmin(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1854 __ vmin(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1863 i.InputSimd128Register(1)); 1855 i.InputSimd128Register(1));
1864 break; 1856 break;
1865 } 1857 }
1866 case kArmUint16x8Max: { 1858 case kArmI16x8MaxU: {
1867 __ vmax(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0), 1859 __ vmax(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0),
1868 i.InputSimd128Register(1)); 1860 i.InputSimd128Register(1));
1869 break; 1861 break;
1870 } 1862 }
1871 case kArmUint16x8LessThan: { 1863 case kArmI16x8LtU: {
1872 __ vcgt(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(1), 1864 __ vcgt(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(1),
1873 i.InputSimd128Register(0)); 1865 i.InputSimd128Register(0));
1874 break; 1866 break;
1875 } 1867 }
1876 case kArmUint16x8LessThanOrEqual: { 1868 case kArmI16x8LeU: {
1877 __ vcge(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(1), 1869 __ vcge(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(1),
1878 i.InputSimd128Register(0)); 1870 i.InputSimd128Register(0));
1879 break; 1871 break;
1880 } 1872 }
1881 case kArmInt8x16Splat: { 1873 case kArmI8x16Splat: {
1882 __ vdup(Neon8, i.OutputSimd128Register(), i.InputRegister(0)); 1874 __ vdup(Neon8, i.OutputSimd128Register(), i.InputRegister(0));
1883 break; 1875 break;
1884 } 1876 }
1885 case kArmInt8x16ExtractLane: { 1877 case kArmI8x16ExtractLane: {
1886 __ ExtractLane(i.OutputRegister(), i.InputSimd128Register(0), NeonS8, 1878 __ ExtractLane(i.OutputRegister(), i.InputSimd128Register(0), NeonS8,
1887 i.InputInt8(1)); 1879 i.InputInt8(1));
1888 break; 1880 break;
1889 } 1881 }
1890 case kArmInt8x16ReplaceLane: { 1882 case kArmI8x16ReplaceLane: {
1891 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0), 1883 __ ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0),
1892 i.InputRegister(2), NeonS8, i.InputInt8(1)); 1884 i.InputRegister(2), NeonS8, i.InputInt8(1));
1893 break; 1885 break;
1894 } 1886 }
1895 case kArmInt8x16Neg: { 1887 case kArmI8x16Neg: {
1896 __ vneg(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0)); 1888 __ vneg(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0));
1897 break; 1889 break;
1898 } 1890 }
1899 case kArmInt8x16ShiftLeftByScalar: { 1891 case kArmI8x16Shl: {
1900 __ vshl(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1892 __ vshl(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1901 i.InputInt3(1)); 1893 i.InputInt3(1));
1902 break; 1894 break;
1903 } 1895 }
1904 case kArmInt8x16ShiftRightByScalar: { 1896 case kArmI8x16ShrS: {
1905 __ vshr(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1897 __ vshr(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1906 i.InputInt3(1)); 1898 i.InputInt3(1));
1907 break; 1899 break;
1908 } 1900 }
1909 case kArmInt8x16Add: { 1901 case kArmI8x16Add: {
1910 __ vadd(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1902 __ vadd(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1911 i.InputSimd128Register(1)); 1903 i.InputSimd128Register(1));
1912 break; 1904 break;
1913 } 1905 }
1914 case kArmInt8x16AddSaturate: { 1906 case kArmI8x16AddSaturate: {
1915 __ vqadd(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1907 __ vqadd(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1916 i.InputSimd128Register(1)); 1908 i.InputSimd128Register(1));
1917 break; 1909 break;
1918 } 1910 }
1919 case kArmInt8x16Sub: { 1911 case kArmI8x16Sub: {
1920 __ vsub(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1912 __ vsub(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1921 i.InputSimd128Register(1)); 1913 i.InputSimd128Register(1));
1922 break; 1914 break;
1923 } 1915 }
1924 case kArmInt8x16SubSaturate: { 1916 case kArmI8x16SubSaturate: {
1925 __ vqsub(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1917 __ vqsub(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1926 i.InputSimd128Register(1)); 1918 i.InputSimd128Register(1));
1927 break; 1919 break;
1928 } 1920 }
1929 case kArmInt8x16Mul: { 1921 case kArmI8x16Mul: {
1930 __ vmul(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1922 __ vmul(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1931 i.InputSimd128Register(1)); 1923 i.InputSimd128Register(1));
1932 break; 1924 break;
1933 } 1925 }
1934 case kArmInt8x16Min: { 1926 case kArmI8x16MinS: {
1935 __ vmin(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1927 __ vmin(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1936 i.InputSimd128Register(1)); 1928 i.InputSimd128Register(1));
1937 break; 1929 break;
1938 } 1930 }
1939 case kArmInt8x16Max: { 1931 case kArmI8x16MaxS: {
1940 __ vmax(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1932 __ vmax(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1941 i.InputSimd128Register(1)); 1933 i.InputSimd128Register(1));
1942 break; 1934 break;
1943 } 1935 }
1944 case kArmInt8x16Equal: { 1936 case kArmI8x16Eq: {
1945 __ vceq(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1937 __ vceq(Neon8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1946 i.InputSimd128Register(1)); 1938 i.InputSimd128Register(1));
1947 break; 1939 break;
1948 } 1940 }
1949 case kArmInt8x16NotEqual: { 1941 case kArmI8x16Ne: {
1950 Simd128Register dst = i.OutputSimd128Register(); 1942 Simd128Register dst = i.OutputSimd128Register();
1951 __ vceq(Neon8, dst, i.InputSimd128Register(0), i.InputSimd128Register(1)); 1943 __ vceq(Neon8, dst, i.InputSimd128Register(0), i.InputSimd128Register(1));
1952 __ vmvn(dst, dst); 1944 __ vmvn(dst, dst);
1953 break; 1945 break;
1954 } 1946 }
1955 case kArmInt8x16LessThan: { 1947 case kArmI8x16LtS: {
1956 __ vcgt(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(1), 1948 __ vcgt(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(1),
1957 i.InputSimd128Register(0)); 1949 i.InputSimd128Register(0));
1958 break; 1950 break;
1959 } 1951 }
1960 case kArmInt8x16LessThanOrEqual: { 1952 case kArmI8x16LeS: {
1961 __ vcge(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(1), 1953 __ vcge(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(1),
1962 i.InputSimd128Register(0)); 1954 i.InputSimd128Register(0));
1963 break; 1955 break;
1964 } 1956 }
1965 case kArmUint8x16ShiftRightByScalar: { 1957 case kArmI8x16ShrU: {
1966 __ vshr(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1958 __ vshr(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1967 i.InputInt3(1)); 1959 i.InputInt3(1));
1968 break; 1960 break;
1969 } 1961 }
1970 case kArmUint8x16AddSaturate: { 1962 case kArmI8x16AddSaturateU: {
1971 __ vqadd(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1963 __ vqadd(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1972 i.InputSimd128Register(1)); 1964 i.InputSimd128Register(1));
1973 break; 1965 break;
1974 } 1966 }
1975 case kArmUint8x16SubSaturate: { 1967 case kArmI8x16SubSaturateU: {
1976 __ vqsub(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1968 __ vqsub(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1977 i.InputSimd128Register(1)); 1969 i.InputSimd128Register(1));
1978 break; 1970 break;
1979 } 1971 }
1980 case kArmUint8x16Min: { 1972 case kArmI8x16MinU: {
1981 __ vmin(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1973 __ vmin(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1982 i.InputSimd128Register(1)); 1974 i.InputSimd128Register(1));
1983 break; 1975 break;
1984 } 1976 }
1985 case kArmUint8x16Max: { 1977 case kArmI8x16MaxU: {
1986 __ vmax(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0), 1978 __ vmax(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0),
1987 i.InputSimd128Register(1)); 1979 i.InputSimd128Register(1));
1988 break; 1980 break;
1989 } 1981 }
1990 case kArmUint8x16LessThan: { 1982 case kArmI8x16LtU: {
1991 __ vcgt(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(1), 1983 __ vcgt(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(1),
1992 i.InputSimd128Register(0)); 1984 i.InputSimd128Register(0));
1993 break; 1985 break;
1994 } 1986 }
1995 case kArmUint8x16LessThanOrEqual: { 1987 case kArmI8x16LeU: {
1996 __ vcge(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(1), 1988 __ vcge(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(1),
1997 i.InputSimd128Register(0)); 1989 i.InputSimd128Register(0));
1998 break; 1990 break;
1999 } 1991 }
2000 case kArmSimd128Zero: { 1992 case kArmS128Zero: {
2001 __ veor(i.OutputSimd128Register(), i.OutputSimd128Register(), 1993 __ veor(i.OutputSimd128Register(), i.OutputSimd128Register(),
2002 i.OutputSimd128Register()); 1994 i.OutputSimd128Register());
2003 break; 1995 break;
2004 } 1996 }
2005 case kArmSimd128And: { 1997 case kArmS128And: {
2006 __ vand(i.OutputSimd128Register(), i.InputSimd128Register(0), 1998 __ vand(i.OutputSimd128Register(), i.InputSimd128Register(0),
2007 i.InputSimd128Register(1)); 1999 i.InputSimd128Register(1));
2008 break; 2000 break;
2009 } 2001 }
2010 case kArmSimd128Or: { 2002 case kArmS128Or: {
2011 __ vorr(i.OutputSimd128Register(), i.InputSimd128Register(0), 2003 __ vorr(i.OutputSimd128Register(), i.InputSimd128Register(0),
2012 i.InputSimd128Register(1)); 2004 i.InputSimd128Register(1));
2013 break; 2005 break;
2014 } 2006 }
2015 case kArmSimd128Xor: { 2007 case kArmS128Xor: {
2016 __ veor(i.OutputSimd128Register(), i.InputSimd128Register(0), 2008 __ veor(i.OutputSimd128Register(), i.InputSimd128Register(0),
2017 i.InputSimd128Register(1)); 2009 i.InputSimd128Register(1));
2018 break; 2010 break;
2019 } 2011 }
2020 case kArmSimd128Not: { 2012 case kArmS128Not: {
2021 __ vmvn(i.OutputSimd128Register(), i.InputSimd128Register(0)); 2013 __ vmvn(i.OutputSimd128Register(), i.InputSimd128Register(0));
2022 break; 2014 break;
2023 } 2015 }
2024 case kArmSimd128Select: { 2016 case kArmS128Select: {
2025 // vbsl clobbers the mask input so make sure it was DefineSameAsFirst. 2017 // vbsl clobbers the mask input so make sure it was DefineSameAsFirst.
2026 DCHECK(i.OutputSimd128Register().is(i.InputSimd128Register(0))); 2018 DCHECK(i.OutputSimd128Register().is(i.InputSimd128Register(0)));
2027 __ vbsl(i.OutputSimd128Register(), i.InputSimd128Register(1), 2019 __ vbsl(i.OutputSimd128Register(), i.InputSimd128Register(1),
2028 i.InputSimd128Register(2)); 2020 i.InputSimd128Register(2));
2029 break; 2021 break;
2030 } 2022 }
2031 case kArmSimd1x4AnyTrue: { 2023 case kArmS1x4AnyTrue: {
2032 const QwNeonRegister& src = i.InputSimd128Register(0); 2024 const QwNeonRegister& src = i.InputSimd128Register(0);
2033 __ vpmax(NeonU32, kScratchDoubleReg, src.low(), src.high()); 2025 __ vpmax(NeonU32, kScratchDoubleReg, src.low(), src.high());
2034 __ vpmax(NeonU32, kScratchDoubleReg, kScratchDoubleReg, 2026 __ vpmax(NeonU32, kScratchDoubleReg, kScratchDoubleReg,
2035 kScratchDoubleReg); 2027 kScratchDoubleReg);
2036 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS32, 0); 2028 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS32, 0);
2037 break; 2029 break;
2038 } 2030 }
2039 case kArmSimd1x4AllTrue: { 2031 case kArmS1x4AllTrue: {
2040 const QwNeonRegister& src = i.InputSimd128Register(0); 2032 const QwNeonRegister& src = i.InputSimd128Register(0);
2041 __ vpmin(NeonU32, kScratchDoubleReg, src.low(), src.high()); 2033 __ vpmin(NeonU32, kScratchDoubleReg, src.low(), src.high());
2042 __ vpmin(NeonU32, kScratchDoubleReg, kScratchDoubleReg, 2034 __ vpmin(NeonU32, kScratchDoubleReg, kScratchDoubleReg,
2043 kScratchDoubleReg); 2035 kScratchDoubleReg);
2044 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS32, 0); 2036 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS32, 0);
2045 break; 2037 break;
2046 } 2038 }
2047 case kArmSimd1x8AnyTrue: { 2039 case kArmS1x8AnyTrue: {
2048 const QwNeonRegister& src = i.InputSimd128Register(0); 2040 const QwNeonRegister& src = i.InputSimd128Register(0);
2049 __ vpmax(NeonU16, kScratchDoubleReg, src.low(), src.high()); 2041 __ vpmax(NeonU16, kScratchDoubleReg, src.low(), src.high());
2050 __ vpmax(NeonU16, kScratchDoubleReg, kScratchDoubleReg, 2042 __ vpmax(NeonU16, kScratchDoubleReg, kScratchDoubleReg,
2051 kScratchDoubleReg); 2043 kScratchDoubleReg);
2052 __ vpmax(NeonU16, kScratchDoubleReg, kScratchDoubleReg, 2044 __ vpmax(NeonU16, kScratchDoubleReg, kScratchDoubleReg,
2053 kScratchDoubleReg); 2045 kScratchDoubleReg);
2054 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS16, 0); 2046 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS16, 0);
2055 break; 2047 break;
2056 } 2048 }
2057 case kArmSimd1x8AllTrue: { 2049 case kArmS1x8AllTrue: {
2058 const QwNeonRegister& src = i.InputSimd128Register(0); 2050 const QwNeonRegister& src = i.InputSimd128Register(0);
2059 __ vpmin(NeonU16, kScratchDoubleReg, src.low(), src.high()); 2051 __ vpmin(NeonU16, kScratchDoubleReg, src.low(), src.high());
2060 __ vpmin(NeonU16, kScratchDoubleReg, kScratchDoubleReg, 2052 __ vpmin(NeonU16, kScratchDoubleReg, kScratchDoubleReg,
2061 kScratchDoubleReg); 2053 kScratchDoubleReg);
2062 __ vpmin(NeonU16, kScratchDoubleReg, kScratchDoubleReg, 2054 __ vpmin(NeonU16, kScratchDoubleReg, kScratchDoubleReg,
2063 kScratchDoubleReg); 2055 kScratchDoubleReg);
2064 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS16, 0); 2056 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS16, 0);
2065 break; 2057 break;
2066 } 2058 }
2067 case kArmSimd1x16AnyTrue: { 2059 case kArmS1x16AnyTrue: {
2068 const QwNeonRegister& src = i.InputSimd128Register(0); 2060 const QwNeonRegister& src = i.InputSimd128Register(0);
2069 __ vpmax(NeonU8, kScratchDoubleReg, src.low(), src.high()); 2061 __ vpmax(NeonU8, kScratchDoubleReg, src.low(), src.high());
2070 __ vpmax(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg); 2062 __ vpmax(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg);
2071 // vtst to detect any bits in the bottom 32 bits of kScratchDoubleReg. 2063 // vtst to detect any bits in the bottom 32 bits of kScratchDoubleReg.
2072 // This saves an instruction vs. the naive sequence of vpmax. 2064 // This saves an instruction vs. the naive sequence of vpmax.
2073 // kDoubleRegZero is not changed, since it is 0. 2065 // kDoubleRegZero is not changed, since it is 0.
2074 __ vtst(Neon32, kScratchQuadReg, kScratchQuadReg, kScratchQuadReg); 2066 __ vtst(Neon32, kScratchQuadReg, kScratchQuadReg, kScratchQuadReg);
2075 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS32, 0); 2067 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS32, 0);
2076 break; 2068 break;
2077 } 2069 }
2078 case kArmSimd1x16AllTrue: { 2070 case kArmS1x16AllTrue: {
2079 const QwNeonRegister& src = i.InputSimd128Register(0); 2071 const QwNeonRegister& src = i.InputSimd128Register(0);
2080 __ vpmin(NeonU8, kScratchDoubleReg, src.low(), src.high()); 2072 __ vpmin(NeonU8, kScratchDoubleReg, src.low(), src.high());
2081 __ vpmin(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg); 2073 __ vpmin(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg);
2082 __ vpmin(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg); 2074 __ vpmin(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg);
2083 __ vpmin(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg); 2075 __ vpmin(NeonU8, kScratchDoubleReg, kScratchDoubleReg, kScratchDoubleReg);
2084 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS8, 0); 2076 __ ExtractLane(i.OutputRegister(), kScratchDoubleReg, NeonS8, 0);
2085 break; 2077 break;
2086 } 2078 }
2087 case kCheckedLoadInt8: 2079 case kCheckedLoadInt8:
2088 ASSEMBLE_CHECKED_LOAD_INTEGER(ldrsb); 2080 ASSEMBLE_CHECKED_LOAD_INTEGER(ldrsb);
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after
2831 padding_size -= v8::internal::Assembler::kInstrSize; 2823 padding_size -= v8::internal::Assembler::kInstrSize;
2832 } 2824 }
2833 } 2825 }
2834 } 2826 }
2835 2827
2836 #undef __ 2828 #undef __
2837 2829
2838 } // namespace compiler 2830 } // namespace compiler
2839 } // namespace internal 2831 } // namespace internal
2840 } // namespace v8 2832 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/arm/instruction-codes-arm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698