@@ -386,18 +386,16 @@ define arm_aapcs_vfpcc <4 x i32> @load_predcastzext(i16* %i, <4 x i32> %a) {
386
386
define arm_aapcs_vfpcc <4 x i32 > @load_bc4 (i32* %i , <4 x i32 > %a ) {
387
387
; CHECK-LE-LABEL: load_bc4:
388
388
; CHECK-LE: @ %bb.0:
389
- ; CHECK-LE-NEXT: ldr r0 , [r0]
389
+ ; CHECK-LE-NEXT: vldr p0 , [r0]
390
390
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
391
- ; CHECK-LE-NEXT: vmsr p0, r0
392
391
; CHECK-LE-NEXT: vpsel q0, q0, q1
393
392
; CHECK-LE-NEXT: bx lr
394
393
;
395
394
; CHECK-BE-LABEL: load_bc4:
396
395
; CHECK-BE: @ %bb.0:
397
- ; CHECK-BE-NEXT: ldr r0 , [r0]
396
+ ; CHECK-BE-NEXT: vldr p0 , [r0]
398
397
; CHECK-BE-NEXT: vrev64.32 q1, q0
399
398
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
400
- ; CHECK-BE-NEXT: vmsr p0, r0
401
399
; CHECK-BE-NEXT: vpsel q1, q1, q0
402
400
; CHECK-BE-NEXT: vrev64.32 q0, q1
403
401
; CHECK-BE-NEXT: bx lr
@@ -410,19 +408,17 @@ define arm_aapcs_vfpcc <4 x i32> @load_bc4(i32* %i, <4 x i32> %a) {
410
408
define arm_aapcs_vfpcc <8 x i16 > @load_predcast8 (i32* %i , <8 x i16 > %a ) {
411
409
; CHECK-LE-LABEL: load_predcast8:
412
410
; CHECK-LE: @ %bb.0:
413
- ; CHECK-LE-NEXT: ldr r0 , [r0]
411
+ ; CHECK-LE-NEXT: vldr p0 , [r0]
414
412
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
415
- ; CHECK-LE-NEXT: vmsr p0, r0
416
413
; CHECK-LE-NEXT: vpsel q0, q0, q1
417
414
; CHECK-LE-NEXT: bx lr
418
415
;
419
416
; CHECK-BE-LABEL: load_predcast8:
420
417
; CHECK-BE: @ %bb.0:
421
- ; CHECK-BE-NEXT: ldr r0, [r0]
422
418
; CHECK-BE-NEXT: vrev64.16 q1, q0
423
419
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
420
+ ; CHECK-BE-NEXT: vldr p0, [r0]
424
421
; CHECK-BE-NEXT: vrev32.16 q0, q0
425
- ; CHECK-BE-NEXT: vmsr p0, r0
426
422
; CHECK-BE-NEXT: vpsel q1, q1, q0
427
423
; CHECK-BE-NEXT: vrev64.16 q0, q1
428
424
; CHECK-BE-NEXT: bx lr
@@ -435,19 +431,17 @@ define arm_aapcs_vfpcc <8 x i16> @load_predcast8(i32* %i, <8 x i16> %a) {
435
431
define arm_aapcs_vfpcc <16 x i8 > @load_predcast16 (i32* %i , <16 x i8 > %a ) {
436
432
; CHECK-LE-LABEL: load_predcast16:
437
433
; CHECK-LE: @ %bb.0:
438
- ; CHECK-LE-NEXT: ldr r0 , [r0]
434
+ ; CHECK-LE-NEXT: vldr p0 , [r0]
439
435
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
440
- ; CHECK-LE-NEXT: vmsr p0, r0
441
436
; CHECK-LE-NEXT: vpsel q0, q0, q1
442
437
; CHECK-LE-NEXT: bx lr
443
438
;
444
439
; CHECK-BE-LABEL: load_predcast16:
445
440
; CHECK-BE: @ %bb.0:
446
- ; CHECK-BE-NEXT: ldr r0, [r0]
447
441
; CHECK-BE-NEXT: vrev64.8 q1, q0
448
442
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
443
+ ; CHECK-BE-NEXT: vldr p0, [r0]
449
444
; CHECK-BE-NEXT: vrev32.8 q0, q0
450
- ; CHECK-BE-NEXT: vmsr p0, r0
451
445
; CHECK-BE-NEXT: vpsel q1, q1, q0
452
446
; CHECK-BE-NEXT: vrev64.8 q0, q1
453
447
; CHECK-BE-NEXT: bx lr
@@ -484,18 +478,18 @@ define arm_aapcs_vfpcc <4 x i32> @load_bc4_align2(i32* %i, <4 x i32> %a) {
484
478
define arm_aapcs_vfpcc <4 x i32 > @load_bc4_offset (i16* %i , <4 x i32 > %a ) {
485
479
; CHECK-LE-LABEL: load_bc4_offset:
486
480
; CHECK-LE: @ %bb.0:
487
- ; CHECK-LE-NEXT: ldr.w r0, [r0, #6]
481
+ ; CHECK-LE-NEXT: adds r0, #6
488
482
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
489
- ; CHECK-LE-NEXT: vmsr p0, r0
483
+ ; CHECK-LE-NEXT: vldr p0, [r0]
490
484
; CHECK-LE-NEXT: vpsel q0, q0, q1
491
485
; CHECK-LE-NEXT: bx lr
492
486
;
493
487
; CHECK-BE-LABEL: load_bc4_offset:
494
488
; CHECK-BE: @ %bb.0:
495
- ; CHECK-BE-NEXT: ldr.w r0, [r0, #6]
489
+ ; CHECK-BE-NEXT: adds r0, #6
496
490
; CHECK-BE-NEXT: vrev64.32 q1, q0
491
+ ; CHECK-BE-NEXT: vldr p0, [r0]
497
492
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
498
- ; CHECK-BE-NEXT: vmsr p0, r0
499
493
; CHECK-BE-NEXT: vpsel q1, q1, q0
500
494
; CHECK-BE-NEXT: vrev64.32 q0, q1
501
495
; CHECK-BE-NEXT: bx lr
@@ -510,18 +504,16 @@ define arm_aapcs_vfpcc <4 x i32> @load_bc4_offset(i16* %i, <4 x i32> %a) {
510
504
define arm_aapcs_vfpcc <4 x i32 > @load_bc4_range4 (i32* %i , <4 x i32 > %a ) {
511
505
; CHECK-LE-LABEL: load_bc4_range4:
512
506
; CHECK-LE: @ %bb.0:
513
- ; CHECK-LE-NEXT: ldr r0 , [r0, #4]
507
+ ; CHECK-LE-NEXT: vldr p0 , [r0, #4]
514
508
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
515
- ; CHECK-LE-NEXT: vmsr p0, r0
516
509
; CHECK-LE-NEXT: vpsel q0, q0, q1
517
510
; CHECK-LE-NEXT: bx lr
518
511
;
519
512
; CHECK-BE-LABEL: load_bc4_range4:
520
513
; CHECK-BE: @ %bb.0:
521
- ; CHECK-BE-NEXT: ldr r0 , [r0, #4]
514
+ ; CHECK-BE-NEXT: vldr p0 , [r0, #4]
522
515
; CHECK-BE-NEXT: vrev64.32 q1, q0
523
516
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
524
- ; CHECK-BE-NEXT: vmsr p0, r0
525
517
; CHECK-BE-NEXT: vpsel q1, q1, q0
526
518
; CHECK-BE-NEXT: vrev64.32 q0, q1
527
519
; CHECK-BE-NEXT: bx lr
@@ -535,18 +527,16 @@ define arm_aapcs_vfpcc <4 x i32> @load_bc4_range4(i32* %i, <4 x i32> %a) {
535
527
define arm_aapcs_vfpcc <4 x i32 > @load_bc4_range (i32* %i , <4 x i32 > %a ) {
536
528
; CHECK-LE-LABEL: load_bc4_range:
537
529
; CHECK-LE: @ %bb.0:
538
- ; CHECK-LE-NEXT: ldr.w r0 , [r0, #508]
530
+ ; CHECK-LE-NEXT: vldr p0 , [r0, #508]
539
531
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
540
- ; CHECK-LE-NEXT: vmsr p0, r0
541
532
; CHECK-LE-NEXT: vpsel q0, q0, q1
542
533
; CHECK-LE-NEXT: bx lr
543
534
;
544
535
; CHECK-BE-LABEL: load_bc4_range:
545
536
; CHECK-BE: @ %bb.0:
546
- ; CHECK-BE-NEXT: ldr.w r0 , [r0, #508]
537
+ ; CHECK-BE-NEXT: vldr p0 , [r0, #508]
547
538
; CHECK-BE-NEXT: vrev64.32 q1, q0
548
539
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
549
- ; CHECK-BE-NEXT: vmsr p0, r0
550
540
; CHECK-BE-NEXT: vpsel q1, q1, q0
551
541
; CHECK-BE-NEXT: vrev64.32 q0, q1
552
542
; CHECK-BE-NEXT: bx lr
@@ -560,22 +550,16 @@ define arm_aapcs_vfpcc <4 x i32> @load_bc4_range(i32* %i, <4 x i32> %a) {
560
550
define arm_aapcs_vfpcc <4 x i32 > @load_bc4_range2 (i32* %i , <4 x i32 > %a ) {
561
551
; CHECK-LE-LABEL: load_bc4_range2:
562
552
; CHECK-LE: @ %bb.0:
563
- ; CHECK-LE-NEXT: movw r1, #65028
553
+ ; CHECK-LE-NEXT: vldr p0, [r0, #-508]
564
554
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
565
- ; CHECK-LE-NEXT: movt r1, #65535
566
- ; CHECK-LE-NEXT: ldr r0, [r0, r1]
567
- ; CHECK-LE-NEXT: vmsr p0, r0
568
555
; CHECK-LE-NEXT: vpsel q0, q0, q1
569
556
; CHECK-LE-NEXT: bx lr
570
557
;
571
558
; CHECK-BE-LABEL: load_bc4_range2:
572
559
; CHECK-BE: @ %bb.0:
573
- ; CHECK-BE-NEXT: movw r1, #65028
560
+ ; CHECK-BE-NEXT: vldr p0, [r0, #-508]
574
561
; CHECK-BE-NEXT: vrev64.32 q1, q0
575
- ; CHECK-BE-NEXT: movt r1, #65535
576
562
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
577
- ; CHECK-BE-NEXT: ldr r0, [r0, r1]
578
- ; CHECK-BE-NEXT: vmsr p0, r0
579
563
; CHECK-BE-NEXT: vpsel q1, q1, q0
580
564
; CHECK-BE-NEXT: vrev64.32 q0, q1
581
565
; CHECK-BE-NEXT: bx lr
@@ -589,18 +573,18 @@ define arm_aapcs_vfpcc <4 x i32> @load_bc4_range2(i32* %i, <4 x i32> %a) {
589
573
define arm_aapcs_vfpcc <4 x i32 > @load_bc4_range3 (i32* %i , <4 x i32 > %a ) {
590
574
; CHECK-LE-LABEL: load_bc4_range3:
591
575
; CHECK-LE: @ %bb.0:
592
- ; CHECK-LE-NEXT: ldr .w r0, [ r0, #512]
576
+ ; CHECK-LE-NEXT: add .w r0, r0, #512
593
577
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
594
- ; CHECK-LE-NEXT: vmsr p0, r0
578
+ ; CHECK-LE-NEXT: vldr p0, [r0]
595
579
; CHECK-LE-NEXT: vpsel q0, q0, q1
596
580
; CHECK-LE-NEXT: bx lr
597
581
;
598
582
; CHECK-BE-LABEL: load_bc4_range3:
599
583
; CHECK-BE: @ %bb.0:
600
- ; CHECK-BE-NEXT: ldr .w r0, [ r0, #512]
584
+ ; CHECK-BE-NEXT: add .w r0, r0, #512
601
585
; CHECK-BE-NEXT: vrev64.32 q1, q0
586
+ ; CHECK-BE-NEXT: vldr p0, [r0]
602
587
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
603
- ; CHECK-BE-NEXT: vmsr p0, r0
604
588
; CHECK-BE-NEXT: vpsel q1, q1, q0
605
589
; CHECK-BE-NEXT: vrev64.32 q0, q1
606
590
; CHECK-BE-NEXT: bx lr
@@ -614,22 +598,18 @@ define arm_aapcs_vfpcc <4 x i32> @load_bc4_range3(i32* %i, <4 x i32> %a) {
614
598
define arm_aapcs_vfpcc <4 x i32 > @load_bc4_range5 (i32* %i , <4 x i32 > %a ) {
615
599
; CHECK-LE-LABEL: load_bc4_range5:
616
600
; CHECK-LE: @ %bb.0:
617
- ; CHECK-LE-NEXT: movw r1, #65024
601
+ ; CHECK-LE-NEXT: sub.w r0, r0, #512
618
602
; CHECK-LE-NEXT: vmov.i32 q1, #0x0
619
- ; CHECK-LE-NEXT: movt r1, #65535
620
- ; CHECK-LE-NEXT: ldr r0, [r0, r1]
621
- ; CHECK-LE-NEXT: vmsr p0, r0
603
+ ; CHECK-LE-NEXT: vldr p0, [r0]
622
604
; CHECK-LE-NEXT: vpsel q0, q0, q1
623
605
; CHECK-LE-NEXT: bx lr
624
606
;
625
607
; CHECK-BE-LABEL: load_bc4_range5:
626
608
; CHECK-BE: @ %bb.0:
627
- ; CHECK-BE-NEXT: movw r1, #65024
609
+ ; CHECK-BE-NEXT: sub.w r0, r0, #512
628
610
; CHECK-BE-NEXT: vrev64.32 q1, q0
629
- ; CHECK-BE-NEXT: movt r1, #65535
611
+ ; CHECK-BE-NEXT: vldr p0, [r0]
630
612
; CHECK-BE-NEXT: vmov.i32 q0, #0x0
631
- ; CHECK-BE-NEXT: ldr r0, [r0, r1]
632
- ; CHECK-BE-NEXT: vmsr p0, r0
633
613
; CHECK-BE-NEXT: vpsel q1, q1, q0
634
614
; CHECK-BE-NEXT: vrev64.32 q0, q1
635
615
; CHECK-BE-NEXT: bx lr
0 commit comments