Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 ; This tries to be a comprehensive test of i64 operations, in | 1 ; This tries to be a comprehensive test of i64 operations, in |
| 2 ; particular the patterns for lowering i64 operations into constituent | 2 ; particular the patterns for lowering i64 operations into constituent |
| 3 ; i32 operations on x86-32. | 3 ; i32 operations on x86-32. |
| 4 | 4 |
| 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ | 6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ |
| 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
| 8 | 8 |
| 9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ | 10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ |
| (...skipping 1586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1597 ; CHECK: je | 1597 ; CHECK: je |
| 1598 ; | 1598 ; |
| 1599 ; OPTM1-LABEL: icmpEq64Bool | 1599 ; OPTM1-LABEL: icmpEq64Bool |
| 1600 ; OPTM1: jne | 1600 ; OPTM1: jne |
| 1601 ; OPTM1: je | 1601 ; OPTM1: je |
| 1602 | 1602 |
| 1603 ; ARM32-LABEL: icmpEq64Bool | 1603 ; ARM32-LABEL: icmpEq64Bool |
| 1604 ; ARM32: mov | 1604 ; ARM32: mov |
| 1605 ; ARM32: moveq | 1605 ; ARM32: moveq |
| 1606 | 1606 |
| 1607 ; MIPS32-LABEL: icmpEq64Bool | |
| 1608 ; MIPS32: xor [[T1:.*]],{{.*}},{{.*}} | |
| 1609 ; MIPS32: xor [[T2:.*]],{{.*}},{{.*}} | |
| 1610 ; MIPS32: or [[T3:.*]],[[T1]],[[T2]] | |
| 1611 ; MIPS32: sltiu {{.*}},[[T3]],1 | |
| 1612 | |
| 1607 define internal i32 @icmpNe64Bool(i64 %a, i64 %b) { | 1613 define internal i32 @icmpNe64Bool(i64 %a, i64 %b) { |
| 1608 entry: | 1614 entry: |
| 1609 %cmp = icmp ne i64 %a, %b | 1615 %cmp = icmp ne i64 %a, %b |
| 1610 %cmp.ret_ext = zext i1 %cmp to i32 | 1616 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1611 ret i32 %cmp.ret_ext | 1617 ret i32 %cmp.ret_ext |
| 1612 } | 1618 } |
| 1613 ; CHECK-LABEL: icmpNe64Bool | 1619 ; CHECK-LABEL: icmpNe64Bool |
| 1614 ; CHECK: jne | 1620 ; CHECK: jne |
| 1615 ; CHECK: jne | 1621 ; CHECK: jne |
| 1616 ; | 1622 ; |
| 1617 ; OPTM1-LABEL: icmpNe64Bool | 1623 ; OPTM1-LABEL: icmpNe64Bool |
| 1618 ; OPTM1: jne | 1624 ; OPTM1: jne |
| 1619 ; OPTM1: jne | 1625 ; OPTM1: jne |
| 1620 | 1626 |
| 1621 ; ARM32-LABEL: icmpNe64Bool | 1627 ; ARM32-LABEL: icmpNe64Bool |
| 1622 ; ARM32: mov | 1628 ; ARM32: mov |
| 1623 ; ARM32: movne | 1629 ; ARM32: movne |
| 1624 | 1630 |
| 1631 ; MIPS32-LABEL: icmpNe64Bool | |
| 1632 ; MIPS32: xor [[T1:.*]],{{.*}},{{.*}} | |
| 1633 ; MIPS32: xor [[T2:.*]],{{.*}},{{.*}} | |
| 1634 ; MIPS32: or [[T3:.*]],[[T1]],[[T2]] | |
| 1635 ; MIPS32: sltu {{.*}},zero,[[T3]] | |
| 1636 | |
| 1625 define internal i32 @icmpSgt64Bool(i64 %a, i64 %b) { | 1637 define internal i32 @icmpSgt64Bool(i64 %a, i64 %b) { |
| 1626 entry: | 1638 entry: |
| 1627 %cmp = icmp sgt i64 %a, %b | 1639 %cmp = icmp sgt i64 %a, %b |
| 1628 %cmp.ret_ext = zext i1 %cmp to i32 | 1640 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1629 ret i32 %cmp.ret_ext | 1641 ret i32 %cmp.ret_ext |
| 1630 } | 1642 } |
| 1631 ; CHECK-LABEL: icmpSgt64Bool | 1643 ; CHECK-LABEL: icmpSgt64Bool |
| 1632 ; CHECK: cmp | 1644 ; CHECK: cmp |
| 1633 ; CHECK: jg | 1645 ; CHECK: jg |
| 1634 ; CHECK: jl | 1646 ; CHECK: jl |
| 1635 ; CHECK: cmp | 1647 ; CHECK: cmp |
| 1636 ; CHECK: ja | 1648 ; CHECK: ja |
| 1637 ; | 1649 ; |
| 1638 ; OPTM1-LABEL: icmpSgt64Bool | 1650 ; OPTM1-LABEL: icmpSgt64Bool |
| 1639 ; OPTM1: cmp | 1651 ; OPTM1: cmp |
| 1640 ; OPTM1: jg | 1652 ; OPTM1: jg |
| 1641 ; OPTM1: jl | 1653 ; OPTM1: jl |
| 1642 ; OPTM1: cmp | 1654 ; OPTM1: cmp |
| 1643 ; OPTM1: ja | 1655 ; OPTM1: ja |
| 1644 | 1656 |
| 1645 ; ARM32-LABEL: icmpSgt64Bool | 1657 ; ARM32-LABEL: icmpSgt64Bool |
| 1646 ; ARM32: mov | 1658 ; ARM32: mov |
| 1647 ; ARM32: cmp | 1659 ; ARM32: cmp |
| 1648 ; ARM32: sbcs | 1660 ; ARM32: sbcs |
| 1649 ; ARM32: movlt | 1661 ; ARM32: movlt |
| 1650 | 1662 |
| 1663 ; MIPS32-LABEL: icmpSgt64Bool | |
| 1664 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1665 ; MIPS32: slt [[T2:.*]],{{.*}},{{.*}} | |
| 1666 ; MIPS32: sltu [[T3:.*]],{{.*}},{{.*}} | |
| 1667 ; MIPS32: movz [[T2]],[[T3]],[[T1]] | |
| 1668 ; MIPS32-O2: move {{.*}},[[T2]] | |
|
Jim Stichnoth
2016/09/27 13:45:35
The "MIPS32-O2" and "MIPS32-OM1" lines don't actua
sagar.thakur
2016/09/28 08:23:23
Done. I will add RUN command line for Om1 in a sep
| |
| 1669 ; MIPS32-OM1: sw [[T2]],[[MEM:.*]] | |
| 1670 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1671 | |
| 1651 define internal i32 @icmpUgt64Bool(i64 %a, i64 %b) { | 1672 define internal i32 @icmpUgt64Bool(i64 %a, i64 %b) { |
| 1652 entry: | 1673 entry: |
| 1653 %cmp = icmp ugt i64 %a, %b | 1674 %cmp = icmp ugt i64 %a, %b |
| 1654 %cmp.ret_ext = zext i1 %cmp to i32 | 1675 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1655 ret i32 %cmp.ret_ext | 1676 ret i32 %cmp.ret_ext |
| 1656 } | 1677 } |
| 1657 ; CHECK-LABEL: icmpUgt64Bool | 1678 ; CHECK-LABEL: icmpUgt64Bool |
| 1658 ; CHECK: cmp | 1679 ; CHECK: cmp |
| 1659 ; CHECK: ja | 1680 ; CHECK: ja |
| 1660 ; CHECK: jb | 1681 ; CHECK: jb |
| 1661 ; CHECK: cmp | 1682 ; CHECK: cmp |
| 1662 ; CHECK: ja | 1683 ; CHECK: ja |
| 1663 ; | 1684 ; |
| 1664 ; OPTM1-LABEL: icmpUgt64Bool | 1685 ; OPTM1-LABEL: icmpUgt64Bool |
| 1665 ; OPTM1: cmp | 1686 ; OPTM1: cmp |
| 1666 ; OPTM1: ja | 1687 ; OPTM1: ja |
| 1667 ; OPTM1: jb | 1688 ; OPTM1: jb |
| 1668 ; OPTM1: cmp | 1689 ; OPTM1: cmp |
| 1669 ; OPTM1: ja | 1690 ; OPTM1: ja |
| 1670 | 1691 |
| 1671 ; ARM32-LABEL: icmpUgt64Bool | 1692 ; ARM32-LABEL: icmpUgt64Bool |
| 1672 ; ARM32: mov | 1693 ; ARM32: mov |
| 1673 ; ARM32: cmp | 1694 ; ARM32: cmp |
| 1674 ; ARM32: cmpeq | 1695 ; ARM32: cmpeq |
| 1675 ; ARM32: movhi | 1696 ; ARM32: movhi |
| 1676 | 1697 |
| 1698 ; MIPS32-LABEL: icmpUgt64Bool | |
| 1699 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1700 ; MIPS32: sltu [[T2:.*]],[[B_HI]],[[A_HI]] | |
| 1701 ; MIPS32: sltu [[T3:.*]],{{.*}},{{.*}} | |
| 1702 ; MIPS32: movz [[T2]],[[T3]],[[T1]] | |
| 1703 ; MIPS32-O2: move {{.*}},[[T2]] | |
| 1704 ; MIPS32-OM1: sw [[T2]],[[MEM:.*]] | |
| 1705 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1706 | |
| 1677 define internal i32 @icmpSge64Bool(i64 %a, i64 %b) { | 1707 define internal i32 @icmpSge64Bool(i64 %a, i64 %b) { |
| 1678 entry: | 1708 entry: |
| 1679 %cmp = icmp sge i64 %a, %b | 1709 %cmp = icmp sge i64 %a, %b |
| 1680 %cmp.ret_ext = zext i1 %cmp to i32 | 1710 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1681 ret i32 %cmp.ret_ext | 1711 ret i32 %cmp.ret_ext |
| 1682 } | 1712 } |
| 1683 ; CHECK-LABEL: icmpSge64Bool | 1713 ; CHECK-LABEL: icmpSge64Bool |
| 1684 ; CHECK: cmp | 1714 ; CHECK: cmp |
| 1685 ; CHECK: jg | 1715 ; CHECK: jg |
| 1686 ; CHECK: jl | 1716 ; CHECK: jl |
| 1687 ; CHECK: cmp | 1717 ; CHECK: cmp |
| 1688 ; CHECK: jae | 1718 ; CHECK: jae |
| 1689 ; | 1719 ; |
| 1690 ; OPTM1-LABEL: icmpSge64Bool | 1720 ; OPTM1-LABEL: icmpSge64Bool |
| 1691 ; OPTM1: cmp | 1721 ; OPTM1: cmp |
| 1692 ; OPTM1: jg | 1722 ; OPTM1: jg |
| 1693 ; OPTM1: jl | 1723 ; OPTM1: jl |
| 1694 ; OPTM1: cmp | 1724 ; OPTM1: cmp |
| 1695 ; OPTM1: jae | 1725 ; OPTM1: jae |
| 1696 | 1726 |
| 1697 ; ARM32-LABEL: icmpSge64Bool | 1727 ; ARM32-LABEL: icmpSge64Bool |
| 1698 ; ARM32: mov | 1728 ; ARM32: mov |
| 1699 ; ARM32: cmp | 1729 ; ARM32: cmp |
| 1700 ; ARM32: sbcs | 1730 ; ARM32: sbcs |
| 1701 ; ARM32: movge | 1731 ; ARM32: movge |
| 1702 | 1732 |
| 1733 ; MIPS32-LABEL: icmpSge64Bool | |
| 1734 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1735 ; MIPS32: slt [[T2:.*]],[[A_HI]],[[B_HI]] | |
| 1736 ; MIPS32: xori [[T3:.*]],[[T2]],0x1 | |
| 1737 ; MIPS32: sltu [[T4:.*]],{{.*}},{{.*}} | |
| 1738 ; MIPS32: xori [[T5:.*]],[[T4]],0x1 | |
| 1739 ; MIPS32: movz [[T6:.*]],[[T5]],[[T1]] | |
| 1740 ; MIPS32-O2: move {{.*}},[[T3]] | |
| 1741 ; MIPS32-OM1: sw [[T3]],[[MEM:.*]] | |
| 1742 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1743 | |
| 1703 define internal i32 @icmpUge64Bool(i64 %a, i64 %b) { | 1744 define internal i32 @icmpUge64Bool(i64 %a, i64 %b) { |
| 1704 entry: | 1745 entry: |
| 1705 %cmp = icmp uge i64 %a, %b | 1746 %cmp = icmp uge i64 %a, %b |
| 1706 %cmp.ret_ext = zext i1 %cmp to i32 | 1747 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1707 ret i32 %cmp.ret_ext | 1748 ret i32 %cmp.ret_ext |
| 1708 } | 1749 } |
| 1709 ; CHECK-LABEL: icmpUge64Bool | 1750 ; CHECK-LABEL: icmpUge64Bool |
| 1710 ; CHECK: cmp | 1751 ; CHECK: cmp |
| 1711 ; CHECK: ja | 1752 ; CHECK: ja |
| 1712 ; CHECK: jb | 1753 ; CHECK: jb |
| 1713 ; CHECK: cmp | 1754 ; CHECK: cmp |
| 1714 ; CHECK: jae | 1755 ; CHECK: jae |
| 1715 ; | 1756 ; |
| 1716 ; OPTM1-LABEL: icmpUge64Bool | 1757 ; OPTM1-LABEL: icmpUge64Bool |
| 1717 ; OPTM1: cmp | 1758 ; OPTM1: cmp |
| 1718 ; OPTM1: ja | 1759 ; OPTM1: ja |
| 1719 ; OPTM1: jb | 1760 ; OPTM1: jb |
| 1720 ; OPTM1: cmp | 1761 ; OPTM1: cmp |
| 1721 ; OPTM1: jae | 1762 ; OPTM1: jae |
| 1722 | 1763 |
| 1723 ; ARM32-LABEL: icmpUge64Bool | 1764 ; ARM32-LABEL: icmpUge64Bool |
| 1724 ; ARM32: mov | 1765 ; ARM32: mov |
| 1725 ; ARM32: cmp | 1766 ; ARM32: cmp |
| 1726 ; ARM32: cmpeq | 1767 ; ARM32: cmpeq |
| 1727 ; ARM32: movcs | 1768 ; ARM32: movcs |
| 1728 | 1769 |
| 1770 ; MIPS32-LABEL: icmpUge64Bool | |
| 1771 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1772 ; MIPS32: sltu [[T2:.*]],[[A_HI]],[[B_HI]] | |
| 1773 ; MIPS32: xori [[T3:.*]],[[T2]],0x1 | |
| 1774 ; MIPS32: sltu [[T4:.*]],{{.*}},{{.*}} | |
| 1775 ; MIPS32: xori [[T5:.*]],[[T4]],0x1 | |
| 1776 ; MIPS32: movz [[T6:.*]],[[T5]],[[T1]] | |
| 1777 ; MIPS32-O2: move {{.*}},[[T3]] | |
| 1778 ; MIPS32-OM1: sw [[T3]],[[MEM:.*]] | |
| 1779 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1780 | |
| 1729 define internal i32 @icmpSlt64Bool(i64 %a, i64 %b) { | 1781 define internal i32 @icmpSlt64Bool(i64 %a, i64 %b) { |
| 1730 entry: | 1782 entry: |
| 1731 %cmp = icmp slt i64 %a, %b | 1783 %cmp = icmp slt i64 %a, %b |
| 1732 %cmp.ret_ext = zext i1 %cmp to i32 | 1784 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1733 ret i32 %cmp.ret_ext | 1785 ret i32 %cmp.ret_ext |
| 1734 } | 1786 } |
| 1735 ; CHECK-LABEL: icmpSlt64Bool | 1787 ; CHECK-LABEL: icmpSlt64Bool |
| 1736 ; CHECK: cmp | 1788 ; CHECK: cmp |
| 1737 ; CHECK: jl | 1789 ; CHECK: jl |
| 1738 ; CHECK: jg | 1790 ; CHECK: jg |
| 1739 ; CHECK: cmp | 1791 ; CHECK: cmp |
| 1740 ; CHECK: jb | 1792 ; CHECK: jb |
| 1741 ; | 1793 ; |
| 1742 ; OPTM1-LABEL: icmpSlt64Bool | 1794 ; OPTM1-LABEL: icmpSlt64Bool |
| 1743 ; OPTM1: cmp | 1795 ; OPTM1: cmp |
| 1744 ; OPTM1: jl | 1796 ; OPTM1: jl |
| 1745 ; OPTM1: jg | 1797 ; OPTM1: jg |
| 1746 ; OPTM1: cmp | 1798 ; OPTM1: cmp |
| 1747 ; OPTM1: jb | 1799 ; OPTM1: jb |
| 1748 | 1800 |
| 1749 ; ARM32-LABEL: icmpSlt64Bool | 1801 ; ARM32-LABEL: icmpSlt64Bool |
| 1750 ; ARM32: mov | 1802 ; ARM32: mov |
| 1751 ; ARM32: cmp | 1803 ; ARM32: cmp |
| 1752 ; ARM32: sbcs | 1804 ; ARM32: sbcs |
| 1753 ; ARM32: movlt | 1805 ; ARM32: movlt |
| 1754 | 1806 |
| 1807 ; MIPS32-LABEL: icmpSlt64Bool | |
| 1808 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1809 ; MIPS32: slt [[T2:.*]],[[A_HI]],[[B_HI]] | |
| 1810 ; MIPS32: sltu [[T3:.*]],{{.*}},{{.*}} | |
| 1811 ; MIPS32: movz [[T2:.*]],[[T3]],[[T1]] | |
| 1812 ; MIPS32-O2: move {{.*}},[[T2]] | |
| 1813 ; MIPS32-OM1: sw [[T2]],[[MEM:.*]] | |
| 1814 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1815 | |
| 1755 define internal i32 @icmpUlt64Bool(i64 %a, i64 %b) { | 1816 define internal i32 @icmpUlt64Bool(i64 %a, i64 %b) { |
| 1756 entry: | 1817 entry: |
| 1757 %cmp = icmp ult i64 %a, %b | 1818 %cmp = icmp ult i64 %a, %b |
| 1758 %cmp.ret_ext = zext i1 %cmp to i32 | 1819 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1759 ret i32 %cmp.ret_ext | 1820 ret i32 %cmp.ret_ext |
| 1760 } | 1821 } |
| 1761 ; CHECK-LABEL: icmpUlt64Bool | 1822 ; CHECK-LABEL: icmpUlt64Bool |
| 1762 ; CHECK: cmp | 1823 ; CHECK: cmp |
| 1763 ; CHECK: jb | 1824 ; CHECK: jb |
| 1764 ; CHECK: ja | 1825 ; CHECK: ja |
| 1765 ; CHECK: cmp | 1826 ; CHECK: cmp |
| 1766 ; CHECK: jb | 1827 ; CHECK: jb |
| 1767 ; | 1828 ; |
| 1768 ; OPTM1-LABEL: icmpUlt64Bool | 1829 ; OPTM1-LABEL: icmpUlt64Bool |
| 1769 ; OPTM1: cmp | 1830 ; OPTM1: cmp |
| 1770 ; OPTM1: jb | 1831 ; OPTM1: jb |
| 1771 ; OPTM1: ja | 1832 ; OPTM1: ja |
| 1772 ; OPTM1: cmp | 1833 ; OPTM1: cmp |
| 1773 ; OPTM1: jb | 1834 ; OPTM1: jb |
| 1774 | 1835 |
| 1775 ; ARM32-LABEL: icmpUlt64Bool | 1836 ; ARM32-LABEL: icmpUlt64Bool |
| 1776 ; ARM32: mov | 1837 ; ARM32: mov |
| 1777 ; ARM32: cmp | 1838 ; ARM32: cmp |
| 1778 ; ARM32: cmpeq | 1839 ; ARM32: cmpeq |
| 1779 ; ARM32: movcc | 1840 ; ARM32: movcc |
| 1780 | 1841 |
| 1842 ; MIPS32-LABEL: icmpUlt64Bool | |
| 1843 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1844 ; MIPS32: sltu [[T2:.*]],[[A_HI]],[[B_HI]] | |
| 1845 ; MIPS32: sltu [[T3:.*]],{{.*}},{{.*}} | |
| 1846 ; MIPS32: movz [[T2:.*]],[[T3]],[[T1]] | |
| 1847 ; MIPS32-O2: move {{.*}},[[T2]] | |
| 1848 ; MIPS32-OM1: sw [[T2]],[[MEM:.*]] | |
| 1849 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1850 | |
| 1781 define internal i32 @icmpSle64Bool(i64 %a, i64 %b) { | 1851 define internal i32 @icmpSle64Bool(i64 %a, i64 %b) { |
| 1782 entry: | 1852 entry: |
| 1783 %cmp = icmp sle i64 %a, %b | 1853 %cmp = icmp sle i64 %a, %b |
| 1784 %cmp.ret_ext = zext i1 %cmp to i32 | 1854 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1785 ret i32 %cmp.ret_ext | 1855 ret i32 %cmp.ret_ext |
| 1786 } | 1856 } |
| 1787 ; CHECK-LABEL: icmpSle64Bool | 1857 ; CHECK-LABEL: icmpSle64Bool |
| 1788 ; CHECK: cmp | 1858 ; CHECK: cmp |
| 1789 ; CHECK: jl | 1859 ; CHECK: jl |
| 1790 ; CHECK: jg | 1860 ; CHECK: jg |
| 1791 ; CHECK: cmp | 1861 ; CHECK: cmp |
| 1792 ; CHECK: jbe | 1862 ; CHECK: jbe |
| 1793 ; | 1863 ; |
| 1794 ; OPTM1-LABEL: icmpSle64Bool | 1864 ; OPTM1-LABEL: icmpSle64Bool |
| 1795 ; OPTM1: cmp | 1865 ; OPTM1: cmp |
| 1796 ; OPTM1: jl | 1866 ; OPTM1: jl |
| 1797 ; OPTM1: jg | 1867 ; OPTM1: jg |
| 1798 ; OPTM1: cmp | 1868 ; OPTM1: cmp |
| 1799 ; OPTM1: jbe | 1869 ; OPTM1: jbe |
| 1800 | 1870 |
| 1801 ; ARM32-LABEL: icmpSle64Bool | 1871 ; ARM32-LABEL: icmpSle64Bool |
| 1802 ; ARM32: mov | 1872 ; ARM32: mov |
| 1803 ; ARM32: cmp | 1873 ; ARM32: cmp |
| 1804 ; ARM32: sbcs | 1874 ; ARM32: sbcs |
| 1805 ; ARM32: movge | 1875 ; ARM32: movge |
| 1806 | 1876 |
| 1877 ; MIPS32-LABEL: icmpSle64Bool | |
| 1878 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1879 ; MIPS32: slt [[T2:.*]],[[B_HI]],[[A_HI]] | |
| 1880 ; MIPS32: xori [[T3:.*]],[[T2]],0x1 | |
| 1881 ; MIPS32: sltu [[T4:.*]],{{.*}},{{.*}} | |
| 1882 ; MIPS32: xori [[T5:.*]],[[T4]],0x1 | |
| 1883 ; MIPS32: movz [[T6:.*]],[[T5]],[[T1]] | |
| 1884 ; MIPS32-O2: move {{.*}},[[T3]] | |
| 1885 ; MIPS32-OM1: sw [[T3]],[[MEM:.*]] | |
| 1886 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1887 | |
| 1807 define internal i32 @icmpUle64Bool(i64 %a, i64 %b) { | 1888 define internal i32 @icmpUle64Bool(i64 %a, i64 %b) { |
| 1808 entry: | 1889 entry: |
| 1809 %cmp = icmp ule i64 %a, %b | 1890 %cmp = icmp ule i64 %a, %b |
| 1810 %cmp.ret_ext = zext i1 %cmp to i32 | 1891 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1811 ret i32 %cmp.ret_ext | 1892 ret i32 %cmp.ret_ext |
| 1812 } | 1893 } |
| 1813 ; CHECK-LABEL: icmpUle64Bool | 1894 ; CHECK-LABEL: icmpUle64Bool |
| 1814 ; CHECK: cmp | 1895 ; CHECK: cmp |
| 1815 ; CHECK: jb | 1896 ; CHECK: jb |
| 1816 ; CHECK: ja | 1897 ; CHECK: ja |
| 1817 ; CHECK: cmp | 1898 ; CHECK: cmp |
| 1818 ; CHECK: jbe | 1899 ; CHECK: jbe |
| 1819 ; | 1900 ; |
| 1820 ; OPTM1-LABEL: icmpUle64Bool | 1901 ; OPTM1-LABEL: icmpUle64Bool |
| 1821 ; OPTM1: cmp | 1902 ; OPTM1: cmp |
| 1822 ; OPTM1: jb | 1903 ; OPTM1: jb |
| 1823 ; OPTM1: ja | 1904 ; OPTM1: ja |
| 1824 ; OPTM1: cmp | 1905 ; OPTM1: cmp |
| 1825 ; OPTM1: jbe | 1906 ; OPTM1: jbe |
| 1826 | 1907 |
| 1827 ; ARM32-LABEL: icmpUle64Bool | 1908 ; ARM32-LABEL: icmpUle64Bool |
| 1828 ; ARM32: mov | 1909 ; ARM32: mov |
| 1829 ; ARM32: cmp | 1910 ; ARM32: cmp |
| 1830 ; ARM32: cmpeq | 1911 ; ARM32: cmpeq |
| 1831 ; ARM32: movls | 1912 ; ARM32: movls |
| 1832 | 1913 |
| 1914 ; MIPS32-LABEL: icmpUle64Bool | |
| 1915 ; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]] | |
| 1916 ; MIPS32: sltu [[T2:.*]],[[B_HI]],[[A_HI]] | |
| 1917 ; MIPS32: xori [[T3:.*]],[[T2]],0x1 | |
| 1918 ; MIPS32: sltu [[T4:.*]],{{.*}},{{.*}} | |
| 1919 ; MIPS32: xori [[T5:.*]],[[T4]],0x1 | |
| 1920 ; MIPS32: movz [[T6:.*]],[[T5]],[[T1]] | |
| 1921 ; MIPS32-O2: move {{.*}},[[T3]] | |
| 1922 ; MIPS32-OM1: sw [[T3]],[[MEM:.*]] | |
| 1923 ; MIPS32-OM1: lb {{.*}},[[MEM]] | |
| 1924 | |
| 1833 define internal i64 @load64(i32 %a) { | 1925 define internal i64 @load64(i32 %a) { |
| 1834 entry: | 1926 entry: |
| 1835 %__1 = inttoptr i32 %a to i64* | 1927 %__1 = inttoptr i32 %a to i64* |
| 1836 %v0 = load i64, i64* %__1, align 1 | 1928 %v0 = load i64, i64* %__1, align 1 |
| 1837 ret i64 %v0 | 1929 ret i64 %v0 |
| 1838 } | 1930 } |
| 1839 ; CHECK-LABEL: load64 | 1931 ; CHECK-LABEL: load64 |
| 1840 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4] | 1932 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4] |
| 1841 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]] | 1933 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]] |
| 1842 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]+0x4] | 1934 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]+0x4] |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2137 %s = lshr i64 %a, 40 | 2229 %s = lshr i64 %a, 40 |
| 2138 %t = trunc i64 %s to i32 | 2230 %t = trunc i64 %s to i32 |
| 2139 %r = sub i32 %t, 1 | 2231 %r = sub i32 %t, 1 |
| 2140 ret i32 %r | 2232 ret i32 %r |
| 2141 ; ARM32-LABEL: subOneToUpperAfterShift | 2233 ; ARM32-LABEL: subOneToUpperAfterShift |
| 2142 ; ARM32: subs | 2234 ; ARM32: subs |
| 2143 ; ARM32: sbc | 2235 ; ARM32: sbc |
| 2144 ; ARM32: lsr | 2236 ; ARM32: lsr |
| 2145 ; ARM32: sub | 2237 ; ARM32: sub |
| 2146 } | 2238 } |
| OLD | NEW |