@@ -408,6 +408,7 @@ define void @foo_zext_v2i64_v2i32(<2 x i64> *%dest, <2 x i32> *%mask, <2 x i32>
408
408
; CHECK-LE-NEXT: ldrd lr, r12, [r1]
409
409
; CHECK-LE-NEXT: movs r1, #0
410
410
; CHECK-LE-NEXT: @ implicit-def: $q1
411
+ ; CHECK-LE-NEXT: vmov.i64 q2, #0xffffffff
411
412
; CHECK-LE-NEXT: rsbs.w r3, lr, #0
412
413
; CHECK-LE-NEXT: vmov.32 q0[0], lr
413
414
; CHECK-LE-NEXT: sbcs.w r3, r1, lr, asr #31
@@ -424,23 +425,21 @@ define void @foo_zext_v2i64_v2i32(<2 x i64> *%dest, <2 x i32> *%mask, <2 x i32>
424
425
; CHECK-LE-NEXT: bfi r1, lr, #0, #1
425
426
; CHECK-LE-NEXT: vmov.32 q0[2], r12
426
427
; CHECK-LE-NEXT: and r3, r1, #3
427
- ; CHECK-LE-NEXT: adr .w r12, .LCPI7_0
428
+ ; CHECK-LE-NEXT: mov .w r12, #0
428
429
; CHECK-LE-NEXT: lsls r1, r1, #31
429
430
; CHECK-LE-NEXT: itt ne
430
431
; CHECK-LE-NEXT: ldrne r1, [r2]
431
432
; CHECK-LE-NEXT: vmovne.32 q1[0], r1
432
433
; CHECK-LE-NEXT: lsls r1, r3, #30
433
- ; CHECK-LE-NEXT: vmov r3, s0
434
434
; CHECK-LE-NEXT: itt mi
435
435
; CHECK-LE-NEXT: ldrmi r1, [r2, #4]
436
436
; CHECK-LE-NEXT: vmovmi.32 q1[2], r1
437
+ ; CHECK-LE-NEXT: vmov r1, s0
437
438
; CHECK-LE-NEXT: movs r2, #0
438
- ; CHECK-LE-NEXT: vldrw.u32 q2, [r12]
439
- ; CHECK-LE-NEXT: mov.w r12, #0
440
439
; CHECK-LE-NEXT: vand q1, q1, q2
441
- ; CHECK-LE-NEXT: rsbs r1, r3, #0
442
- ; CHECK-LE-NEXT: sbcs.w r1, r2, r3, asr #31
440
+ ; CHECK-LE-NEXT: rsbs r3, r1, #0
443
441
; CHECK-LE-NEXT: vmov r3, s2
442
+ ; CHECK-LE-NEXT: sbcs.w r1, r2, r1, asr #31
444
443
; CHECK-LE-NEXT: it lt
445
444
; CHECK-LE-NEXT: movlt.w r12, #1
446
445
; CHECK-LE-NEXT: rsbs r1, r3, #0
@@ -460,13 +459,6 @@ define void @foo_zext_v2i64_v2i32(<2 x i64> *%dest, <2 x i32> *%mask, <2 x i32>
460
459
; CHECK-LE-NEXT: vstrmi d3, [r0, #8]
461
460
; CHECK-LE-NEXT: add sp, #4
462
461
; CHECK-LE-NEXT: pop {r7, pc}
463
- ; CHECK-LE-NEXT: .p2align 4
464
- ; CHECK-LE-NEXT: @ %bb.1:
465
- ; CHECK-LE-NEXT: .LCPI7_0:
466
- ; CHECK-LE-NEXT: .long 4294967295 @ 0xffffffff
467
- ; CHECK-LE-NEXT: .long 0 @ 0x0
468
- ; CHECK-LE-NEXT: .long 4294967295 @ 0xffffffff
469
- ; CHECK-LE-NEXT: .long 0 @ 0x0
470
462
;
471
463
; CHECK-BE-LABEL: foo_zext_v2i64_v2i32:
472
464
; CHECK-BE: @ %bb.0: @ %entry
@@ -511,15 +503,13 @@ define void @foo_zext_v2i64_v2i32(<2 x i64> *%dest, <2 x i32> *%mask, <2 x i32>
511
503
; CHECK-BE-NEXT: .LBB7_4: @ %else2
512
504
; CHECK-BE-NEXT: vrev64.32 q3, q2
513
505
; CHECK-BE-NEXT: movs r2, #0
514
- ; CHECK-BE-NEXT: vmov r3, s15
515
- ; CHECK-BE-NEXT: adr.w r12, .LCPI7_0
516
- ; CHECK-BE-NEXT: vldrb.u8 q0, [r12]
506
+ ; CHECK-BE-NEXT: vmov r1, s15
517
507
; CHECK-BE-NEXT: mov.w r12, #0
518
- ; CHECK-BE-NEXT: vrev64.8 q2, q0
519
- ; CHECK-BE-NEXT: vand q0, q1, q2
520
- ; CHECK-BE-NEXT: rsbs r1, r3, #0
521
- ; CHECK-BE-NEXT: sbcs.w r1, r2, r3, asr #31
508
+ ; CHECK-BE-NEXT: vmov.i64 q0, #0xffffffff
509
+ ; CHECK-BE-NEXT: vand q0, q1, q0
510
+ ; CHECK-BE-NEXT: rsbs r3, r1, #0
522
511
; CHECK-BE-NEXT: vmov r3, s13
512
+ ; CHECK-BE-NEXT: sbcs.w r1, r2, r1, asr #31
523
513
; CHECK-BE-NEXT: it lt
524
514
; CHECK-BE-NEXT: movlt.w r12, #1
525
515
; CHECK-BE-NEXT: rsbs r1, r3, #0
@@ -539,13 +529,6 @@ define void @foo_zext_v2i64_v2i32(<2 x i64> *%dest, <2 x i32> *%mask, <2 x i32>
539
529
; CHECK-BE-NEXT: vstrmi d1, [r0, #8]
540
530
; CHECK-BE-NEXT: add sp, #4
541
531
; CHECK-BE-NEXT: pop {r7, pc}
542
- ; CHECK-BE-NEXT: .p2align 4
543
- ; CHECK-BE-NEXT: @ %bb.5:
544
- ; CHECK-BE-NEXT: .LCPI7_0:
545
- ; CHECK-BE-NEXT: .long 0 @ 0x0
546
- ; CHECK-BE-NEXT: .long 4294967295 @ 0xffffffff
547
- ; CHECK-BE-NEXT: .long 0 @ 0x0
548
- ; CHECK-BE-NEXT: .long 4294967295 @ 0xffffffff
549
532
entry:
550
533
%0 = load <2 x i32 >, <2 x i32 >* %mask , align 4
551
534
%1 = icmp sgt <2 x i32 > %0 , zeroinitializer
@@ -565,6 +548,7 @@ define void @foo_zext_v2i64_v2i32_unaligned(<2 x i64> *%dest, <2 x i32> *%mask,
565
548
; CHECK-LE-NEXT: ldrd lr, r12, [r1]
566
549
; CHECK-LE-NEXT: movs r1, #0
567
550
; CHECK-LE-NEXT: @ implicit-def: $q1
551
+ ; CHECK-LE-NEXT: vmov.i64 q2, #0xffffffff
568
552
; CHECK-LE-NEXT: rsbs.w r3, lr, #0
569
553
; CHECK-LE-NEXT: vmov.32 q0[0], lr
570
554
; CHECK-LE-NEXT: sbcs.w r3, r1, lr, asr #31
@@ -581,23 +565,21 @@ define void @foo_zext_v2i64_v2i32_unaligned(<2 x i64> *%dest, <2 x i32> *%mask,
581
565
; CHECK-LE-NEXT: bfi r1, lr, #0, #1
582
566
; CHECK-LE-NEXT: vmov.32 q0[2], r12
583
567
; CHECK-LE-NEXT: and r3, r1, #3
584
- ; CHECK-LE-NEXT: adr .w r12, .LCPI8_0
568
+ ; CHECK-LE-NEXT: mov .w r12, #0
585
569
; CHECK-LE-NEXT: lsls r1, r1, #31
586
570
; CHECK-LE-NEXT: itt ne
587
571
; CHECK-LE-NEXT: ldrne r1, [r2]
588
572
; CHECK-LE-NEXT: vmovne.32 q1[0], r1
589
573
; CHECK-LE-NEXT: lsls r1, r3, #30
590
- ; CHECK-LE-NEXT: vmov r3, s0
591
574
; CHECK-LE-NEXT: itt mi
592
575
; CHECK-LE-NEXT: ldrmi r1, [r2, #4]
593
576
; CHECK-LE-NEXT: vmovmi.32 q1[2], r1
577
+ ; CHECK-LE-NEXT: vmov r1, s0
594
578
; CHECK-LE-NEXT: movs r2, #0
595
- ; CHECK-LE-NEXT: vldrw.u32 q2, [r12]
596
- ; CHECK-LE-NEXT: mov.w r12, #0
597
579
; CHECK-LE-NEXT: vand q1, q1, q2
598
- ; CHECK-LE-NEXT: rsbs r1, r3, #0
599
- ; CHECK-LE-NEXT: sbcs.w r1, r2, r3, asr #31
580
+ ; CHECK-LE-NEXT: rsbs r3, r1, #0
600
581
; CHECK-LE-NEXT: vmov r3, s2
582
+ ; CHECK-LE-NEXT: sbcs.w r1, r2, r1, asr #31
601
583
; CHECK-LE-NEXT: it lt
602
584
; CHECK-LE-NEXT: movlt.w r12, #1
603
585
; CHECK-LE-NEXT: rsbs r1, r3, #0
@@ -619,13 +601,6 @@ define void @foo_zext_v2i64_v2i32_unaligned(<2 x i64> *%dest, <2 x i32> *%mask,
619
601
; CHECK-LE-NEXT: strdmi r1, r2, [r0, #8]
620
602
; CHECK-LE-NEXT: add sp, #4
621
603
; CHECK-LE-NEXT: pop {r7, pc}
622
- ; CHECK-LE-NEXT: .p2align 4
623
- ; CHECK-LE-NEXT: @ %bb.1:
624
- ; CHECK-LE-NEXT: .LCPI8_0:
625
- ; CHECK-LE-NEXT: .long 4294967295 @ 0xffffffff
626
- ; CHECK-LE-NEXT: .long 0 @ 0x0
627
- ; CHECK-LE-NEXT: .long 4294967295 @ 0xffffffff
628
- ; CHECK-LE-NEXT: .long 0 @ 0x0
629
604
;
630
605
; CHECK-BE-LABEL: foo_zext_v2i64_v2i32_unaligned:
631
606
; CHECK-BE: @ %bb.0: @ %entry
@@ -670,15 +645,13 @@ define void @foo_zext_v2i64_v2i32_unaligned(<2 x i64> *%dest, <2 x i32> *%mask,
670
645
; CHECK-BE-NEXT: .LBB8_4: @ %else2
671
646
; CHECK-BE-NEXT: vrev64.32 q3, q2
672
647
; CHECK-BE-NEXT: movs r2, #0
673
- ; CHECK-BE-NEXT: vmov r3, s15
674
- ; CHECK-BE-NEXT: adr.w r12, .LCPI8_0
675
- ; CHECK-BE-NEXT: vldrb.u8 q0, [r12]
648
+ ; CHECK-BE-NEXT: vmov r1, s15
676
649
; CHECK-BE-NEXT: mov.w r12, #0
677
- ; CHECK-BE-NEXT: vrev64.8 q2, q0
678
- ; CHECK-BE-NEXT: vand q0, q1, q2
679
- ; CHECK-BE-NEXT: rsbs r1, r3, #0
680
- ; CHECK-BE-NEXT: sbcs.w r1, r2, r3, asr #31
650
+ ; CHECK-BE-NEXT: vmov.i64 q0, #0xffffffff
651
+ ; CHECK-BE-NEXT: vand q0, q1, q0
652
+ ; CHECK-BE-NEXT: rsbs r3, r1, #0
681
653
; CHECK-BE-NEXT: vmov r3, s13
654
+ ; CHECK-BE-NEXT: sbcs.w r1, r2, r1, asr #31
682
655
; CHECK-BE-NEXT: it lt
683
656
; CHECK-BE-NEXT: movlt.w r12, #1
684
657
; CHECK-BE-NEXT: rsbs r1, r3, #0
@@ -700,13 +673,6 @@ define void @foo_zext_v2i64_v2i32_unaligned(<2 x i64> *%dest, <2 x i32> *%mask,
700
673
; CHECK-BE-NEXT: strdmi r2, r1, [r0, #8]
701
674
; CHECK-BE-NEXT: add sp, #4
702
675
; CHECK-BE-NEXT: pop {r7, pc}
703
- ; CHECK-BE-NEXT: .p2align 4
704
- ; CHECK-BE-NEXT: @ %bb.5:
705
- ; CHECK-BE-NEXT: .LCPI8_0:
706
- ; CHECK-BE-NEXT: .long 0 @ 0x0
707
- ; CHECK-BE-NEXT: .long 4294967295 @ 0xffffffff
708
- ; CHECK-BE-NEXT: .long 0 @ 0x0
709
- ; CHECK-BE-NEXT: .long 4294967295 @ 0xffffffff
710
676
entry:
711
677
%0 = load <2 x i32 >, <2 x i32 >* %mask , align 4
712
678
%1 = icmp sgt <2 x i32 > %0 , zeroinitializer
0 commit comments