@@ -573,35 +573,53 @@ entry:
573
573
define void @extension_in_loop_v16i8_to_v16i32 (i8* %src , i32* %dst ) {
574
574
; CHECK-LABEL: extension_in_loop_v16i8_to_v16i32:
575
575
; CHECK: ; %bb.0: ; %entry
576
- ; CHECK-NEXT: movi.2d v0, #0xffffffffffffffff
576
+ ; CHECK-NEXT: Lloh2:
577
+ ; CHECK-NEXT: adrp x9, lCPI24_0@PAGE
578
+ ; CHECK-NEXT: Lloh3:
579
+ ; CHECK-NEXT: adrp x10, lCPI24_1@PAGE
580
+ ; CHECK-NEXT: Lloh4:
581
+ ; CHECK-NEXT: adrp x11, lCPI24_2@PAGE
582
+ ; CHECK-NEXT: Lloh5:
583
+ ; CHECK-NEXT: adrp x12, lCPI24_3@PAGE
584
+ ; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff
577
585
; CHECK-NEXT: mov x8, xzr
586
+ ; CHECK-NEXT: Lloh6:
587
+ ; CHECK-NEXT: ldr q0, [x9, lCPI24_0@PAGEOFF]
588
+ ; CHECK-NEXT: Lloh7:
589
+ ; CHECK-NEXT: ldr q1, [x10, lCPI24_1@PAGEOFF]
590
+ ; CHECK-NEXT: Lloh8:
591
+ ; CHECK-NEXT: ldr q3, [x11, lCPI24_2@PAGEOFF]
592
+ ; CHECK-NEXT: Lloh9:
593
+ ; CHECK-NEXT: ldr q4, [x12, lCPI24_3@PAGEOFF]
578
594
; CHECK-NEXT: LBB24_1: ; %loop
579
595
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
580
- ; CHECK-NEXT: ldr q1 , [x0, x8]
596
+ ; CHECK-NEXT: ldr q5 , [x0, x8]
581
597
; CHECK-NEXT: add x8, x8, #16
582
598
; CHECK-NEXT: cmp x8, #128
583
- ; CHECK-NEXT: cmgt.16b v2, v1, v0
584
- ; CHECK-NEXT: ushll2.8h v3, v1, #0
585
- ; CHECK-NEXT: sshll2.8h v4, v2, #0
586
- ; CHECK-NEXT: ushll2.4s v5, v3, #0
587
- ; CHECK-NEXT: ushll.4s v3, v3, #0
588
- ; CHECK-NEXT: sshll2.4s v6, v4, #0
589
- ; CHECK-NEXT: sshll.4s v4, v4, #0
590
- ; CHECK-NEXT: ushll.8h v1, v1, #0
591
- ; CHECK-NEXT: sshll.8h v2, v2, #0
599
+ ; CHECK-NEXT: cmgt.16b v6, v5, v2
600
+ ; CHECK-NEXT: tbl.16b v7, { v5 }, v0
601
+ ; CHECK-NEXT: tbl.16b v16, { v5 }, v1
602
+ ; CHECK-NEXT: sshll2.8h v18, v6, #0
603
+ ; CHECK-NEXT: tbl.16b v17, { v5 }, v3
604
+ ; CHECK-NEXT: sshll2.4s v19, v18, #0
605
+ ; CHECK-NEXT: sshll.4s v18, v18, #0
606
+ ; CHECK-NEXT: tbl.16b v5, { v5 }, v4
607
+ ; CHECK-NEXT: sshll.8h v6, v6, #0
608
+ ; CHECK-NEXT: and.16b v7, v7, v19
609
+ ; CHECK-NEXT: and.16b v16, v16, v18
610
+ ; CHECK-NEXT: stp q16, q7, [x1, #32]
611
+ ; CHECK-NEXT: sshll2.4s v7, v6, #0
612
+ ; CHECK-NEXT: sshll.4s v6, v6, #0
613
+ ; CHECK-NEXT: and.16b v7, v17, v7
592
614
; CHECK-NEXT: and.16b v5, v5, v6
593
- ; CHECK-NEXT: and.16b v3, v3, v4
594
- ; CHECK-NEXT: stp q3, q5, [x1, #32]
595
- ; CHECK-NEXT: sshll2.4s v4, v2, #0
596
- ; CHECK-NEXT: sshll.4s v2, v2, #0
597
- ; CHECK-NEXT: ushll2.4s v3, v1, #0
598
- ; CHECK-NEXT: ushll.4s v1, v1, #0
599
- ; CHECK-NEXT: and.16b v3, v3, v4
600
- ; CHECK-NEXT: and.16b v1, v1, v2
601
- ; CHECK-NEXT: stp q1, q3, [x1], #64
615
+ ; CHECK-NEXT: stp q5, q7, [x1], #64
602
616
; CHECK-NEXT: b.ne LBB24_1
603
617
; CHECK-NEXT: ; %bb.2: ; %exit
604
618
; CHECK-NEXT: ret
619
+ ; CHECK-NEXT: .loh AdrpLdr Lloh5, Lloh9
620
+ ; CHECK-NEXT: .loh AdrpLdr Lloh4, Lloh8
621
+ ; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7
622
+ ; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6
605
623
entry:
606
624
br label %loop
607
625
@@ -627,23 +645,23 @@ exit:
627
645
define void @extension_in_loop_as_shuffle_v16i8_to_v16i32 (i8* %src , i32* %dst ) {
628
646
; CHECK-LABEL: extension_in_loop_as_shuffle_v16i8_to_v16i32:
629
647
; CHECK: ; %bb.0: ; %entry
630
- ; CHECK-NEXT: Lloh2 :
648
+ ; CHECK-NEXT: Lloh10 :
631
649
; CHECK-NEXT: adrp x9, lCPI25_0@PAGE
632
- ; CHECK-NEXT: Lloh3 :
650
+ ; CHECK-NEXT: Lloh11 :
633
651
; CHECK-NEXT: adrp x10, lCPI25_1@PAGE
634
- ; CHECK-NEXT: Lloh4 :
652
+ ; CHECK-NEXT: Lloh12 :
635
653
; CHECK-NEXT: adrp x11, lCPI25_2@PAGE
636
- ; CHECK-NEXT: Lloh5 :
654
+ ; CHECK-NEXT: Lloh13 :
637
655
; CHECK-NEXT: adrp x12, lCPI25_3@PAGE
638
656
; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff
639
657
; CHECK-NEXT: mov x8, xzr
640
- ; CHECK-NEXT: Lloh6 :
658
+ ; CHECK-NEXT: Lloh14 :
641
659
; CHECK-NEXT: ldr q0, [x9, lCPI25_0@PAGEOFF]
642
- ; CHECK-NEXT: Lloh7 :
660
+ ; CHECK-NEXT: Lloh15 :
643
661
; CHECK-NEXT: ldr q1, [x10, lCPI25_1@PAGEOFF]
644
- ; CHECK-NEXT: Lloh8 :
662
+ ; CHECK-NEXT: Lloh16 :
645
663
; CHECK-NEXT: ldr q3, [x11, lCPI25_2@PAGEOFF]
646
- ; CHECK-NEXT: Lloh9 :
664
+ ; CHECK-NEXT: Lloh17 :
647
665
; CHECK-NEXT: ldr q4, [x12, lCPI25_3@PAGEOFF]
648
666
; CHECK-NEXT: LBB25_1: ; %loop
649
667
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
@@ -670,10 +688,10 @@ define void @extension_in_loop_as_shuffle_v16i8_to_v16i32(i8* %src, i32* %dst) {
670
688
; CHECK-NEXT: b.ne LBB25_1
671
689
; CHECK-NEXT: ; %bb.2: ; %exit
672
690
; CHECK-NEXT: ret
673
- ; CHECK-NEXT: .loh AdrpLdr Lloh5, Lloh9
674
- ; CHECK-NEXT: .loh AdrpLdr Lloh4, Lloh8
675
- ; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7
676
- ; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6
691
+ ; CHECK-NEXT: .loh AdrpLdr Lloh13, Lloh17
692
+ ; CHECK-NEXT: .loh AdrpLdr Lloh12, Lloh16
693
+ ; CHECK-NEXT: .loh AdrpLdr Lloh11, Lloh15
694
+ ; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh14
677
695
entry:
678
696
br label %loop
679
697
@@ -700,23 +718,23 @@ exit:
700
718
define void @shuffle_in_loop_is_no_extend_v16i8_to_v16i32 (i8* %src , i32* %dst ) {
701
719
; CHECK-LABEL: shuffle_in_loop_is_no_extend_v16i8_to_v16i32:
702
720
; CHECK: ; %bb.0: ; %entry
703
- ; CHECK-NEXT: Lloh10 :
721
+ ; CHECK-NEXT: Lloh18 :
704
722
; CHECK-NEXT: adrp x9, lCPI26_0@PAGE
705
- ; CHECK-NEXT: Lloh11 :
723
+ ; CHECK-NEXT: Lloh19 :
706
724
; CHECK-NEXT: adrp x10, lCPI26_1@PAGE
707
- ; CHECK-NEXT: Lloh12 :
725
+ ; CHECK-NEXT: Lloh20 :
708
726
; CHECK-NEXT: adrp x11, lCPI26_2@PAGE
709
- ; CHECK-NEXT: Lloh13 :
727
+ ; CHECK-NEXT: Lloh21 :
710
728
; CHECK-NEXT: adrp x12, lCPI26_3@PAGE
711
729
; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff
712
730
; CHECK-NEXT: mov x8, xzr
713
- ; CHECK-NEXT: Lloh14 :
731
+ ; CHECK-NEXT: Lloh22 :
714
732
; CHECK-NEXT: ldr q0, [x9, lCPI26_0@PAGEOFF]
715
- ; CHECK-NEXT: Lloh15 :
733
+ ; CHECK-NEXT: Lloh23 :
716
734
; CHECK-NEXT: ldr q1, [x10, lCPI26_1@PAGEOFF]
717
- ; CHECK-NEXT: Lloh16 :
735
+ ; CHECK-NEXT: Lloh24 :
718
736
; CHECK-NEXT: ldr q3, [x11, lCPI26_2@PAGEOFF]
719
- ; CHECK-NEXT: Lloh17 :
737
+ ; CHECK-NEXT: Lloh25 :
720
738
; CHECK-NEXT: ldr q4, [x12, lCPI26_3@PAGEOFF]
721
739
; CHECK-NEXT: LBB26_1: ; %loop
722
740
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
@@ -743,10 +761,10 @@ define void @shuffle_in_loop_is_no_extend_v16i8_to_v16i32(i8* %src, i32* %dst) {
743
761
; CHECK-NEXT: b.ne LBB26_1
744
762
; CHECK-NEXT: ; %bb.2: ; %exit
745
763
; CHECK-NEXT: ret
746
- ; CHECK-NEXT: .loh AdrpLdr Lloh13, Lloh17
747
- ; CHECK-NEXT: .loh AdrpLdr Lloh12, Lloh16
748
- ; CHECK-NEXT: .loh AdrpLdr Lloh11, Lloh15
749
- ; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh14
764
+ ; CHECK-NEXT: .loh AdrpLdr Lloh21, Lloh25
765
+ ; CHECK-NEXT: .loh AdrpLdr Lloh20, Lloh24
766
+ ; CHECK-NEXT: .loh AdrpLdr Lloh19, Lloh23
767
+ ; CHECK-NEXT: .loh AdrpLdr Lloh18, Lloh22
750
768
entry:
751
769
br label %loop
752
770
0 commit comments