@@ -47,8 +47,7 @@ define i64 @imm0008000000000fff() {
4747; CHECK-LABEL: imm0008000000000fff:
4848; CHECK: # %bb.0:
4949; CHECK-NEXT: ori $a0, $zero, 4095
50- ; CHECK-NEXT: lu32i.d $a0, -524288
51- ; CHECK-NEXT: lu52i.d $a0, $a0, 0
50+ ; CHECK-NEXT: bstrins.d $a0, $a0, 51, 51
5251; CHECK-NEXT: ret
5352 ret i64 2251799813689343
5453}
@@ -168,9 +167,8 @@ define i64 @imm0008000080000800() {
168167define i64 @imm14000000a () {
169168; CHECK-LABEL: imm14000000a:
170169; CHECK: # %bb.0:
171- ; CHECK-NEXT: lu12i.w $a0, 262144
172- ; CHECK-NEXT: ori $a0, $a0, 10
173- ; CHECK-NEXT: lu32i.d $a0, 1
170+ ; CHECK-NEXT: ori $a0, $zero, 10
171+ ; CHECK-NEXT: bstrins.d $a0, $a0, 32, 29
174172; CHECK-NEXT: ret
175173 ret i64 5368709130
176174}
@@ -179,8 +177,7 @@ define i64 @imm0fff000000000fff() {
179177; CHECK-LABEL: imm0fff000000000fff:
180178; CHECK: # %bb.0:
181179; CHECK-NEXT: ori $a0, $zero, 4095
182- ; CHECK-NEXT: lu32i.d $a0, -65536
183- ; CHECK-NEXT: lu52i.d $a0, $a0, 255
180+ ; CHECK-NEXT: bstrins.d $a0, $a0, 59, 48
184181; CHECK-NEXT: ret
185182 ret i64 1152640029630140415
186183}
@@ -189,8 +186,7 @@ define i64 @immffecffffffffffec() {
189186; CHECK-LABEL: immffecffffffffffec:
190187; CHECK: # %bb.0:
191188; CHECK-NEXT: addi.w $a0, $zero, -20
192- ; CHECK-NEXT: lu32i.d $a0, -196609
193- ; CHECK-NEXT: lu52i.d $a0, $a0, -2
189+ ; CHECK-NEXT: bstrins.d $a0, $a0, 52, 48
194190; CHECK-NEXT: ret
195191 ret i64 -5348024557502484
196192}
@@ -199,8 +195,7 @@ define i64 @imm1c000000700000() {
199195; CHECK-LABEL: imm1c000000700000:
200196; CHECK: # %bb.0:
201197; CHECK-NEXT: lu12i.w $a0, 1792
202- ; CHECK-NEXT: lu32i.d $a0, -262144
203- ; CHECK-NEXT: lu52i.d $a0, $a0, 1
198+ ; CHECK-NEXT: bstrins.d $a0, $a0, 52, 30
204199; CHECK-NEXT: ret
205200 ret i64 7881299355238400
206201}
@@ -210,19 +205,17 @@ define i64 @immf0f0f0f0f0f0f0f0() {
210205; CHECK: # %bb.0:
211206; CHECK-NEXT: lu12i.w $a0, -61681
212207; CHECK-NEXT: ori $a0, $a0, 240
213- ; CHECK-NEXT: lu32i.d $a0, 61680
214- ; CHECK-NEXT: lu52i.d $a0, $a0, -241
208+ ; CHECK-NEXT: bstrins.d $a0, $a0, 59, 32
215209; CHECK-NEXT: ret
216210 ret i64 -1085102592571150096
217211}
218212
219213define i64 @imm110000014000000a () {
220214; CHECK-LABEL: imm110000014000000a:
221215; CHECK: # %bb.0:
222- ; CHECK-NEXT: lu12i.w $a0, 262144
223- ; CHECK-NEXT: ori $a0, $a0, 10
224- ; CHECK-NEXT: lu32i.d $a0, 1
216+ ; CHECK-NEXT: ori $a0, $zero, 10
225217; CHECK-NEXT: lu52i.d $a0, $a0, 272
218+ ; CHECK-NEXT: bstrins.d $a0, $a0, 32, 29
226219; CHECK-NEXT: ret
227220 ret i64 1224979104013484042
228221}
0 commit comments