@@ -1058,47 +1058,37 @@ define i64 @imm_end_xori_1() nounwind {
10581058;
10591059; RV64I-LABEL: imm_end_xori_1:
10601060; 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
10661064; RV64I-NEXT: ret
10671065;
10681066; RV64IZBA-LABEL: imm_end_xori_1:
10691067; 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
10751071; RV64IZBA-NEXT: ret
10761072;
10771073; RV64IZBB-LABEL: imm_end_xori_1:
10781074; 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
10841078; RV64IZBB-NEXT: ret
10851079;
10861080; RV64IZBS-LABEL: imm_end_xori_1:
10871081; 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
10931085; RV64IZBS-NEXT: ret
10941086;
10951087; RV64IXTHEADBB-LABEL: imm_end_xori_1:
10961088; 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
11021092; RV64IXTHEADBB-NEXT: ret
11031093 ret i64 -2305843009180139521 ; 0xE000_0000_01FF_FFFF
11041094}
@@ -1174,13 +1164,12 @@ define i64 @imm_2reg_1() nounwind {
11741164;
11751165; RV64-NOPOOL-LABEL: imm_2reg_1:
11761166; 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
11801169; 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
11841173; RV64-NOPOOL-NEXT: ret
11851174;
11861175; RV64I-POOL-LABEL: imm_2reg_1:
@@ -1191,45 +1180,42 @@ define i64 @imm_2reg_1() nounwind {
11911180;
11921181; RV64IZBA-LABEL: imm_2reg_1:
11931182; 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
11971185; 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
12011189; RV64IZBA-NEXT: ret
12021190;
12031191; RV64IZBB-LABEL: imm_2reg_1:
12041192; 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
12081195; 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
12121199; RV64IZBB-NEXT: ret
12131200;
12141201; RV64IZBS-LABEL: imm_2reg_1:
12151202; 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
12221209; RV64IZBS-NEXT: ret
12231210;
12241211; RV64IXTHEADBB-LABEL: imm_2reg_1:
12251212; 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
12291215; 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
12331219; RV64IXTHEADBB-NEXT: ret
12341220 ret i64 -1152921504301427080 ; 0xF000_0000_1234_5678
12351221}
@@ -1724,13 +1710,12 @@ define i64 @imm_neg_9223372034778874949() {
17241710;
17251711; RV64-NOPOOL-LABEL: imm_neg_9223372034778874949:
17261712; 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
17301715; 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
17341719; RV64-NOPOOL-NEXT: ret
17351720;
17361721; RV64I-POOL-LABEL: imm_neg_9223372034778874949:
@@ -1741,24 +1726,22 @@ define i64 @imm_neg_9223372034778874949() {
17411726;
17421727; RV64IZBA-LABEL: imm_neg_9223372034778874949:
17431728; 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
17471731; 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
17511735; RV64IZBA-NEXT: ret
17521736;
17531737; RV64IZBB-LABEL: imm_neg_9223372034778874949:
17541738; 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
17581741; 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
17621745; RV64IZBB-NEXT: ret
17631746;
17641747; RV64IZBS-LABEL: imm_neg_9223372034778874949:
@@ -1770,13 +1753,12 @@ define i64 @imm_neg_9223372034778874949() {
17701753;
17711754; RV64IXTHEADBB-LABEL: imm_neg_9223372034778874949:
17721755; 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
17761758; 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
17801762; RV64IXTHEADBB-NEXT: ret
17811763 ret i64 -9223372034778874949 ; 0x800000007bbbbbbb
17821764}
0 commit comments