@@ -997,26 +997,23 @@ define i1 @saddo.not.i32(i32 signext %v1, i32 signext %v2) {
997
997
; RV64-NEXT: addw a2, a0, a1
998
998
; RV64-NEXT: add a0, a0, a1
999
999
; RV64-NEXT: xor a0, a0, a2
1000
- ; RV64-NEXT: snez a0, a0
1001
- ; RV64-NEXT: xori a0, a0, 1
1000
+ ; RV64-NEXT: seqz a0, a0
1002
1001
; RV64-NEXT: ret
1003
1002
;
1004
1003
; RV64ZBA-LABEL: saddo.not.i32:
1005
1004
; RV64ZBA: # %bb.0: # %entry
1006
1005
; RV64ZBA-NEXT: addw a2, a0, a1
1007
1006
; RV64ZBA-NEXT: add a0, a0, a1
1008
1007
; RV64ZBA-NEXT: xor a0, a0, a2
1009
- ; RV64ZBA-NEXT: snez a0, a0
1010
- ; RV64ZBA-NEXT: xori a0, a0, 1
1008
+ ; RV64ZBA-NEXT: seqz a0, a0
1011
1009
; RV64ZBA-NEXT: ret
1012
1010
;
1013
1011
; RV64ZICOND-LABEL: saddo.not.i32:
1014
1012
; RV64ZICOND: # %bb.0: # %entry
1015
1013
; RV64ZICOND-NEXT: addw a2, a0, a1
1016
1014
; RV64ZICOND-NEXT: add a0, a0, a1
1017
1015
; RV64ZICOND-NEXT: xor a0, a0, a2
1018
- ; RV64ZICOND-NEXT: snez a0, a0
1019
- ; RV64ZICOND-NEXT: xori a0, a0, 1
1016
+ ; RV64ZICOND-NEXT: seqz a0, a0
1020
1017
; RV64ZICOND-NEXT: ret
1021
1018
entry:
1022
1019
%t = call {i32 , i1 } @llvm.sadd.with.overflow.i32 (i32 %v1 , i32 %v2 )
@@ -1266,26 +1263,23 @@ define i1 @ssubo.not.i32(i32 signext %v1, i32 signext %v2) {
1266
1263
; RV64-NEXT: subw a2, a0, a1
1267
1264
; RV64-NEXT: sub a0, a0, a1
1268
1265
; RV64-NEXT: xor a0, a0, a2
1269
- ; RV64-NEXT: snez a0, a0
1270
- ; RV64-NEXT: xori a0, a0, 1
1266
+ ; RV64-NEXT: seqz a0, a0
1271
1267
; RV64-NEXT: ret
1272
1268
;
1273
1269
; RV64ZBA-LABEL: ssubo.not.i32:
1274
1270
; RV64ZBA: # %bb.0: # %entry
1275
1271
; RV64ZBA-NEXT: subw a2, a0, a1
1276
1272
; RV64ZBA-NEXT: sub a0, a0, a1
1277
1273
; RV64ZBA-NEXT: xor a0, a0, a2
1278
- ; RV64ZBA-NEXT: snez a0, a0
1279
- ; RV64ZBA-NEXT: xori a0, a0, 1
1274
+ ; RV64ZBA-NEXT: seqz a0, a0
1280
1275
; RV64ZBA-NEXT: ret
1281
1276
;
1282
1277
; RV64ZICOND-LABEL: ssubo.not.i32:
1283
1278
; RV64ZICOND: # %bb.0: # %entry
1284
1279
; RV64ZICOND-NEXT: subw a2, a0, a1
1285
1280
; RV64ZICOND-NEXT: sub a0, a0, a1
1286
1281
; RV64ZICOND-NEXT: xor a0, a0, a2
1287
- ; RV64ZICOND-NEXT: snez a0, a0
1288
- ; RV64ZICOND-NEXT: xori a0, a0, 1
1282
+ ; RV64ZICOND-NEXT: seqz a0, a0
1289
1283
; RV64ZICOND-NEXT: ret
1290
1284
entry:
1291
1285
%t = call {i32 , i1 } @llvm.ssub.with.overflow.i32 (i32 %v1 , i32 %v2 )
@@ -1535,26 +1529,23 @@ define i1 @smulo.not.i32(i32 signext %v1, i32 signext %v2) {
1535
1529
; RV64-NEXT: mulw a2, a0, a1
1536
1530
; RV64-NEXT: mul a0, a0, a1
1537
1531
; RV64-NEXT: xor a0, a0, a2
1538
- ; RV64-NEXT: snez a0, a0
1539
- ; RV64-NEXT: xori a0, a0, 1
1532
+ ; RV64-NEXT: seqz a0, a0
1540
1533
; RV64-NEXT: ret
1541
1534
;
1542
1535
; RV64ZBA-LABEL: smulo.not.i32:
1543
1536
; RV64ZBA: # %bb.0: # %entry
1544
1537
; RV64ZBA-NEXT: mulw a2, a0, a1
1545
1538
; RV64ZBA-NEXT: mul a0, a0, a1
1546
1539
; RV64ZBA-NEXT: xor a0, a0, a2
1547
- ; RV64ZBA-NEXT: snez a0, a0
1548
- ; RV64ZBA-NEXT: xori a0, a0, 1
1540
+ ; RV64ZBA-NEXT: seqz a0, a0
1549
1541
; RV64ZBA-NEXT: ret
1550
1542
;
1551
1543
; RV64ZICOND-LABEL: smulo.not.i32:
1552
1544
; RV64ZICOND: # %bb.0: # %entry
1553
1545
; RV64ZICOND-NEXT: mulw a2, a0, a1
1554
1546
; RV64ZICOND-NEXT: mul a0, a0, a1
1555
1547
; RV64ZICOND-NEXT: xor a0, a0, a2
1556
- ; RV64ZICOND-NEXT: snez a0, a0
1557
- ; RV64ZICOND-NEXT: xori a0, a0, 1
1548
+ ; RV64ZICOND-NEXT: seqz a0, a0
1558
1549
; RV64ZICOND-NEXT: ret
1559
1550
entry:
1560
1551
%t = call {i32 , i1 } @llvm.smul.with.overflow.i32 (i32 %v1 , i32 %v2 )
@@ -1610,8 +1601,7 @@ define i1 @smulo.not.i64(i64 %v1, i64 %v2) {
1610
1601
; RV64-NEXT: mul a0, a0, a1
1611
1602
; RV64-NEXT: srai a0, a0, 63
1612
1603
; RV64-NEXT: xor a0, a2, a0
1613
- ; RV64-NEXT: snez a0, a0
1614
- ; RV64-NEXT: xori a0, a0, 1
1604
+ ; RV64-NEXT: seqz a0, a0
1615
1605
; RV64-NEXT: ret
1616
1606
;
1617
1607
; RV64ZBA-LABEL: smulo.not.i64:
@@ -1620,8 +1610,7 @@ define i1 @smulo.not.i64(i64 %v1, i64 %v2) {
1620
1610
; RV64ZBA-NEXT: mul a0, a0, a1
1621
1611
; RV64ZBA-NEXT: srai a0, a0, 63
1622
1612
; RV64ZBA-NEXT: xor a0, a2, a0
1623
- ; RV64ZBA-NEXT: snez a0, a0
1624
- ; RV64ZBA-NEXT: xori a0, a0, 1
1613
+ ; RV64ZBA-NEXT: seqz a0, a0
1625
1614
; RV64ZBA-NEXT: ret
1626
1615
;
1627
1616
; RV64ZICOND-LABEL: smulo.not.i64:
@@ -1630,8 +1619,7 @@ define i1 @smulo.not.i64(i64 %v1, i64 %v2) {
1630
1619
; RV64ZICOND-NEXT: mul a0, a0, a1
1631
1620
; RV64ZICOND-NEXT: srai a0, a0, 63
1632
1621
; RV64ZICOND-NEXT: xor a0, a2, a0
1633
- ; RV64ZICOND-NEXT: snez a0, a0
1634
- ; RV64ZICOND-NEXT: xori a0, a0, 1
1622
+ ; RV64ZICOND-NEXT: seqz a0, a0
1635
1623
; RV64ZICOND-NEXT: ret
1636
1624
entry:
1637
1625
%t = call {i64 , i1 } @llvm.smul.with.overflow.i64 (i64 %v1 , i64 %v2 )
@@ -1689,8 +1677,7 @@ define i1 @umulo.not.i32(i32 signext %v1, i32 signext %v2) {
1689
1677
; RV64-NEXT: slli a0, a0, 32
1690
1678
; RV64-NEXT: mulhu a0, a0, a1
1691
1679
; RV64-NEXT: srai a0, a0, 32
1692
- ; RV64-NEXT: snez a0, a0
1693
- ; RV64-NEXT: xori a0, a0, 1
1680
+ ; RV64-NEXT: seqz a0, a0
1694
1681
; RV64-NEXT: ret
1695
1682
;
1696
1683
; RV64ZBA-LABEL: umulo.not.i32:
@@ -1699,8 +1686,7 @@ define i1 @umulo.not.i32(i32 signext %v1, i32 signext %v2) {
1699
1686
; RV64ZBA-NEXT: zext.w a0, a0
1700
1687
; RV64ZBA-NEXT: mul a0, a0, a1
1701
1688
; RV64ZBA-NEXT: srai a0, a0, 32
1702
- ; RV64ZBA-NEXT: snez a0, a0
1703
- ; RV64ZBA-NEXT: xori a0, a0, 1
1689
+ ; RV64ZBA-NEXT: seqz a0, a0
1704
1690
; RV64ZBA-NEXT: ret
1705
1691
;
1706
1692
; RV64ZICOND-LABEL: umulo.not.i32:
@@ -1709,8 +1695,7 @@ define i1 @umulo.not.i32(i32 signext %v1, i32 signext %v2) {
1709
1695
; RV64ZICOND-NEXT: slli a0, a0, 32
1710
1696
; RV64ZICOND-NEXT: mulhu a0, a0, a1
1711
1697
; RV64ZICOND-NEXT: srai a0, a0, 32
1712
- ; RV64ZICOND-NEXT: snez a0, a0
1713
- ; RV64ZICOND-NEXT: xori a0, a0, 1
1698
+ ; RV64ZICOND-NEXT: seqz a0, a0
1714
1699
; RV64ZICOND-NEXT: ret
1715
1700
entry:
1716
1701
%t = call {i32 , i1 } @llvm.umul.with.overflow.i32 (i32 %v1 , i32 %v2 )
@@ -1756,22 +1741,19 @@ define i1 @umulo.not.i64(i64 %v1, i64 %v2) {
1756
1741
; RV64-LABEL: umulo.not.i64:
1757
1742
; RV64: # %bb.0: # %entry
1758
1743
; RV64-NEXT: mulhu a0, a0, a1
1759
- ; RV64-NEXT: snez a0, a0
1760
- ; RV64-NEXT: xori a0, a0, 1
1744
+ ; RV64-NEXT: seqz a0, a0
1761
1745
; RV64-NEXT: ret
1762
1746
;
1763
1747
; RV64ZBA-LABEL: umulo.not.i64:
1764
1748
; RV64ZBA: # %bb.0: # %entry
1765
1749
; RV64ZBA-NEXT: mulhu a0, a0, a1
1766
- ; RV64ZBA-NEXT: snez a0, a0
1767
- ; RV64ZBA-NEXT: xori a0, a0, 1
1750
+ ; RV64ZBA-NEXT: seqz a0, a0
1768
1751
; RV64ZBA-NEXT: ret
1769
1752
;
1770
1753
; RV64ZICOND-LABEL: umulo.not.i64:
1771
1754
; RV64ZICOND: # %bb.0: # %entry
1772
1755
; RV64ZICOND-NEXT: mulhu a0, a0, a1
1773
- ; RV64ZICOND-NEXT: snez a0, a0
1774
- ; RV64ZICOND-NEXT: xori a0, a0, 1
1756
+ ; RV64ZICOND-NEXT: seqz a0, a0
1775
1757
; RV64ZICOND-NEXT: ret
1776
1758
entry:
1777
1759
%t = call {i64 , i1 } @llvm.umul.with.overflow.i64 (i64 %v1 , i64 %v2 )
0 commit comments