@@ -56,7 +56,7 @@ define i32 @rotl_32(i32 %x, i32 %y) nounwind {
56
56
; RV64XTHEADBB-LABEL: rotl_32:
57
57
; RV64XTHEADBB: # %bb.0:
58
58
; RV64XTHEADBB-NEXT: sllw a2, a0, a1
59
- ; RV64XTHEADBB-NEXT: neg a1, a1
59
+ ; RV64XTHEADBB-NEXT: negw a1, a1
60
60
; RV64XTHEADBB-NEXT: srlw a0, a0, a1
61
61
; RV64XTHEADBB-NEXT: or a0, a2, a0
62
62
; RV64XTHEADBB-NEXT: ret
@@ -105,7 +105,7 @@ define i32 @rotr_32(i32 %x, i32 %y) nounwind {
105
105
; RV64XTHEADBB-LABEL: rotr_32:
106
106
; RV64XTHEADBB: # %bb.0:
107
107
; RV64XTHEADBB-NEXT: srlw a2, a0, a1
108
- ; RV64XTHEADBB-NEXT: neg a1, a1
108
+ ; RV64XTHEADBB-NEXT: negw a1, a1
109
109
; RV64XTHEADBB-NEXT: sllw a0, a0, a1
110
110
; RV64XTHEADBB-NEXT: or a0, a2, a0
111
111
; RV64XTHEADBB-NEXT: ret
@@ -253,7 +253,7 @@ define i64 @rotl_64(i64 %x, i64 %y) nounwind {
253
253
; RV64XTHEADBB-LABEL: rotl_64:
254
254
; RV64XTHEADBB: # %bb.0:
255
255
; RV64XTHEADBB-NEXT: sll a2, a0, a1
256
- ; RV64XTHEADBB-NEXT: neg a1, a1
256
+ ; RV64XTHEADBB-NEXT: negw a1, a1
257
257
; RV64XTHEADBB-NEXT: srl a0, a0, a1
258
258
; RV64XTHEADBB-NEXT: or a0, a2, a0
259
259
; RV64XTHEADBB-NEXT: ret
@@ -401,7 +401,7 @@ define i64 @rotr_64(i64 %x, i64 %y) nounwind {
401
401
; RV64XTHEADBB-LABEL: rotr_64:
402
402
; RV64XTHEADBB: # %bb.0:
403
403
; RV64XTHEADBB-NEXT: srl a2, a0, a1
404
- ; RV64XTHEADBB-NEXT: neg a1, a1
404
+ ; RV64XTHEADBB-NEXT: negw a1, a1
405
405
; RV64XTHEADBB-NEXT: sll a0, a0, a1
406
406
; RV64XTHEADBB-NEXT: or a0, a2, a0
407
407
; RV64XTHEADBB-NEXT: ret
@@ -450,7 +450,7 @@ define i32 @rotl_32_mask(i32 %x, i32 %y) nounwind {
450
450
; RV64XTHEADBB-LABEL: rotl_32_mask:
451
451
; RV64XTHEADBB: # %bb.0:
452
452
; RV64XTHEADBB-NEXT: sllw a2, a0, a1
453
- ; RV64XTHEADBB-NEXT: neg a1, a1
453
+ ; RV64XTHEADBB-NEXT: negw a1, a1
454
454
; RV64XTHEADBB-NEXT: srlw a0, a0, a1
455
455
; RV64XTHEADBB-NEXT: or a0, a2, a0
456
456
; RV64XTHEADBB-NEXT: ret
@@ -500,7 +500,7 @@ define i32 @rotl_32_mask_and_63_and_31(i32 %x, i32 %y) nounwind {
500
500
; RV64XTHEADBB-LABEL: rotl_32_mask_and_63_and_31:
501
501
; RV64XTHEADBB: # %bb.0:
502
502
; RV64XTHEADBB-NEXT: sllw a2, a0, a1
503
- ; RV64XTHEADBB-NEXT: neg a1, a1
503
+ ; RV64XTHEADBB-NEXT: negw a1, a1
504
504
; RV64XTHEADBB-NEXT: srlw a0, a0, a1
505
505
; RV64XTHEADBB-NEXT: or a0, a2, a0
506
506
; RV64XTHEADBB-NEXT: ret
@@ -548,7 +548,7 @@ define i32 @rotl_32_mask_or_64_or_32(i32 %x, i32 %y) nounwind {
548
548
; RV64XTHEADBB-LABEL: rotl_32_mask_or_64_or_32:
549
549
; RV64XTHEADBB: # %bb.0:
550
550
; RV64XTHEADBB-NEXT: sllw a2, a0, a1
551
- ; RV64XTHEADBB-NEXT: neg a1, a1
551
+ ; RV64XTHEADBB-NEXT: negw a1, a1
552
552
; RV64XTHEADBB-NEXT: srlw a0, a0, a1
553
553
; RV64XTHEADBB-NEXT: or a0, a2, a0
554
554
; RV64XTHEADBB-NEXT: ret
@@ -599,7 +599,7 @@ define i32 @rotr_32_mask(i32 %x, i32 %y) nounwind {
599
599
; RV64XTHEADBB-LABEL: rotr_32_mask:
600
600
; RV64XTHEADBB: # %bb.0:
601
601
; RV64XTHEADBB-NEXT: srlw a2, a0, a1
602
- ; RV64XTHEADBB-NEXT: neg a1, a1
602
+ ; RV64XTHEADBB-NEXT: negw a1, a1
603
603
; RV64XTHEADBB-NEXT: sllw a0, a0, a1
604
604
; RV64XTHEADBB-NEXT: or a0, a2, a0
605
605
; RV64XTHEADBB-NEXT: ret
@@ -649,7 +649,7 @@ define i32 @rotr_32_mask_and_63_and_31(i32 %x, i32 %y) nounwind {
649
649
; RV64XTHEADBB-LABEL: rotr_32_mask_and_63_and_31:
650
650
; RV64XTHEADBB: # %bb.0:
651
651
; RV64XTHEADBB-NEXT: srlw a2, a0, a1
652
- ; RV64XTHEADBB-NEXT: neg a1, a1
652
+ ; RV64XTHEADBB-NEXT: negw a1, a1
653
653
; RV64XTHEADBB-NEXT: sllw a0, a0, a1
654
654
; RV64XTHEADBB-NEXT: or a0, a2, a0
655
655
; RV64XTHEADBB-NEXT: ret
@@ -695,7 +695,7 @@ define i32 @rotr_32_mask_or_64_or_32(i32 %x, i32 %y) nounwind {
695
695
; RV64XTHEADBB-LABEL: rotr_32_mask_or_64_or_32:
696
696
; RV64XTHEADBB: # %bb.0:
697
697
; RV64XTHEADBB-NEXT: srlw a2, a0, a1
698
- ; RV64XTHEADBB-NEXT: neg a1, a1
698
+ ; RV64XTHEADBB-NEXT: negw a1, a1
699
699
; RV64XTHEADBB-NEXT: sllw a0, a0, a1
700
700
; RV64XTHEADBB-NEXT: or a0, a2, a0
701
701
; RV64XTHEADBB-NEXT: ret
@@ -839,7 +839,7 @@ define i64 @rotl_64_mask(i64 %x, i64 %y) nounwind {
839
839
; RV64XTHEADBB-LABEL: rotl_64_mask:
840
840
; RV64XTHEADBB: # %bb.0:
841
841
; RV64XTHEADBB-NEXT: sll a2, a0, a1
842
- ; RV64XTHEADBB-NEXT: neg a1, a1
842
+ ; RV64XTHEADBB-NEXT: negw a1, a1
843
843
; RV64XTHEADBB-NEXT: srl a0, a0, a1
844
844
; RV64XTHEADBB-NEXT: or a0, a2, a0
845
845
; RV64XTHEADBB-NEXT: ret
@@ -985,7 +985,7 @@ define i64 @rotl_64_mask_and_127_and_63(i64 %x, i64 %y) nounwind {
985
985
; RV64XTHEADBB-LABEL: rotl_64_mask_and_127_and_63:
986
986
; RV64XTHEADBB: # %bb.0:
987
987
; RV64XTHEADBB-NEXT: sll a2, a0, a1
988
- ; RV64XTHEADBB-NEXT: neg a1, a1
988
+ ; RV64XTHEADBB-NEXT: negw a1, a1
989
989
; RV64XTHEADBB-NEXT: srl a0, a0, a1
990
990
; RV64XTHEADBB-NEXT: or a0, a2, a0
991
991
; RV64XTHEADBB-NEXT: ret
@@ -1035,7 +1035,7 @@ define i64 @rotl_64_mask_or_128_or_64(i64 %x, i64 %y) nounwind {
1035
1035
; RV64XTHEADBB-LABEL: rotl_64_mask_or_128_or_64:
1036
1036
; RV64XTHEADBB: # %bb.0:
1037
1037
; RV64XTHEADBB-NEXT: sll a2, a0, a1
1038
- ; RV64XTHEADBB-NEXT: neg a1, a1
1038
+ ; RV64XTHEADBB-NEXT: negw a1, a1
1039
1039
; RV64XTHEADBB-NEXT: srl a0, a0, a1
1040
1040
; RV64XTHEADBB-NEXT: or a0, a2, a0
1041
1041
; RV64XTHEADBB-NEXT: ret
@@ -1179,7 +1179,7 @@ define i64 @rotr_64_mask(i64 %x, i64 %y) nounwind {
1179
1179
; RV64XTHEADBB-LABEL: rotr_64_mask:
1180
1180
; RV64XTHEADBB: # %bb.0:
1181
1181
; RV64XTHEADBB-NEXT: srl a2, a0, a1
1182
- ; RV64XTHEADBB-NEXT: neg a1, a1
1182
+ ; RV64XTHEADBB-NEXT: negw a1, a1
1183
1183
; RV64XTHEADBB-NEXT: sll a0, a0, a1
1184
1184
; RV64XTHEADBB-NEXT: or a0, a2, a0
1185
1185
; RV64XTHEADBB-NEXT: ret
@@ -1325,7 +1325,7 @@ define i64 @rotr_64_mask_and_127_and_63(i64 %x, i64 %y) nounwind {
1325
1325
; RV64XTHEADBB-LABEL: rotr_64_mask_and_127_and_63:
1326
1326
; RV64XTHEADBB: # %bb.0:
1327
1327
; RV64XTHEADBB-NEXT: srl a2, a0, a1
1328
- ; RV64XTHEADBB-NEXT: neg a1, a1
1328
+ ; RV64XTHEADBB-NEXT: negw a1, a1
1329
1329
; RV64XTHEADBB-NEXT: sll a0, a0, a1
1330
1330
; RV64XTHEADBB-NEXT: or a0, a2, a0
1331
1331
; RV64XTHEADBB-NEXT: ret
@@ -1371,7 +1371,7 @@ define i64 @rotr_64_mask_or_128_or_64(i64 %x, i64 %y) nounwind {
1371
1371
; RV64XTHEADBB-LABEL: rotr_64_mask_or_128_or_64:
1372
1372
; RV64XTHEADBB: # %bb.0:
1373
1373
; RV64XTHEADBB-NEXT: srl a2, a0, a1
1374
- ; RV64XTHEADBB-NEXT: neg a1, a1
1374
+ ; RV64XTHEADBB-NEXT: negw a1, a1
1375
1375
; RV64XTHEADBB-NEXT: sll a0, a0, a1
1376
1376
; RV64XTHEADBB-NEXT: or a0, a2, a0
1377
1377
; RV64XTHEADBB-NEXT: ret
@@ -1423,19 +1423,18 @@ define signext i32 @rotl_32_mask_shared(i32 signext %a, i32 signext %b, i32 sign
1423
1423
;
1424
1424
; RV32XTHEADBB-LABEL: rotl_32_mask_shared:
1425
1425
; RV32XTHEADBB: # %bb.0:
1426
- ; RV32XTHEADBB-NEXT: andi a3, a2, 31
1427
- ; RV32XTHEADBB-NEXT: sll a4, a0, a3
1428
- ; RV32XTHEADBB-NEXT: neg a3, a3
1429
- ; RV32XTHEADBB-NEXT: srl a0, a0, a3
1430
- ; RV32XTHEADBB-NEXT: or a0, a4, a0
1426
+ ; RV32XTHEADBB-NEXT: sll a3, a0, a2
1427
+ ; RV32XTHEADBB-NEXT: neg a4, a2
1428
+ ; RV32XTHEADBB-NEXT: srl a0, a0, a4
1429
+ ; RV32XTHEADBB-NEXT: or a0, a3, a0
1431
1430
; RV32XTHEADBB-NEXT: sll a1, a1, a2
1432
1431
; RV32XTHEADBB-NEXT: add a0, a0, a1
1433
1432
; RV32XTHEADBB-NEXT: ret
1434
1433
;
1435
1434
; RV64XTHEADBB-LABEL: rotl_32_mask_shared:
1436
1435
; RV64XTHEADBB: # %bb.0:
1437
1436
; RV64XTHEADBB-NEXT: sllw a3, a0, a2
1438
- ; RV64XTHEADBB-NEXT: neg a4, a2
1437
+ ; RV64XTHEADBB-NEXT: negw a4, a2
1439
1438
; RV64XTHEADBB-NEXT: srlw a0, a0, a4
1440
1439
; RV64XTHEADBB-NEXT: or a0, a3, a0
1441
1440
; RV64XTHEADBB-NEXT: sllw a1, a1, a2
@@ -1600,11 +1599,10 @@ define signext i64 @rotl_64_mask_shared(i64 signext %a, i64 signext %b, i64 sign
1600
1599
;
1601
1600
; RV64XTHEADBB-LABEL: rotl_64_mask_shared:
1602
1601
; RV64XTHEADBB: # %bb.0:
1603
- ; RV64XTHEADBB-NEXT: andi a3, a2, 63
1604
- ; RV64XTHEADBB-NEXT: sll a4, a0, a3
1605
- ; RV64XTHEADBB-NEXT: neg a3, a3
1606
- ; RV64XTHEADBB-NEXT: srl a0, a0, a3
1607
- ; RV64XTHEADBB-NEXT: or a0, a4, a0
1602
+ ; RV64XTHEADBB-NEXT: sll a3, a0, a2
1603
+ ; RV64XTHEADBB-NEXT: negw a4, a2
1604
+ ; RV64XTHEADBB-NEXT: srl a0, a0, a4
1605
+ ; RV64XTHEADBB-NEXT: or a0, a3, a0
1608
1606
; RV64XTHEADBB-NEXT: sll a1, a1, a2
1609
1607
; RV64XTHEADBB-NEXT: add a0, a0, a1
1610
1608
; RV64XTHEADBB-NEXT: ret
@@ -1653,19 +1651,18 @@ define signext i32 @rotr_32_mask_shared(i32 signext %a, i32 signext %b, i32 sign
1653
1651
;
1654
1652
; RV32XTHEADBB-LABEL: rotr_32_mask_shared:
1655
1653
; RV32XTHEADBB: # %bb.0:
1656
- ; RV32XTHEADBB-NEXT: andi a3, a2, 31
1657
- ; RV32XTHEADBB-NEXT: srl a4, a0, a3
1658
- ; RV32XTHEADBB-NEXT: neg a3, a3
1659
- ; RV32XTHEADBB-NEXT: sll a0, a0, a3
1660
- ; RV32XTHEADBB-NEXT: or a0, a4, a0
1654
+ ; RV32XTHEADBB-NEXT: srl a3, a0, a2
1655
+ ; RV32XTHEADBB-NEXT: neg a4, a2
1656
+ ; RV32XTHEADBB-NEXT: sll a0, a0, a4
1657
+ ; RV32XTHEADBB-NEXT: or a0, a3, a0
1661
1658
; RV32XTHEADBB-NEXT: sll a1, a1, a2
1662
1659
; RV32XTHEADBB-NEXT: add a0, a0, a1
1663
1660
; RV32XTHEADBB-NEXT: ret
1664
1661
;
1665
1662
; RV64XTHEADBB-LABEL: rotr_32_mask_shared:
1666
1663
; RV64XTHEADBB: # %bb.0:
1667
1664
; RV64XTHEADBB-NEXT: srlw a3, a0, a2
1668
- ; RV64XTHEADBB-NEXT: neg a4, a2
1665
+ ; RV64XTHEADBB-NEXT: negw a4, a2
1669
1666
; RV64XTHEADBB-NEXT: sllw a0, a0, a4
1670
1667
; RV64XTHEADBB-NEXT: or a0, a3, a0
1671
1668
; RV64XTHEADBB-NEXT: sllw a1, a1, a2
@@ -1828,11 +1825,10 @@ define signext i64 @rotr_64_mask_shared(i64 signext %a, i64 signext %b, i64 sign
1828
1825
;
1829
1826
; RV64XTHEADBB-LABEL: rotr_64_mask_shared:
1830
1827
; RV64XTHEADBB: # %bb.0:
1831
- ; RV64XTHEADBB-NEXT: andi a3, a2, 63
1832
- ; RV64XTHEADBB-NEXT: srl a4, a0, a3
1833
- ; RV64XTHEADBB-NEXT: neg a3, a3
1834
- ; RV64XTHEADBB-NEXT: sll a0, a0, a3
1835
- ; RV64XTHEADBB-NEXT: or a0, a4, a0
1828
+ ; RV64XTHEADBB-NEXT: srl a3, a0, a2
1829
+ ; RV64XTHEADBB-NEXT: negw a4, a2
1830
+ ; RV64XTHEADBB-NEXT: sll a0, a0, a4
1831
+ ; RV64XTHEADBB-NEXT: or a0, a3, a0
1836
1832
; RV64XTHEADBB-NEXT: sll a1, a1, a2
1837
1833
; RV64XTHEADBB-NEXT: add a0, a0, a1
1838
1834
; RV64XTHEADBB-NEXT: ret
@@ -1885,7 +1881,6 @@ define signext i32 @rotl_32_mask_multiple(i32 signext %a, i32 signext %b, i32 si
1885
1881
;
1886
1882
; RV32XTHEADBB-LABEL: rotl_32_mask_multiple:
1887
1883
; RV32XTHEADBB: # %bb.0:
1888
- ; RV32XTHEADBB-NEXT: andi a2, a2, 31
1889
1884
; RV32XTHEADBB-NEXT: sll a3, a0, a2
1890
1885
; RV32XTHEADBB-NEXT: neg a4, a2
1891
1886
; RV32XTHEADBB-NEXT: srl a0, a0, a4
@@ -1898,9 +1893,8 @@ define signext i32 @rotl_32_mask_multiple(i32 signext %a, i32 signext %b, i32 si
1898
1893
;
1899
1894
; RV64XTHEADBB-LABEL: rotl_32_mask_multiple:
1900
1895
; RV64XTHEADBB: # %bb.0:
1901
- ; RV64XTHEADBB-NEXT: andi a2, a2, 31
1902
1896
; RV64XTHEADBB-NEXT: sllw a3, a0, a2
1903
- ; RV64XTHEADBB-NEXT: neg a4, a2
1897
+ ; RV64XTHEADBB-NEXT: negw a4, a2
1904
1898
; RV64XTHEADBB-NEXT: srlw a0, a0, a4
1905
1899
; RV64XTHEADBB-NEXT: or a0, a3, a0
1906
1900
; RV64XTHEADBB-NEXT: sllw a2, a1, a2
@@ -2071,9 +2065,8 @@ define i64 @rotl_64_mask_multiple(i64 %a, i64 %b, i64 %amt) nounwind {
2071
2065
;
2072
2066
; RV64XTHEADBB-LABEL: rotl_64_mask_multiple:
2073
2067
; RV64XTHEADBB: # %bb.0:
2074
- ; RV64XTHEADBB-NEXT: andi a2, a2, 63
2075
2068
; RV64XTHEADBB-NEXT: sll a3, a0, a2
2076
- ; RV64XTHEADBB-NEXT: neg a4, a2
2069
+ ; RV64XTHEADBB-NEXT: negw a4, a2
2077
2070
; RV64XTHEADBB-NEXT: srl a0, a0, a4
2078
2071
; RV64XTHEADBB-NEXT: or a0, a3, a0
2079
2072
; RV64XTHEADBB-NEXT: sll a2, a1, a2
@@ -2129,7 +2122,6 @@ define signext i32 @rotr_32_mask_multiple(i32 signext %a, i32 signext %b, i32 si
2129
2122
;
2130
2123
; RV32XTHEADBB-LABEL: rotr_32_mask_multiple:
2131
2124
; RV32XTHEADBB: # %bb.0:
2132
- ; RV32XTHEADBB-NEXT: andi a2, a2, 31
2133
2125
; RV32XTHEADBB-NEXT: srl a3, a0, a2
2134
2126
; RV32XTHEADBB-NEXT: neg a4, a2
2135
2127
; RV32XTHEADBB-NEXT: sll a0, a0, a4
@@ -2142,9 +2134,8 @@ define signext i32 @rotr_32_mask_multiple(i32 signext %a, i32 signext %b, i32 si
2142
2134
;
2143
2135
; RV64XTHEADBB-LABEL: rotr_32_mask_multiple:
2144
2136
; RV64XTHEADBB: # %bb.0:
2145
- ; RV64XTHEADBB-NEXT: andi a2, a2, 31
2146
2137
; RV64XTHEADBB-NEXT: srlw a3, a0, a2
2147
- ; RV64XTHEADBB-NEXT: neg a4, a2
2138
+ ; RV64XTHEADBB-NEXT: negw a4, a2
2148
2139
; RV64XTHEADBB-NEXT: sllw a0, a0, a4
2149
2140
; RV64XTHEADBB-NEXT: or a0, a3, a0
2150
2141
; RV64XTHEADBB-NEXT: srlw a2, a1, a2
@@ -2313,9 +2304,8 @@ define i64 @rotr_64_mask_multiple(i64 %a, i64 %b, i64 %amt) nounwind {
2313
2304
;
2314
2305
; RV64XTHEADBB-LABEL: rotr_64_mask_multiple:
2315
2306
; RV64XTHEADBB: # %bb.0:
2316
- ; RV64XTHEADBB-NEXT: andi a2, a2, 63
2317
2307
; RV64XTHEADBB-NEXT: srl a3, a0, a2
2318
- ; RV64XTHEADBB-NEXT: neg a4, a2
2308
+ ; RV64XTHEADBB-NEXT: negw a4, a2
2319
2309
; RV64XTHEADBB-NEXT: sll a0, a0, a4
2320
2310
; RV64XTHEADBB-NEXT: or a0, a3, a0
2321
2311
; RV64XTHEADBB-NEXT: srl a2, a1, a2
@@ -2467,7 +2457,7 @@ define i64 @rotl_64_zext(i64 %x, i32 %y) nounwind {
2467
2457
; RV64XTHEADBB-LABEL: rotl_64_zext:
2468
2458
; RV64XTHEADBB: # %bb.0:
2469
2459
; RV64XTHEADBB-NEXT: sll a2, a0, a1
2470
- ; RV64XTHEADBB-NEXT: neg a1, a1
2460
+ ; RV64XTHEADBB-NEXT: negw a1, a1
2471
2461
; RV64XTHEADBB-NEXT: srl a0, a0, a1
2472
2462
; RV64XTHEADBB-NEXT: or a0, a2, a0
2473
2463
; RV64XTHEADBB-NEXT: ret
@@ -2617,7 +2607,7 @@ define i64 @rotr_64_zext(i64 %x, i32 %y) nounwind {
2617
2607
; RV64XTHEADBB-LABEL: rotr_64_zext:
2618
2608
; RV64XTHEADBB: # %bb.0:
2619
2609
; RV64XTHEADBB-NEXT: srl a2, a0, a1
2620
- ; RV64XTHEADBB-NEXT: neg a1, a1
2610
+ ; RV64XTHEADBB-NEXT: negw a1, a1
2621
2611
; RV64XTHEADBB-NEXT: sll a0, a0, a1
2622
2612
; RV64XTHEADBB-NEXT: or a0, a2, a0
2623
2613
; RV64XTHEADBB-NEXT: ret
0 commit comments