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

Side by Side Diff: tests_lit/llvm2ice_tests/64bit.pnacl.ll

Issue 2369323002: [Subzero][MIPS] Implement 64-bit integer compare operations (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Reused existing tests in tests_lit/llvm2ice_tests/64bit.pnacl.ll instead of adding new tests in tes… Created 4 years, 2 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 ; 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
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
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 }
OLDNEW
« src/IceTargetLoweringMIPS32.cpp ('K') | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698