@@ -1720,45 +1720,67 @@ define i32 @sub_if_uge_multiuse_cmp_store_i32(i32 %x, i32 %y, ptr %z) {
1720
1720
}
1721
1721
1722
1722
define i8 @sub_if_uge_C_i8 (i8 zeroext %x ) {
1723
- ; CHECK-LABEL: sub_if_uge_C_i8:
1724
- ; CHECK: # %bb.0:
1725
- ; CHECK-NEXT: sltiu a1, a0, 13
1726
- ; CHECK-NEXT: addi a1, a1, -1
1727
- ; CHECK-NEXT: andi a1, a1, -13
1728
- ; CHECK-NEXT: add a0, a0, a1
1729
- ; CHECK-NEXT: ret
1723
+ ; RV32I-LABEL: sub_if_uge_C_i8:
1724
+ ; RV32I: # %bb.0:
1725
+ ; RV32I-NEXT: sltiu a1, a0, 13
1726
+ ; RV32I-NEXT: addi a1, a1, -1
1727
+ ; RV32I-NEXT: andi a1, a1, -13
1728
+ ; RV32I-NEXT: add a0, a0, a1
1729
+ ; RV32I-NEXT: ret
1730
+ ;
1731
+ ; RV32ZBB-LABEL: sub_if_uge_C_i8:
1732
+ ; RV32ZBB: # %bb.0:
1733
+ ; RV32ZBB-NEXT: addi a1, a0, -13
1734
+ ; RV32ZBB-NEXT: zext.b a1, a1
1735
+ ; RV32ZBB-NEXT: minu a0, a1, a0
1736
+ ; RV32ZBB-NEXT: ret
1730
1737
%cmp = icmp ugt i8 %x , 12
1731
1738
%sub = add i8 %x , -13
1732
1739
%conv4 = select i1 %cmp , i8 %sub , i8 %x
1733
1740
ret i8 %conv4
1734
1741
}
1735
1742
1736
1743
define i16 @sub_if_uge_C_i16 (i16 zeroext %x ) {
1737
- ; CHECK-LABEL: sub_if_uge_C_i16:
1738
- ; CHECK: # %bb.0:
1739
- ; CHECK-NEXT: sltiu a1, a0, 251
1740
- ; CHECK-NEXT: addi a1, a1, -1
1741
- ; CHECK-NEXT: andi a1, a1, -251
1742
- ; CHECK-NEXT: add a0, a0, a1
1743
- ; CHECK-NEXT: ret
1744
+ ; RV32I-LABEL: sub_if_uge_C_i16:
1745
+ ; RV32I: # %bb.0:
1746
+ ; RV32I-NEXT: sltiu a1, a0, 251
1747
+ ; RV32I-NEXT: addi a1, a1, -1
1748
+ ; RV32I-NEXT: andi a1, a1, -251
1749
+ ; RV32I-NEXT: add a0, a0, a1
1750
+ ; RV32I-NEXT: ret
1751
+ ;
1752
+ ; RV32ZBB-LABEL: sub_if_uge_C_i16:
1753
+ ; RV32ZBB: # %bb.0:
1754
+ ; RV32ZBB-NEXT: addi a1, a0, -251
1755
+ ; RV32ZBB-NEXT: zext.h a1, a1
1756
+ ; RV32ZBB-NEXT: minu a0, a1, a0
1757
+ ; RV32ZBB-NEXT: ret
1744
1758
%cmp = icmp ugt i16 %x , 250
1745
1759
%sub = add i16 %x , -251
1746
1760
%conv4 = select i1 %cmp , i16 %sub , i16 %x
1747
1761
ret i16 %conv4
1748
1762
}
1749
1763
1750
1764
define i32 @sub_if_uge_C_i32 (i32 signext %x ) {
1751
- ; CHECK-LABEL: sub_if_uge_C_i32:
1752
- ; CHECK: # %bb.0:
1753
- ; CHECK-NEXT: lui a1, 16
1754
- ; CHECK-NEXT: lui a2, 1048560
1755
- ; CHECK-NEXT: addi a1, a1, -16
1756
- ; CHECK-NEXT: sltu a1, a1, a0
1757
- ; CHECK-NEXT: neg a1, a1
1758
- ; CHECK-NEXT: addi a2, a2, 15
1759
- ; CHECK-NEXT: and a1, a1, a2
1760
- ; CHECK-NEXT: add a0, a0, a1
1761
- ; CHECK-NEXT: ret
1765
+ ; RV32I-LABEL: sub_if_uge_C_i32:
1766
+ ; RV32I: # %bb.0:
1767
+ ; RV32I-NEXT: lui a1, 16
1768
+ ; RV32I-NEXT: lui a2, 1048560
1769
+ ; RV32I-NEXT: addi a1, a1, -16
1770
+ ; RV32I-NEXT: sltu a1, a1, a0
1771
+ ; RV32I-NEXT: neg a1, a1
1772
+ ; RV32I-NEXT: addi a2, a2, 15
1773
+ ; RV32I-NEXT: and a1, a1, a2
1774
+ ; RV32I-NEXT: add a0, a0, a1
1775
+ ; RV32I-NEXT: ret
1776
+ ;
1777
+ ; RV32ZBB-LABEL: sub_if_uge_C_i32:
1778
+ ; RV32ZBB: # %bb.0:
1779
+ ; RV32ZBB-NEXT: lui a1, 1048560
1780
+ ; RV32ZBB-NEXT: addi a1, a1, 15
1781
+ ; RV32ZBB-NEXT: add a1, a0, a1
1782
+ ; RV32ZBB-NEXT: minu a0, a1, a0
1783
+ ; RV32ZBB-NEXT: ret
1762
1784
%cmp = icmp ugt i32 %x , 65520
1763
1785
%sub = add i32 %x , -65521
1764
1786
%cond = select i1 %cmp , i32 %sub , i32 %x
@@ -1797,18 +1819,30 @@ define i64 @sub_if_uge_C_i64(i64 %x) {
1797
1819
}
1798
1820
1799
1821
define i32 @sub_if_uge_C_multiuse_cmp_i32 (i32 signext %x , ptr %z ) {
1800
- ; CHECK-LABEL: sub_if_uge_C_multiuse_cmp_i32:
1801
- ; CHECK: # %bb.0:
1802
- ; CHECK-NEXT: lui a2, 16
1803
- ; CHECK-NEXT: lui a3, 1048560
1804
- ; CHECK-NEXT: addi a2, a2, -16
1805
- ; CHECK-NEXT: sltu a2, a2, a0
1806
- ; CHECK-NEXT: neg a4, a2
1807
- ; CHECK-NEXT: addi a3, a3, 15
1808
- ; CHECK-NEXT: and a3, a4, a3
1809
- ; CHECK-NEXT: add a0, a0, a3
1810
- ; CHECK-NEXT: sw a2, 0(a1)
1811
- ; CHECK-NEXT: ret
1822
+ ; RV32I-LABEL: sub_if_uge_C_multiuse_cmp_i32:
1823
+ ; RV32I: # %bb.0:
1824
+ ; RV32I-NEXT: lui a2, 16
1825
+ ; RV32I-NEXT: lui a3, 1048560
1826
+ ; RV32I-NEXT: addi a2, a2, -16
1827
+ ; RV32I-NEXT: sltu a2, a2, a0
1828
+ ; RV32I-NEXT: neg a4, a2
1829
+ ; RV32I-NEXT: addi a3, a3, 15
1830
+ ; RV32I-NEXT: and a3, a4, a3
1831
+ ; RV32I-NEXT: add a0, a0, a3
1832
+ ; RV32I-NEXT: sw a2, 0(a1)
1833
+ ; RV32I-NEXT: ret
1834
+ ;
1835
+ ; RV32ZBB-LABEL: sub_if_uge_C_multiuse_cmp_i32:
1836
+ ; RV32ZBB: # %bb.0:
1837
+ ; RV32ZBB-NEXT: lui a2, 16
1838
+ ; RV32ZBB-NEXT: lui a3, 1048560
1839
+ ; RV32ZBB-NEXT: addi a2, a2, -16
1840
+ ; RV32ZBB-NEXT: addi a3, a3, 15
1841
+ ; RV32ZBB-NEXT: sltu a2, a2, a0
1842
+ ; RV32ZBB-NEXT: add a3, a0, a3
1843
+ ; RV32ZBB-NEXT: minu a0, a3, a0
1844
+ ; RV32ZBB-NEXT: sw a2, 0(a1)
1845
+ ; RV32ZBB-NEXT: ret
1812
1846
%cmp = icmp ugt i32 %x , 65520
1813
1847
%conv = zext i1 %cmp to i32
1814
1848
store i32 %conv , ptr %z , align 4
@@ -1818,20 +1852,29 @@ define i32 @sub_if_uge_C_multiuse_cmp_i32(i32 signext %x, ptr %z) {
1818
1852
}
1819
1853
1820
1854
define i32 @sub_if_uge_C_multiuse_sub_i32 (i32 signext %x , ptr %z ) {
1821
- ; CHECK-LABEL: sub_if_uge_C_multiuse_sub_i32:
1822
- ; CHECK: # %bb.0:
1823
- ; CHECK-NEXT: lui a2, 1048560
1824
- ; CHECK-NEXT: lui a3, 16
1825
- ; CHECK-NEXT: addi a2, a2, 15
1826
- ; CHECK-NEXT: add a2, a0, a2
1827
- ; CHECK-NEXT: addi a3, a3, -16
1828
- ; CHECK-NEXT: sw a2, 0(a1)
1829
- ; CHECK-NEXT: bltu a3, a0, .LBB62_2
1830
- ; CHECK-NEXT: # %bb.1:
1831
- ; CHECK-NEXT: mv a2, a0
1832
- ; CHECK-NEXT: .LBB62_2:
1833
- ; CHECK-NEXT: mv a0, a2
1834
- ; CHECK-NEXT: ret
1855
+ ; RV32I-LABEL: sub_if_uge_C_multiuse_sub_i32:
1856
+ ; RV32I: # %bb.0:
1857
+ ; RV32I-NEXT: lui a2, 1048560
1858
+ ; RV32I-NEXT: lui a3, 16
1859
+ ; RV32I-NEXT: addi a2, a2, 15
1860
+ ; RV32I-NEXT: add a2, a0, a2
1861
+ ; RV32I-NEXT: addi a3, a3, -16
1862
+ ; RV32I-NEXT: sw a2, 0(a1)
1863
+ ; RV32I-NEXT: bltu a3, a0, .LBB62_2
1864
+ ; RV32I-NEXT: # %bb.1:
1865
+ ; RV32I-NEXT: mv a2, a0
1866
+ ; RV32I-NEXT: .LBB62_2:
1867
+ ; RV32I-NEXT: mv a0, a2
1868
+ ; RV32I-NEXT: ret
1869
+ ;
1870
+ ; RV32ZBB-LABEL: sub_if_uge_C_multiuse_sub_i32:
1871
+ ; RV32ZBB: # %bb.0:
1872
+ ; RV32ZBB-NEXT: lui a2, 1048560
1873
+ ; RV32ZBB-NEXT: addi a2, a2, 15
1874
+ ; RV32ZBB-NEXT: add a2, a0, a2
1875
+ ; RV32ZBB-NEXT: minu a0, a2, a0
1876
+ ; RV32ZBB-NEXT: sw a2, 0(a1)
1877
+ ; RV32ZBB-NEXT: ret
1835
1878
%sub = add i32 %x , -65521
1836
1879
store i32 %sub , ptr %z , align 4
1837
1880
%cmp = icmp ugt i32 %x , 65520
0 commit comments