@@ -1058,47 +1058,37 @@ define i64 @imm_end_xori_1() nounwind {
1058
1058
;
1059
1059
; RV64I-LABEL: imm_end_xori_1:
1060
1060
; RV64I: # %bb.0:
1061
- ; RV64I-NEXT: li a0, -1
1062
- ; RV64I-NEXT: slli a0, a0, 36
1063
- ; RV64I-NEXT: addi a0, a0, 1
1064
- ; RV64I-NEXT: slli a0, a0, 25
1065
- ; RV64I-NEXT: addi a0, a0, -1
1061
+ ; RV64I-NEXT: lui a0, 983040
1062
+ ; RV64I-NEXT: srli a0, a0, 3
1063
+ ; RV64I-NEXT: not a0, a0
1066
1064
; RV64I-NEXT: ret
1067
1065
;
1068
1066
; RV64IZBA-LABEL: imm_end_xori_1:
1069
1067
; RV64IZBA: # %bb.0:
1070
- ; RV64IZBA-NEXT: li a0, -1
1071
- ; RV64IZBA-NEXT: slli a0, a0, 36
1072
- ; RV64IZBA-NEXT: addi a0, a0, 1
1073
- ; RV64IZBA-NEXT: slli a0, a0, 25
1074
- ; RV64IZBA-NEXT: addi a0, a0, -1
1068
+ ; RV64IZBA-NEXT: lui a0, 983040
1069
+ ; RV64IZBA-NEXT: srli a0, a0, 3
1070
+ ; RV64IZBA-NEXT: not a0, a0
1075
1071
; RV64IZBA-NEXT: ret
1076
1072
;
1077
1073
; RV64IZBB-LABEL: imm_end_xori_1:
1078
1074
; RV64IZBB: # %bb.0:
1079
- ; RV64IZBB-NEXT: li a0, -1
1080
- ; RV64IZBB-NEXT: slli a0, a0, 36
1081
- ; RV64IZBB-NEXT: addi a0, a0, 1
1082
- ; RV64IZBB-NEXT: slli a0, a0, 25
1083
- ; RV64IZBB-NEXT: addi a0, a0, -1
1075
+ ; RV64IZBB-NEXT: lui a0, 983040
1076
+ ; RV64IZBB-NEXT: srli a0, a0, 3
1077
+ ; RV64IZBB-NEXT: not a0, a0
1084
1078
; RV64IZBB-NEXT: ret
1085
1079
;
1086
1080
; RV64IZBS-LABEL: imm_end_xori_1:
1087
1081
; RV64IZBS: # %bb.0:
1088
- ; RV64IZBS-NEXT: li a0, -1
1089
- ; RV64IZBS-NEXT: slli a0, a0, 36
1090
- ; RV64IZBS-NEXT: addi a0, a0, 1
1091
- ; RV64IZBS-NEXT: slli a0, a0, 25
1092
- ; RV64IZBS-NEXT: addi a0, a0, -1
1082
+ ; RV64IZBS-NEXT: lui a0, 983040
1083
+ ; RV64IZBS-NEXT: srli a0, a0, 3
1084
+ ; RV64IZBS-NEXT: not a0, a0
1093
1085
; RV64IZBS-NEXT: ret
1094
1086
;
1095
1087
; RV64IXTHEADBB-LABEL: imm_end_xori_1:
1096
1088
; RV64IXTHEADBB: # %bb.0:
1097
- ; RV64IXTHEADBB-NEXT: li a0, -1
1098
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 36
1099
- ; RV64IXTHEADBB-NEXT: addi a0, a0, 1
1100
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 25
1101
- ; RV64IXTHEADBB-NEXT: addi a0, a0, -1
1089
+ ; RV64IXTHEADBB-NEXT: lui a0, 983040
1090
+ ; RV64IXTHEADBB-NEXT: srli a0, a0, 3
1091
+ ; RV64IXTHEADBB-NEXT: not a0, a0
1102
1092
; RV64IXTHEADBB-NEXT: ret
1103
1093
ret i64 -2305843009180139521 ; 0xE000_0000_01FF_FFFF
1104
1094
}
@@ -1174,13 +1164,12 @@ define i64 @imm_2reg_1() nounwind {
1174
1164
;
1175
1165
; RV64-NOPOOL-LABEL: imm_2reg_1:
1176
1166
; RV64-NOPOOL: # %bb.0:
1177
- ; RV64-NOPOOL-NEXT: li a0, -1
1178
- ; RV64-NOPOOL-NEXT: slli a0, a0, 35
1179
- ; RV64-NOPOOL-NEXT: addi a0, a0, 9
1167
+ ; RV64-NOPOOL-NEXT: lui a0, 1048430
1168
+ ; RV64-NOPOOL-NEXT: addiw a0, a0, 1493
1180
1169
; RV64-NOPOOL-NEXT: slli a0, a0, 13
1181
- ; RV64-NOPOOL-NEXT: addi a0, a0, 837
1182
- ; RV64-NOPOOL-NEXT: slli a0, a0, 12
1183
- ; RV64-NOPOOL-NEXT: addi a0, a0, 1656
1170
+ ; RV64-NOPOOL-NEXT: addi a0, a0, -1921
1171
+ ; RV64-NOPOOL-NEXT: srli a0, a0, 4
1172
+ ; RV64-NOPOOL-NEXT: not a0, a0
1184
1173
; RV64-NOPOOL-NEXT: ret
1185
1174
;
1186
1175
; RV64I-POOL-LABEL: imm_2reg_1:
@@ -1191,45 +1180,42 @@ define i64 @imm_2reg_1() nounwind {
1191
1180
;
1192
1181
; RV64IZBA-LABEL: imm_2reg_1:
1193
1182
; RV64IZBA: # %bb.0:
1194
- ; RV64IZBA-NEXT: li a0, -1
1195
- ; RV64IZBA-NEXT: slli a0, a0, 35
1196
- ; RV64IZBA-NEXT: addi a0, a0, 9
1183
+ ; RV64IZBA-NEXT: lui a0, 1048430
1184
+ ; RV64IZBA-NEXT: addiw a0, a0, 1493
1197
1185
; RV64IZBA-NEXT: slli a0, a0, 13
1198
- ; RV64IZBA-NEXT: addi a0, a0, 837
1199
- ; RV64IZBA-NEXT: slli a0, a0, 12
1200
- ; RV64IZBA-NEXT: addi a0, a0, 1656
1186
+ ; RV64IZBA-NEXT: addi a0, a0, -1921
1187
+ ; RV64IZBA-NEXT: srli a0, a0, 4
1188
+ ; RV64IZBA-NEXT: not a0, a0
1201
1189
; RV64IZBA-NEXT: ret
1202
1190
;
1203
1191
; RV64IZBB-LABEL: imm_2reg_1:
1204
1192
; RV64IZBB: # %bb.0:
1205
- ; RV64IZBB-NEXT: li a0, -1
1206
- ; RV64IZBB-NEXT: slli a0, a0, 35
1207
- ; RV64IZBB-NEXT: addi a0, a0, 9
1193
+ ; RV64IZBB-NEXT: lui a0, 1048430
1194
+ ; RV64IZBB-NEXT: addiw a0, a0, 1493
1208
1195
; RV64IZBB-NEXT: slli a0, a0, 13
1209
- ; RV64IZBB-NEXT: addi a0, a0, 837
1210
- ; RV64IZBB-NEXT: slli a0, a0, 12
1211
- ; RV64IZBB-NEXT: addi a0, a0, 1656
1196
+ ; RV64IZBB-NEXT: addi a0, a0, -1921
1197
+ ; RV64IZBB-NEXT: srli a0, a0, 4
1198
+ ; RV64IZBB-NEXT: not a0, a0
1212
1199
; RV64IZBB-NEXT: ret
1213
1200
;
1214
1201
; RV64IZBS-LABEL: imm_2reg_1:
1215
1202
; RV64IZBS: # %bb.0:
1216
- ; RV64IZBS-NEXT: lui a0, 74565
1217
- ; RV64IZBS-NEXT: addiw a0, a0, 1656
1218
- ; RV64IZBS-NEXT: bseti a0, a0, 60
1219
- ; RV64IZBS-NEXT: bseti a0, a0, 61
1220
- ; RV64IZBS-NEXT: bseti a0, a0, 62
1221
- ; RV64IZBS-NEXT: bseti a0, a0, 63
1203
+ ; RV64IZBS-NEXT: lui a0, 1048430
1204
+ ; RV64IZBS-NEXT: addiw a0, a0, 1493
1205
+ ; RV64IZBS-NEXT: slli a0, a0, 13
1206
+ ; RV64IZBS-NEXT: addi a0, a0, -1921
1207
+ ; RV64IZBS-NEXT: srli a0, a0, 4
1208
+ ; RV64IZBS-NEXT: not a0, a0
1222
1209
; RV64IZBS-NEXT: ret
1223
1210
;
1224
1211
; RV64IXTHEADBB-LABEL: imm_2reg_1:
1225
1212
; RV64IXTHEADBB: # %bb.0:
1226
- ; RV64IXTHEADBB-NEXT: li a0, -1
1227
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 35
1228
- ; RV64IXTHEADBB-NEXT: addi a0, a0, 9
1213
+ ; RV64IXTHEADBB-NEXT: lui a0, 1048430
1214
+ ; RV64IXTHEADBB-NEXT: addiw a0, a0, 1493
1229
1215
; RV64IXTHEADBB-NEXT: slli a0, a0, 13
1230
- ; RV64IXTHEADBB-NEXT: addi a0, a0, 837
1231
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 12
1232
- ; RV64IXTHEADBB-NEXT: addi a0, a0, 1656
1216
+ ; RV64IXTHEADBB-NEXT: addi a0, a0, -1921
1217
+ ; RV64IXTHEADBB-NEXT: srli a0, a0, 4
1218
+ ; RV64IXTHEADBB-NEXT: not a0, a0
1233
1219
; RV64IXTHEADBB-NEXT: ret
1234
1220
ret i64 -1152921504301427080 ; 0xF000_0000_1234_5678
1235
1221
}
@@ -1724,13 +1710,12 @@ define i64 @imm_neg_9223372034778874949() {
1724
1710
;
1725
1711
; RV64-NOPOOL-LABEL: imm_neg_9223372034778874949:
1726
1712
; RV64-NOPOOL: # %bb.0:
1727
- ; RV64-NOPOOL-NEXT: li a0, -1
1728
- ; RV64-NOPOOL-NEXT: slli a0, a0, 37
1729
- ; RV64-NOPOOL-NEXT: addi a0, a0, 31
1713
+ ; RV64-NOPOOL-NEXT: lui a0, 1048329
1714
+ ; RV64-NOPOOL-NEXT: addiw a0, a0, -1911
1730
1715
; RV64-NOPOOL-NEXT: slli a0, a0, 12
1731
- ; RV64-NOPOOL-NEXT: addi a0, a0, -273
1732
- ; RV64-NOPOOL-NEXT: slli a0, a0, 14
1733
- ; RV64-NOPOOL-NEXT: addi a0, a0, -1093
1716
+ ; RV64-NOPOOL-NEXT: addi a0, a0, -1911
1717
+ ; RV64-NOPOOL-NEXT: srli a0, a0, 1
1718
+ ; RV64-NOPOOL-NEXT: not a0, a0
1734
1719
; RV64-NOPOOL-NEXT: ret
1735
1720
;
1736
1721
; RV64I-POOL-LABEL: imm_neg_9223372034778874949:
@@ -1741,24 +1726,22 @@ define i64 @imm_neg_9223372034778874949() {
1741
1726
;
1742
1727
; RV64IZBA-LABEL: imm_neg_9223372034778874949:
1743
1728
; RV64IZBA: # %bb.0:
1744
- ; RV64IZBA-NEXT: li a0, -1
1745
- ; RV64IZBA-NEXT: slli a0, a0, 37
1746
- ; RV64IZBA-NEXT: addi a0, a0, 31
1729
+ ; RV64IZBA-NEXT: lui a0, 1048329
1730
+ ; RV64IZBA-NEXT: addiw a0, a0, -1911
1747
1731
; RV64IZBA-NEXT: slli a0, a0, 12
1748
- ; RV64IZBA-NEXT: addi a0, a0, -273
1749
- ; RV64IZBA-NEXT: slli a0, a0, 14
1750
- ; RV64IZBA-NEXT: addi a0, a0, -1093
1732
+ ; RV64IZBA-NEXT: addi a0, a0, -1911
1733
+ ; RV64IZBA-NEXT: srli a0, a0, 1
1734
+ ; RV64IZBA-NEXT: not a0, a0
1751
1735
; RV64IZBA-NEXT: ret
1752
1736
;
1753
1737
; RV64IZBB-LABEL: imm_neg_9223372034778874949:
1754
1738
; RV64IZBB: # %bb.0:
1755
- ; RV64IZBB-NEXT: li a0, -1
1756
- ; RV64IZBB-NEXT: slli a0, a0, 37
1757
- ; RV64IZBB-NEXT: addi a0, a0, 31
1739
+ ; RV64IZBB-NEXT: lui a0, 1048329
1740
+ ; RV64IZBB-NEXT: addiw a0, a0, -1911
1758
1741
; RV64IZBB-NEXT: slli a0, a0, 12
1759
- ; RV64IZBB-NEXT: addi a0, a0, -273
1760
- ; RV64IZBB-NEXT: slli a0, a0, 14
1761
- ; RV64IZBB-NEXT: addi a0, a0, -1093
1742
+ ; RV64IZBB-NEXT: addi a0, a0, -1911
1743
+ ; RV64IZBB-NEXT: srli a0, a0, 1
1744
+ ; RV64IZBB-NEXT: not a0, a0
1762
1745
; RV64IZBB-NEXT: ret
1763
1746
;
1764
1747
; RV64IZBS-LABEL: imm_neg_9223372034778874949:
@@ -1770,13 +1753,12 @@ define i64 @imm_neg_9223372034778874949() {
1770
1753
;
1771
1754
; RV64IXTHEADBB-LABEL: imm_neg_9223372034778874949:
1772
1755
; RV64IXTHEADBB: # %bb.0:
1773
- ; RV64IXTHEADBB-NEXT: li a0, -1
1774
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 37
1775
- ; RV64IXTHEADBB-NEXT: addi a0, a0, 31
1756
+ ; RV64IXTHEADBB-NEXT: lui a0, 1048329
1757
+ ; RV64IXTHEADBB-NEXT: addiw a0, a0, -1911
1776
1758
; RV64IXTHEADBB-NEXT: slli a0, a0, 12
1777
- ; RV64IXTHEADBB-NEXT: addi a0, a0, -273
1778
- ; RV64IXTHEADBB-NEXT: slli a0, a0, 14
1779
- ; RV64IXTHEADBB-NEXT: addi a0, a0, -1093
1759
+ ; RV64IXTHEADBB-NEXT: addi a0, a0, -1911
1760
+ ; RV64IXTHEADBB-NEXT: srli a0, a0, 1
1761
+ ; RV64IXTHEADBB-NEXT: not a0, a0
1780
1762
; RV64IXTHEADBB-NEXT: ret
1781
1763
ret i64 -9223372034778874949 ; 0x800000007bbbbbbb
1782
1764
}
0 commit comments