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