@@ -214,9 +214,8 @@ define void @t17(i64 %a) {
214
214
define i8 @LdOffset_i8 (ptr %a ) {
215
215
; CHECK-LABEL: LdOffset_i8:
216
216
; CHECK: // %bb.0:
217
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
218
- ; CHECK-NEXT: movk w8, #15, lsl #16
219
- ; CHECK-NEXT: ldrb w0, [x0, x8]
217
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
218
+ ; CHECK-NEXT: ldrb w0, [x8, #3704]
220
219
; CHECK-NEXT: ret
221
220
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
222
221
%val = load i8 , ptr %arrayidx , align 1
@@ -227,9 +226,8 @@ define i8 @LdOffset_i8(ptr %a) {
227
226
define i32 @LdOffset_i8_zext32 (ptr %a ) {
228
227
; CHECK-LABEL: LdOffset_i8_zext32:
229
228
; CHECK: // %bb.0:
230
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
231
- ; CHECK-NEXT: movk w8, #15, lsl #16
232
- ; CHECK-NEXT: ldrb w0, [x0, x8]
229
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
230
+ ; CHECK-NEXT: ldrb w0, [x8, #3704]
233
231
; CHECK-NEXT: ret
234
232
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
235
233
%val = load i8 , ptr %arrayidx , align 1
@@ -241,9 +239,8 @@ define i32 @LdOffset_i8_zext32(ptr %a) {
241
239
define i32 @LdOffset_i8_sext32 (ptr %a ) {
242
240
; CHECK-LABEL: LdOffset_i8_sext32:
243
241
; CHECK: // %bb.0:
244
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
245
- ; CHECK-NEXT: movk w8, #15, lsl #16
246
- ; CHECK-NEXT: ldrsb w0, [x0, x8]
242
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
243
+ ; CHECK-NEXT: ldrsb w0, [x8, #3704]
247
244
; CHECK-NEXT: ret
248
245
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
249
246
%val = load i8 , ptr %arrayidx , align 1
@@ -255,9 +252,8 @@ define i32 @LdOffset_i8_sext32(ptr %a) {
255
252
define i64 @LdOffset_i8_zext64 (ptr %a ) {
256
253
; CHECK-LABEL: LdOffset_i8_zext64:
257
254
; CHECK: // %bb.0:
258
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
259
- ; CHECK-NEXT: movk w8, #15, lsl #16
260
- ; CHECK-NEXT: ldrb w0, [x0, x8]
255
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
256
+ ; CHECK-NEXT: ldrb w0, [x8, #3704]
261
257
; CHECK-NEXT: ret
262
258
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
263
259
%val = load i8 , ptr %arrayidx , align 1
@@ -269,9 +265,8 @@ define i64 @LdOffset_i8_zext64(ptr %a) {
269
265
define i64 @LdOffset_i8_sext64 (ptr %a ) {
270
266
; CHECK-LABEL: LdOffset_i8_sext64:
271
267
; CHECK: // %bb.0:
272
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
273
- ; CHECK-NEXT: movk w8, #15, lsl #16
274
- ; CHECK-NEXT: ldrsb x0, [x0, x8]
268
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
269
+ ; CHECK-NEXT: ldrsb x0, [x8, #3704]
275
270
; CHECK-NEXT: ret
276
271
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
277
272
%val = load i8 , ptr %arrayidx , align 1
@@ -283,9 +278,8 @@ define i64 @LdOffset_i8_sext64(ptr %a) {
283
278
define i16 @LdOffset_i16 (ptr %a ) {
284
279
; CHECK-LABEL: LdOffset_i16:
285
280
; CHECK: // %bb.0:
286
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
287
- ; CHECK-NEXT: movk w8, #31, lsl #16
288
- ; CHECK-NEXT: ldrh w0, [x0, x8]
281
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
282
+ ; CHECK-NEXT: ldrh w0, [x8, #7408]
289
283
; CHECK-NEXT: ret
290
284
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
291
285
%val = load i16 , ptr %arrayidx , align 2
@@ -296,9 +290,8 @@ define i16 @LdOffset_i16(ptr %a) {
296
290
define i32 @LdOffset_i16_zext32 (ptr %a ) {
297
291
; CHECK-LABEL: LdOffset_i16_zext32:
298
292
; CHECK: // %bb.0:
299
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
300
- ; CHECK-NEXT: movk w8, #31, lsl #16
301
- ; CHECK-NEXT: ldrh w0, [x0, x8]
293
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
294
+ ; CHECK-NEXT: ldrh w0, [x8, #7408]
302
295
; CHECK-NEXT: ret
303
296
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
304
297
%val = load i16 , ptr %arrayidx , align 2
@@ -310,9 +303,8 @@ define i32 @LdOffset_i16_zext32(ptr %a) {
310
303
define i32 @LdOffset_i16_sext32 (ptr %a ) {
311
304
; CHECK-LABEL: LdOffset_i16_sext32:
312
305
; CHECK: // %bb.0:
313
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
314
- ; CHECK-NEXT: movk w8, #31, lsl #16
315
- ; CHECK-NEXT: ldrsh w0, [x0, x8]
306
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
307
+ ; CHECK-NEXT: ldrsh w0, [x8, #7408]
316
308
; CHECK-NEXT: ret
317
309
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
318
310
%val = load i16 , ptr %arrayidx , align 2
@@ -324,9 +316,8 @@ define i32 @LdOffset_i16_sext32(ptr %a) {
324
316
define i64 @LdOffset_i16_zext64 (ptr %a ) {
325
317
; CHECK-LABEL: LdOffset_i16_zext64:
326
318
; CHECK: // %bb.0:
327
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
328
- ; CHECK-NEXT: movk w8, #31, lsl #16
329
- ; CHECK-NEXT: ldrh w0, [x0, x8]
319
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
320
+ ; CHECK-NEXT: ldrh w0, [x8, #7408]
330
321
; CHECK-NEXT: ret
331
322
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
332
323
%val = load i16 , ptr %arrayidx , align 2
@@ -338,9 +329,8 @@ define i64 @LdOffset_i16_zext64(ptr %a) {
338
329
define i64 @LdOffset_i16_sext64 (ptr %a ) {
339
330
; CHECK-LABEL: LdOffset_i16_sext64:
340
331
; CHECK: // %bb.0:
341
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
342
- ; CHECK-NEXT: movk w8, #31, lsl #16
343
- ; CHECK-NEXT: ldrsh x0, [x0, x8]
332
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
333
+ ; CHECK-NEXT: ldrsh x0, [x8, #7408]
344
334
; CHECK-NEXT: ret
345
335
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
346
336
%val = load i16 , ptr %arrayidx , align 2
@@ -352,9 +342,8 @@ define i64 @LdOffset_i16_sext64(ptr %a) {
352
342
define i32 @LdOffset_i32 (ptr %a ) {
353
343
; CHECK-LABEL: LdOffset_i32:
354
344
; CHECK: // %bb.0:
355
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
356
- ; CHECK-NEXT: movk w8, #63, lsl #16
357
- ; CHECK-NEXT: ldr w0, [x0, x8]
345
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
346
+ ; CHECK-NEXT: ldr w0, [x8, #14816]
358
347
; CHECK-NEXT: ret
359
348
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
360
349
%val = load i32 , ptr %arrayidx , align 4
@@ -365,9 +354,8 @@ define i32 @LdOffset_i32(ptr %a) {
365
354
define i64 @LdOffset_i32_zext64 (ptr %a ) {
366
355
; CHECK-LABEL: LdOffset_i32_zext64:
367
356
; CHECK: // %bb.0:
368
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
369
- ; CHECK-NEXT: movk w8, #63, lsl #16
370
- ; CHECK-NEXT: ldr w0, [x0, x8]
357
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
358
+ ; CHECK-NEXT: ldr w0, [x8, #14816]
371
359
; CHECK-NEXT: ret
372
360
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
373
361
%val = load i32 , ptr %arrayidx , align 2
@@ -379,9 +367,8 @@ define i64 @LdOffset_i32_zext64(ptr %a) {
379
367
define i64 @LdOffset_i32_sext64 (ptr %a ) {
380
368
; CHECK-LABEL: LdOffset_i32_sext64:
381
369
; CHECK: // %bb.0:
382
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
383
- ; CHECK-NEXT: movk w8, #63, lsl #16
384
- ; CHECK-NEXT: ldrsw x0, [x0, x8]
370
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
371
+ ; CHECK-NEXT: ldrsw x0, [x8, #14816]
385
372
; CHECK-NEXT: ret
386
373
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
387
374
%val = load i32 , ptr %arrayidx , align 2
@@ -393,9 +380,8 @@ define i64 @LdOffset_i32_sext64(ptr %a) {
393
380
define i64 @LdOffset_i64 (ptr %a ) {
394
381
; CHECK-LABEL: LdOffset_i64:
395
382
; CHECK: // %bb.0:
396
- ; CHECK-NEXT: mov w8, #62400 // =0xf3c0
397
- ; CHECK-NEXT: movk w8, #126, lsl #16
398
- ; CHECK-NEXT: ldr x0, [x0, x8]
383
+ ; CHECK-NEXT: add x8, x0, #2024, lsl #12 // =8290304
384
+ ; CHECK-NEXT: ldr x0, [x8, #29632]
399
385
; CHECK-NEXT: ret
400
386
%arrayidx = getelementptr inbounds i64 , ptr %a , i64 1039992
401
387
%val = load i64 , ptr %arrayidx , align 4
@@ -406,9 +392,8 @@ define i64 @LdOffset_i64(ptr %a) {
406
392
define <2 x i32 > @LdOffset_v2i32 (ptr %a ) {
407
393
; CHECK-LABEL: LdOffset_v2i32:
408
394
; CHECK: // %bb.0:
409
- ; CHECK-NEXT: mov w8, #62400 // =0xf3c0
410
- ; CHECK-NEXT: movk w8, #126, lsl #16
411
- ; CHECK-NEXT: ldr d0, [x0, x8]
395
+ ; CHECK-NEXT: add x8, x0, #2024, lsl #12 // =8290304
396
+ ; CHECK-NEXT: ldr d0, [x8, #29632]
412
397
; CHECK-NEXT: ret
413
398
%arrayidx = getelementptr inbounds <2 x i32 >, ptr %a , i64 1039992
414
399
%val = load <2 x i32 >, ptr %arrayidx , align 4
@@ -419,9 +404,8 @@ define <2 x i32> @LdOffset_v2i32(ptr %a) {
419
404
define <2 x i64 > @LdOffset_v2i64 (ptr %a ) {
420
405
; CHECK-LABEL: LdOffset_v2i64:
421
406
; CHECK: // %bb.0:
422
- ; CHECK-NEXT: mov w8, #59264 // =0xe780
423
- ; CHECK-NEXT: movk w8, #253, lsl #16
424
- ; CHECK-NEXT: ldr q0, [x0, x8]
407
+ ; CHECK-NEXT: add x8, x0, #4048, lsl #12 // =16580608
408
+ ; CHECK-NEXT: ldr q0, [x8, #59264]
425
409
; CHECK-NEXT: ret
426
410
%arrayidx = getelementptr inbounds <2 x i64 >, ptr %a , i64 1039992
427
411
%val = load <2 x i64 >, ptr %arrayidx , align 4
@@ -432,9 +416,8 @@ define <2 x i64> @LdOffset_v2i64(ptr %a) {
432
416
define double @LdOffset_i8_f64 (ptr %a ) {
433
417
; CHECK-LABEL: LdOffset_i8_f64:
434
418
; CHECK: // %bb.0:
435
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
436
- ; CHECK-NEXT: movk w8, #15, lsl #16
437
- ; CHECK-NEXT: ldrsb w8, [x0, x8]
419
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
420
+ ; CHECK-NEXT: ldrsb w8, [x8, #3704]
438
421
; CHECK-NEXT: scvtf d0, w8
439
422
; CHECK-NEXT: ret
440
423
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
@@ -447,9 +430,8 @@ define double @LdOffset_i8_f64(ptr %a) {
447
430
define double @LdOffset_i16_f64 (ptr %a ) {
448
431
; CHECK-LABEL: LdOffset_i16_f64:
449
432
; CHECK: // %bb.0:
450
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
451
- ; CHECK-NEXT: movk w8, #31, lsl #16
452
- ; CHECK-NEXT: ldrsh w8, [x0, x8]
433
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
434
+ ; CHECK-NEXT: ldrsh w8, [x8, #7408]
453
435
; CHECK-NEXT: scvtf d0, w8
454
436
; CHECK-NEXT: ret
455
437
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
@@ -462,9 +444,8 @@ define double @LdOffset_i16_f64(ptr %a) {
462
444
define double @LdOffset_i32_f64 (ptr %a ) {
463
445
; CHECK-LABEL: LdOffset_i32_f64:
464
446
; CHECK: // %bb.0:
465
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
466
- ; CHECK-NEXT: movk w8, #63, lsl #16
467
- ; CHECK-NEXT: ldr s0, [x0, x8]
447
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
448
+ ; CHECK-NEXT: ldr s0, [x8, #14816]
468
449
; CHECK-NEXT: ucvtf d0, d0
469
450
; CHECK-NEXT: ret
470
451
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
@@ -477,9 +458,8 @@ define double @LdOffset_i32_f64(ptr %a) {
477
458
define double @LdOffset_i64_f64 (ptr %a ) {
478
459
; CHECK-LABEL: LdOffset_i64_f64:
479
460
; CHECK: // %bb.0:
480
- ; CHECK-NEXT: mov w8, #62400 // =0xf3c0
481
- ; CHECK-NEXT: movk w8, #126, lsl #16
482
- ; CHECK-NEXT: ldr d0, [x0, x8]
461
+ ; CHECK-NEXT: add x8, x0, #2024, lsl #12 // =8290304
462
+ ; CHECK-NEXT: ldr d0, [x8, #29632]
483
463
; CHECK-NEXT: scvtf d0, d0
484
464
; CHECK-NEXT: ret
485
465
%arrayidx = getelementptr inbounds i64 , ptr %a , i64 1039992
0 commit comments