@@ -1157,60 +1157,44 @@ define i64 @imm_2reg_1() nounwind {
1157
1157
; RV32I-NEXT: lui a1, 983040
1158
1158
; RV32I-NEXT: ret
1159
1159
;
1160
- ; RV64-NOPOOL-LABEL: imm_2reg_1:
1161
- ; RV64-NOPOOL: # %bb.0:
1162
- ; RV64-NOPOOL-NEXT: lui a0, 1048430
1163
- ; RV64-NOPOOL-NEXT: addiw a0, a0, 1493
1164
- ; RV64-NOPOOL-NEXT: slli a0, a0, 13
1165
- ; RV64-NOPOOL-NEXT: addi a0, a0, -1921
1166
- ; RV64-NOPOOL-NEXT: srli a0, a0, 4
1167
- ; RV64-NOPOOL-NEXT: not a0, a0
1168
- ; RV64-NOPOOL-NEXT: ret
1169
- ;
1170
- ; RV64I-POOL-LABEL: imm_2reg_1:
1171
- ; RV64I-POOL: # %bb.0:
1172
- ; RV64I-POOL-NEXT: lui a0, %hi(.LCPI27_0)
1173
- ; RV64I-POOL-NEXT: ld a0, %lo(.LCPI27_0)(a0)
1174
- ; RV64I-POOL-NEXT: ret
1160
+ ; RV64I-LABEL: imm_2reg_1:
1161
+ ; RV64I: # %bb.0:
1162
+ ; RV64I-NEXT: lui a0, 74565
1163
+ ; RV64I-NEXT: addiw a0, a0, 1656
1164
+ ; RV64I-NEXT: slli a1, a0, 57
1165
+ ; RV64I-NEXT: add a0, a0, a1
1166
+ ; RV64I-NEXT: ret
1175
1167
;
1176
1168
; RV64IZBA-LABEL: imm_2reg_1:
1177
1169
; RV64IZBA: # %bb.0:
1178
- ; RV64IZBA-NEXT: lui a0, 1048430
1179
- ; RV64IZBA-NEXT: addiw a0, a0, 1493
1180
- ; RV64IZBA-NEXT: slli a0, a0, 13
1181
- ; RV64IZBA-NEXT: addi a0, a0, -1921
1182
- ; RV64IZBA-NEXT: srli a0, a0, 4
1183
- ; RV64IZBA-NEXT: not a0, a0
1170
+ ; RV64IZBA-NEXT: lui a0, 74565
1171
+ ; RV64IZBA-NEXT: addiw a0, a0, 1656
1172
+ ; RV64IZBA-NEXT: slli a1, a0, 57
1173
+ ; RV64IZBA-NEXT: add a0, a0, a1
1184
1174
; RV64IZBA-NEXT: ret
1185
1175
;
1186
1176
; RV64IZBB-LABEL: imm_2reg_1:
1187
1177
; RV64IZBB: # %bb.0:
1188
- ; RV64IZBB-NEXT: lui a0, 1048430
1189
- ; RV64IZBB-NEXT: addiw a0, a0, 1493
1190
- ; RV64IZBB-NEXT: slli a0, a0, 13
1191
- ; RV64IZBB-NEXT: addi a0, a0, -1921
1192
- ; RV64IZBB-NEXT: srli a0, a0, 4
1193
- ; RV64IZBB-NEXT: not a0, a0
1178
+ ; RV64IZBB-NEXT: lui a0, 74565
1179
+ ; RV64IZBB-NEXT: addiw a0, a0, 1656
1180
+ ; RV64IZBB-NEXT: slli a1, a0, 57
1181
+ ; RV64IZBB-NEXT: add a0, a0, a1
1194
1182
; RV64IZBB-NEXT: ret
1195
1183
;
1196
1184
; RV64IZBS-LABEL: imm_2reg_1:
1197
1185
; RV64IZBS: # %bb.0:
1198
- ; RV64IZBS-NEXT: lui a0, 1048430
1199
- ; RV64IZBS-NEXT: addiw a0, a0, 1493
1200
- ; RV64IZBS-NEXT: slli a0, a0, 13
1201
- ; RV64IZBS-NEXT: addi a0, a0, -1921
1202
- ; RV64IZBS-NEXT: srli a0, a0, 4
1203
- ; RV64IZBS-NEXT: not a0, a0
1186
+ ; RV64IZBS-NEXT: lui a0, 74565
1187
+ ; RV64IZBS-NEXT: addiw a0, a0, 1656
1188
+ ; RV64IZBS-NEXT: slli a1, a0, 57
1189
+ ; RV64IZBS-NEXT: add a0, a0, a1
1204
1190
; RV64IZBS-NEXT: ret
1205
1191
;
1206
1192
; RV64IXTHEADBB-LABEL: imm_2reg_1:
1207
1193
; RV64IXTHEADBB: # %bb.0:
1208
- ; RV64IXTHEADBB-NEXT: lui a0, 1048430
1209
- ; RV64IXTHEADBB-NEXT: addiw a0, a0, 1493
1210
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 13
1211
- ; RV64IXTHEADBB-NEXT: addi a0, a0, -1921
1212
- ; RV64IXTHEADBB-NEXT: srli a0, a0, 4
1213
- ; RV64IXTHEADBB-NEXT: not a0, a0
1194
+ ; RV64IXTHEADBB-NEXT: lui a0, 74565
1195
+ ; RV64IXTHEADBB-NEXT: addiw a0, a0, 1656
1196
+ ; RV64IXTHEADBB-NEXT: slli a1, a0, 57
1197
+ ; RV64IXTHEADBB-NEXT: add a0, a0, a1
1214
1198
; RV64IXTHEADBB-NEXT: ret
1215
1199
ret i64 -1152921504301427080 ; 0xF000_0000_1234_5678
1216
1200
}
@@ -1703,40 +1687,28 @@ define i64 @imm_neg_9223372034778874949() {
1703
1687
; RV32I-NEXT: lui a1, 524288
1704
1688
; RV32I-NEXT: ret
1705
1689
;
1706
- ; RV64-NOPOOL-LABEL: imm_neg_9223372034778874949:
1707
- ; RV64-NOPOOL: # %bb.0:
1708
- ; RV64-NOPOOL-NEXT: lui a0, 1048329
1709
- ; RV64-NOPOOL-NEXT: addiw a0, a0, -1911
1710
- ; RV64-NOPOOL-NEXT: slli a0, a0, 12
1711
- ; RV64-NOPOOL-NEXT: addi a0, a0, -1911
1712
- ; RV64-NOPOOL-NEXT: srli a0, a0, 1
1713
- ; RV64-NOPOOL-NEXT: not a0, a0
1714
- ; RV64-NOPOOL-NEXT: ret
1715
- ;
1716
- ; RV64I-POOL-LABEL: imm_neg_9223372034778874949:
1717
- ; RV64I-POOL: # %bb.0:
1718
- ; RV64I-POOL-NEXT: lui a0, %hi(.LCPI38_0)
1719
- ; RV64I-POOL-NEXT: ld a0, %lo(.LCPI38_0)(a0)
1720
- ; RV64I-POOL-NEXT: ret
1690
+ ; RV64I-LABEL: imm_neg_9223372034778874949:
1691
+ ; RV64I: # %bb.0:
1692
+ ; RV64I-NEXT: lui a0, 506812
1693
+ ; RV64I-NEXT: addiw a0, a0, -1093
1694
+ ; RV64I-NEXT: slli a1, a0, 63
1695
+ ; RV64I-NEXT: add a0, a0, a1
1696
+ ; RV64I-NEXT: ret
1721
1697
;
1722
1698
; RV64IZBA-LABEL: imm_neg_9223372034778874949:
1723
1699
; RV64IZBA: # %bb.0:
1724
- ; RV64IZBA-NEXT: lui a0, 1048329
1725
- ; RV64IZBA-NEXT: addiw a0, a0, -1911
1726
- ; RV64IZBA-NEXT: slli a0, a0, 12
1727
- ; RV64IZBA-NEXT: addi a0, a0, -1911
1728
- ; RV64IZBA-NEXT: srli a0, a0, 1
1729
- ; RV64IZBA-NEXT: not a0, a0
1700
+ ; RV64IZBA-NEXT: lui a0, 506812
1701
+ ; RV64IZBA-NEXT: addiw a0, a0, -1093
1702
+ ; RV64IZBA-NEXT: slli a1, a0, 63
1703
+ ; RV64IZBA-NEXT: add a0, a0, a1
1730
1704
; RV64IZBA-NEXT: ret
1731
1705
;
1732
1706
; RV64IZBB-LABEL: imm_neg_9223372034778874949:
1733
1707
; RV64IZBB: # %bb.0:
1734
- ; RV64IZBB-NEXT: lui a0, 1048329
1735
- ; RV64IZBB-NEXT: addiw a0, a0, -1911
1736
- ; RV64IZBB-NEXT: slli a0, a0, 12
1737
- ; RV64IZBB-NEXT: addi a0, a0, -1911
1738
- ; RV64IZBB-NEXT: srli a0, a0, 1
1739
- ; RV64IZBB-NEXT: not a0, a0
1708
+ ; RV64IZBB-NEXT: lui a0, 506812
1709
+ ; RV64IZBB-NEXT: addiw a0, a0, -1093
1710
+ ; RV64IZBB-NEXT: slli a1, a0, 63
1711
+ ; RV64IZBB-NEXT: add a0, a0, a1
1740
1712
; RV64IZBB-NEXT: ret
1741
1713
;
1742
1714
; RV64IZBS-LABEL: imm_neg_9223372034778874949:
@@ -1748,12 +1720,10 @@ define i64 @imm_neg_9223372034778874949() {
1748
1720
;
1749
1721
; RV64IXTHEADBB-LABEL: imm_neg_9223372034778874949:
1750
1722
; RV64IXTHEADBB: # %bb.0:
1751
- ; RV64IXTHEADBB-NEXT: lui a0, 1048329
1752
- ; RV64IXTHEADBB-NEXT: addiw a0, a0, -1911
1753
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 12
1754
- ; RV64IXTHEADBB-NEXT: addi a0, a0, -1911
1755
- ; RV64IXTHEADBB-NEXT: srli a0, a0, 1
1756
- ; RV64IXTHEADBB-NEXT: not a0, a0
1723
+ ; RV64IXTHEADBB-NEXT: lui a0, 506812
1724
+ ; RV64IXTHEADBB-NEXT: addiw a0, a0, -1093
1725
+ ; RV64IXTHEADBB-NEXT: slli a1, a0, 63
1726
+ ; RV64IXTHEADBB-NEXT: add a0, a0, a1
1757
1727
; RV64IXTHEADBB-NEXT: ret
1758
1728
ret i64 -9223372034778874949 ; 0x800000007bbbbbbb
1759
1729
}
@@ -1932,29 +1902,26 @@ define i64 @imm_9223372034904144827() {
1932
1902
;
1933
1903
; RV64I-LABEL: imm_9223372034904144827:
1934
1904
; RV64I: # %bb.0:
1935
- ; RV64I-NEXT: lui a0, 1048343
1936
- ; RV64I-NEXT: addiw a0, a0, 1911
1937
- ; RV64I-NEXT: slli a0, a0, 12
1938
- ; RV64I-NEXT: addi a0, a0, 1911
1939
- ; RV64I-NEXT: srli a0, a0, 1
1905
+ ; RV64I-NEXT: lui a0, 572348
1906
+ ; RV64I-NEXT: addiw a0, a0, -1093
1907
+ ; RV64I-NEXT: slli a1, a0, 63
1908
+ ; RV64I-NEXT: add a0, a0, a1
1940
1909
; RV64I-NEXT: ret
1941
1910
;
1942
1911
; RV64IZBA-LABEL: imm_9223372034904144827:
1943
1912
; RV64IZBA: # %bb.0:
1944
- ; RV64IZBA-NEXT: lui a0, 1048343
1945
- ; RV64IZBA-NEXT: addiw a0, a0, 1911
1946
- ; RV64IZBA-NEXT: slli a0, a0, 12
1947
- ; RV64IZBA-NEXT: addi a0, a0, 1911
1948
- ; RV64IZBA-NEXT: srli a0, a0, 1
1913
+ ; RV64IZBA-NEXT: lui a0, 572348
1914
+ ; RV64IZBA-NEXT: addiw a0, a0, -1093
1915
+ ; RV64IZBA-NEXT: slli a1, a0, 63
1916
+ ; RV64IZBA-NEXT: add a0, a0, a1
1949
1917
; RV64IZBA-NEXT: ret
1950
1918
;
1951
1919
; RV64IZBB-LABEL: imm_9223372034904144827:
1952
1920
; RV64IZBB: # %bb.0:
1953
- ; RV64IZBB-NEXT: lui a0, 1048343
1954
- ; RV64IZBB-NEXT: addiw a0, a0, 1911
1955
- ; RV64IZBB-NEXT: slli a0, a0, 12
1956
- ; RV64IZBB-NEXT: addi a0, a0, 1911
1957
- ; RV64IZBB-NEXT: srli a0, a0, 1
1921
+ ; RV64IZBB-NEXT: lui a0, 572348
1922
+ ; RV64IZBB-NEXT: addiw a0, a0, -1093
1923
+ ; RV64IZBB-NEXT: slli a1, a0, 63
1924
+ ; RV64IZBB-NEXT: add a0, a0, a1
1958
1925
; RV64IZBB-NEXT: ret
1959
1926
;
1960
1927
; RV64IZBS-LABEL: imm_9223372034904144827:
@@ -1966,11 +1933,10 @@ define i64 @imm_9223372034904144827() {
1966
1933
;
1967
1934
; RV64IXTHEADBB-LABEL: imm_9223372034904144827:
1968
1935
; RV64IXTHEADBB: # %bb.0:
1969
- ; RV64IXTHEADBB-NEXT: lui a0, 1048343
1970
- ; RV64IXTHEADBB-NEXT: addiw a0, a0, 1911
1971
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 12
1972
- ; RV64IXTHEADBB-NEXT: addi a0, a0, 1911
1973
- ; RV64IXTHEADBB-NEXT: srli a0, a0, 1
1936
+ ; RV64IXTHEADBB-NEXT: lui a0, 572348
1937
+ ; RV64IXTHEADBB-NEXT: addiw a0, a0, -1093
1938
+ ; RV64IXTHEADBB-NEXT: slli a1, a0, 63
1939
+ ; RV64IXTHEADBB-NEXT: add a0, a0, a1
1974
1940
; RV64IXTHEADBB-NEXT: ret
1975
1941
ret i64 9223372034904144827 ; 0x7fffffff8bbbbbbb
1976
1942
}
0 commit comments