@@ -239,9 +239,8 @@ define i32 @LdOffset_i8_zext32(ptr %a) {
239
239
define i32 @LdOffset_i8_sext32 (ptr %a ) {
240
240
; CHECK-LABEL: LdOffset_i8_sext32:
241
241
; CHECK: // %bb.0:
242
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
243
- ; CHECK-NEXT: movk w8, #15, lsl #16
244
- ; CHECK-NEXT: ldrsb w0, [x0, x8]
242
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
243
+ ; CHECK-NEXT: ldrsb w0, [x8, #3704]
245
244
; CHECK-NEXT: ret
246
245
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
247
246
%val = load i8 , ptr %arrayidx , align 1
@@ -266,9 +265,8 @@ define i64 @LdOffset_i8_zext64(ptr %a) {
266
265
define i64 @LdOffset_i8_sext64 (ptr %a ) {
267
266
; CHECK-LABEL: LdOffset_i8_sext64:
268
267
; CHECK: // %bb.0:
269
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
270
- ; CHECK-NEXT: movk w8, #15, lsl #16
271
- ; CHECK-NEXT: ldrsb x0, [x0, x8]
268
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
269
+ ; CHECK-NEXT: ldrsb x0, [x8, #3704]
272
270
; CHECK-NEXT: ret
273
271
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
274
272
%val = load i8 , ptr %arrayidx , align 1
@@ -280,9 +278,8 @@ define i64 @LdOffset_i8_sext64(ptr %a) {
280
278
define i16 @LdOffset_i16 (ptr %a ) {
281
279
; CHECK-LABEL: LdOffset_i16:
282
280
; CHECK: // %bb.0:
283
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
284
- ; CHECK-NEXT: movk w8, #31, lsl #16
285
- ; CHECK-NEXT: ldrh w0, [x0, x8]
281
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
282
+ ; CHECK-NEXT: ldrh w0, [x8, #7408]
286
283
; CHECK-NEXT: ret
287
284
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
288
285
%val = load i16 , ptr %arrayidx , align 2
@@ -293,9 +290,8 @@ define i16 @LdOffset_i16(ptr %a) {
293
290
define i32 @LdOffset_i16_zext32 (ptr %a ) {
294
291
; CHECK-LABEL: LdOffset_i16_zext32:
295
292
; CHECK: // %bb.0:
296
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
297
- ; CHECK-NEXT: movk w8, #31, lsl #16
298
- ; CHECK-NEXT: ldrh w0, [x0, x8]
293
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
294
+ ; CHECK-NEXT: ldrh w0, [x8, #7408]
299
295
; CHECK-NEXT: ret
300
296
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
301
297
%val = load i16 , ptr %arrayidx , align 2
@@ -307,9 +303,8 @@ define i32 @LdOffset_i16_zext32(ptr %a) {
307
303
define i32 @LdOffset_i16_sext32 (ptr %a ) {
308
304
; CHECK-LABEL: LdOffset_i16_sext32:
309
305
; CHECK: // %bb.0:
310
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
311
- ; CHECK-NEXT: movk w8, #31, lsl #16
312
- ; CHECK-NEXT: ldrsh w0, [x0, x8]
306
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
307
+ ; CHECK-NEXT: ldrsh w0, [x8, #7408]
313
308
; CHECK-NEXT: ret
314
309
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
315
310
%val = load i16 , ptr %arrayidx , align 2
@@ -321,9 +316,8 @@ define i32 @LdOffset_i16_sext32(ptr %a) {
321
316
define i64 @LdOffset_i16_zext64 (ptr %a ) {
322
317
; CHECK-LABEL: LdOffset_i16_zext64:
323
318
; CHECK: // %bb.0:
324
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
325
- ; CHECK-NEXT: movk w8, #31, lsl #16
326
- ; CHECK-NEXT: ldrh w0, [x0, x8]
319
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
320
+ ; CHECK-NEXT: ldrh w0, [x8, #7408]
327
321
; CHECK-NEXT: ret
328
322
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
329
323
%val = load i16 , ptr %arrayidx , align 2
@@ -335,9 +329,8 @@ define i64 @LdOffset_i16_zext64(ptr %a) {
335
329
define i64 @LdOffset_i16_sext64 (ptr %a ) {
336
330
; CHECK-LABEL: LdOffset_i16_sext64:
337
331
; CHECK: // %bb.0:
338
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
339
- ; CHECK-NEXT: movk w8, #31, lsl #16
340
- ; CHECK-NEXT: ldrsh x0, [x0, x8]
332
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
333
+ ; CHECK-NEXT: ldrsh x0, [x8, #7408]
341
334
; CHECK-NEXT: ret
342
335
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
343
336
%val = load i16 , ptr %arrayidx , align 2
@@ -349,9 +342,8 @@ define i64 @LdOffset_i16_sext64(ptr %a) {
349
342
define i32 @LdOffset_i32 (ptr %a ) {
350
343
; CHECK-LABEL: LdOffset_i32:
351
344
; CHECK: // %bb.0:
352
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
353
- ; CHECK-NEXT: movk w8, #63, lsl #16
354
- ; CHECK-NEXT: ldr w0, [x0, x8]
345
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
346
+ ; CHECK-NEXT: ldr w0, [x8, #14816]
355
347
; CHECK-NEXT: ret
356
348
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
357
349
%val = load i32 , ptr %arrayidx , align 4
@@ -362,9 +354,8 @@ define i32 @LdOffset_i32(ptr %a) {
362
354
define i64 @LdOffset_i32_zext64 (ptr %a ) {
363
355
; CHECK-LABEL: LdOffset_i32_zext64:
364
356
; CHECK: // %bb.0:
365
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
366
- ; CHECK-NEXT: movk w8, #63, lsl #16
367
- ; CHECK-NEXT: ldr w0, [x0, x8]
357
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
358
+ ; CHECK-NEXT: ldr w0, [x8, #14816]
368
359
; CHECK-NEXT: ret
369
360
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
370
361
%val = load i32 , ptr %arrayidx , align 2
@@ -376,9 +367,8 @@ define i64 @LdOffset_i32_zext64(ptr %a) {
376
367
define i64 @LdOffset_i32_sext64 (ptr %a ) {
377
368
; CHECK-LABEL: LdOffset_i32_sext64:
378
369
; CHECK: // %bb.0:
379
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
380
- ; CHECK-NEXT: movk w8, #63, lsl #16
381
- ; CHECK-NEXT: ldrsw x0, [x0, x8]
370
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
371
+ ; CHECK-NEXT: ldrsw x0, [x8, #14816]
382
372
; CHECK-NEXT: ret
383
373
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
384
374
%val = load i32 , ptr %arrayidx , align 2
@@ -390,9 +380,8 @@ define i64 @LdOffset_i32_sext64(ptr %a) {
390
380
define i64 @LdOffset_i64 (ptr %a ) {
391
381
; CHECK-LABEL: LdOffset_i64:
392
382
; CHECK: // %bb.0:
393
- ; CHECK-NEXT: mov w8, #62400 // =0xf3c0
394
- ; CHECK-NEXT: movk w8, #126, lsl #16
395
- ; CHECK-NEXT: ldr x0, [x0, x8]
383
+ ; CHECK-NEXT: add x8, x0, #2024, lsl #12 // =8290304
384
+ ; CHECK-NEXT: ldr x0, [x8, #29632]
396
385
; CHECK-NEXT: ret
397
386
%arrayidx = getelementptr inbounds i64 , ptr %a , i64 1039992
398
387
%val = load i64 , ptr %arrayidx , align 4
@@ -403,9 +392,8 @@ define i64 @LdOffset_i64(ptr %a) {
403
392
define <2 x i32 > @LdOffset_v2i32 (ptr %a ) {
404
393
; CHECK-LABEL: LdOffset_v2i32:
405
394
; CHECK: // %bb.0:
406
- ; CHECK-NEXT: mov w8, #62400 // =0xf3c0
407
- ; CHECK-NEXT: movk w8, #126, lsl #16
408
- ; CHECK-NEXT: ldr d0, [x0, x8]
395
+ ; CHECK-NEXT: add x8, x0, #2024, lsl #12 // =8290304
396
+ ; CHECK-NEXT: ldr d0, [x8, #29632]
409
397
; CHECK-NEXT: ret
410
398
%arrayidx = getelementptr inbounds <2 x i32 >, ptr %a , i64 1039992
411
399
%val = load <2 x i32 >, ptr %arrayidx , align 4
@@ -416,9 +404,8 @@ define <2 x i32> @LdOffset_v2i32(ptr %a) {
416
404
define <2 x i64 > @LdOffset_v2i64 (ptr %a ) {
417
405
; CHECK-LABEL: LdOffset_v2i64:
418
406
; CHECK: // %bb.0:
419
- ; CHECK-NEXT: mov w8, #59264 // =0xe780
420
- ; CHECK-NEXT: movk w8, #253, lsl #16
421
- ; CHECK-NEXT: ldr q0, [x0, x8]
407
+ ; CHECK-NEXT: add x8, x0, #4048, lsl #12 // =16580608
408
+ ; CHECK-NEXT: ldr q0, [x8, #59264]
422
409
; CHECK-NEXT: ret
423
410
%arrayidx = getelementptr inbounds <2 x i64 >, ptr %a , i64 1039992
424
411
%val = load <2 x i64 >, ptr %arrayidx , align 4
@@ -429,9 +416,8 @@ define <2 x i64> @LdOffset_v2i64(ptr %a) {
429
416
define double @LdOffset_i8_f64 (ptr %a ) {
430
417
; CHECK-LABEL: LdOffset_i8_f64:
431
418
; CHECK: // %bb.0:
432
- ; CHECK-NEXT: mov w8, #56952 // =0xde78
433
- ; CHECK-NEXT: movk w8, #15, lsl #16
434
- ; CHECK-NEXT: ldrsb w8, [x0, x8]
419
+ ; CHECK-NEXT: add x8, x0, #253, lsl #12 // =1036288
420
+ ; CHECK-NEXT: ldrsb w8, [x8, #3704]
435
421
; CHECK-NEXT: scvtf d0, w8
436
422
; CHECK-NEXT: ret
437
423
%arrayidx = getelementptr inbounds i8 , ptr %a , i64 1039992
@@ -444,9 +430,8 @@ define double @LdOffset_i8_f64(ptr %a) {
444
430
define double @LdOffset_i16_f64 (ptr %a ) {
445
431
; CHECK-LABEL: LdOffset_i16_f64:
446
432
; CHECK: // %bb.0:
447
- ; CHECK-NEXT: mov w8, #48368 // =0xbcf0
448
- ; CHECK-NEXT: movk w8, #31, lsl #16
449
- ; CHECK-NEXT: ldrsh w8, [x0, x8]
433
+ ; CHECK-NEXT: add x8, x0, #506, lsl #12 // =2072576
434
+ ; CHECK-NEXT: ldrsh w8, [x8, #7408]
450
435
; CHECK-NEXT: scvtf d0, w8
451
436
; CHECK-NEXT: ret
452
437
%arrayidx = getelementptr inbounds i16 , ptr %a , i64 1039992
@@ -459,9 +444,8 @@ define double @LdOffset_i16_f64(ptr %a) {
459
444
define double @LdOffset_i32_f64 (ptr %a ) {
460
445
; CHECK-LABEL: LdOffset_i32_f64:
461
446
; CHECK: // %bb.0:
462
- ; CHECK-NEXT: mov w8, #31200 // =0x79e0
463
- ; CHECK-NEXT: movk w8, #63, lsl #16
464
- ; CHECK-NEXT: ldr s0, [x0, x8]
447
+ ; CHECK-NEXT: add x8, x0, #1012, lsl #12 // =4145152
448
+ ; CHECK-NEXT: ldr s0, [x8, #14816]
465
449
; CHECK-NEXT: ucvtf d0, d0
466
450
; CHECK-NEXT: ret
467
451
%arrayidx = getelementptr inbounds i32 , ptr %a , i64 1039992
@@ -474,9 +458,8 @@ define double @LdOffset_i32_f64(ptr %a) {
474
458
define double @LdOffset_i64_f64 (ptr %a ) {
475
459
; CHECK-LABEL: LdOffset_i64_f64:
476
460
; CHECK: // %bb.0:
477
- ; CHECK-NEXT: mov w8, #62400 // =0xf3c0
478
- ; CHECK-NEXT: movk w8, #126, lsl #16
479
- ; CHECK-NEXT: ldr d0, [x0, x8]
461
+ ; CHECK-NEXT: add x8, x0, #2024, lsl #12 // =8290304
462
+ ; CHECK-NEXT: ldr d0, [x8, #29632]
480
463
; CHECK-NEXT: scvtf d0, d0
481
464
; CHECK-NEXT: ret
482
465
%arrayidx = getelementptr inbounds i64 , ptr %a , i64 1039992
0 commit comments