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