Skip to content

Commit 3e335ed

Browse files
committed
Add a messy v3 test case.
1 parent be15ae2 commit 3e335ed

File tree

1 file changed

+44
-14
lines changed

1 file changed

+44
-14
lines changed

llvm/test/CodeGen/AArch64/shufflevector.ll

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,36 @@ define <4 x i64> @shufflevector_v4i64(<4 x i64> %a, <4 x i64> %b) {
387387
ret <4 x i64> %c
388388
}
389389

390+
define <3 x ptr> @shufflevector_v3p0(<3 x ptr> %a, <3 x ptr> %b) {
391+
; CHECK-SD-LABEL: shufflevector_v3p0:
392+
; CHECK-SD: // %bb.0:
393+
; CHECK-SD-NEXT: fmov d2, d5
394+
; CHECK-SD-NEXT: fmov d0, d1
395+
; CHECK-SD-NEXT: fmov d1, d3
396+
; CHECK-SD-NEXT: ret
397+
;
398+
; CHECK-GI-LABEL: shufflevector_v3p0:
399+
; CHECK-GI: // %bb.0:
400+
; CHECK-GI-NEXT: fmov x8, d0
401+
; CHECK-GI-NEXT: fmov x9, d3
402+
; CHECK-GI-NEXT: mov v0.d[0], x8
403+
; CHECK-GI-NEXT: mov v2.d[0], x9
404+
; CHECK-GI-NEXT: fmov x8, d1
405+
; CHECK-GI-NEXT: fmov x9, d4
406+
; CHECK-GI-NEXT: mov v0.d[1], x8
407+
; CHECK-GI-NEXT: mov v2.d[1], x9
408+
; CHECK-GI-NEXT: fmov x8, d5
409+
; CHECK-GI-NEXT: mov v1.d[0], x8
410+
; CHECK-GI-NEXT: ext v0.16b, v0.16b, v2.16b, #8
411+
; CHECK-GI-NEXT: fmov x10, d1
412+
; CHECK-GI-NEXT: mov d2, v0.d[1]
413+
; CHECK-GI-NEXT: fmov d1, d2
414+
; CHECK-GI-NEXT: fmov d2, x10
415+
; CHECK-GI-NEXT: ret
416+
%c = shufflevector <3 x ptr> %a, <3 x ptr> %b, <3 x i32> <i32 1, i32 3, i32 5>
417+
ret <3 x ptr> %c
418+
}
419+
390420
define <4 x ptr> @shufflevector_v4p0(<4 x ptr> %a, <4 x ptr> %b) {
391421
; CHECK-SD-LABEL: shufflevector_v4p0:
392422
; CHECK-SD: // %bb.0:
@@ -550,13 +580,13 @@ define <3 x i8> @shufflevector_v3i8(<3 x i8> %a, <3 x i8> %b) {
550580
; CHECK-GI: // %bb.0:
551581
; CHECK-GI-NEXT: fmov s0, w0
552582
; CHECK-GI-NEXT: fmov s1, w3
553-
; CHECK-GI-NEXT: adrp x8, .LCPI34_0
583+
; CHECK-GI-NEXT: adrp x8, .LCPI35_0
554584
; CHECK-GI-NEXT: mov v0.b[1], w1
555585
; CHECK-GI-NEXT: mov v1.b[1], w4
556586
; CHECK-GI-NEXT: mov v0.b[2], w2
557587
; CHECK-GI-NEXT: mov v1.b[2], w5
558588
; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
559-
; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI34_0]
589+
; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI35_0]
560590
; CHECK-GI-NEXT: tbl v0.16b, { v0.16b }, v1.16b
561591
; CHECK-GI-NEXT: umov w0, v0.b[0]
562592
; CHECK-GI-NEXT: umov w1, v0.b[1]
@@ -571,19 +601,19 @@ define <7 x i8> @shufflevector_v7i8(<7 x i8> %a, <7 x i8> %b) {
571601
; CHECK-SD: // %bb.0:
572602
; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
573603
; CHECK-SD-NEXT: // kill: def $d1 killed $d1 def $q1
574-
; CHECK-SD-NEXT: adrp x8, .LCPI35_0
604+
; CHECK-SD-NEXT: adrp x8, .LCPI36_0
575605
; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
576-
; CHECK-SD-NEXT: ldr d1, [x8, :lo12:.LCPI35_0]
606+
; CHECK-SD-NEXT: ldr d1, [x8, :lo12:.LCPI36_0]
577607
; CHECK-SD-NEXT: tbl v0.8b, { v0.16b }, v1.8b
578608
; CHECK-SD-NEXT: ret
579609
;
580610
; CHECK-GI-LABEL: shufflevector_v7i8:
581611
; CHECK-GI: // %bb.0:
582612
; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
583613
; CHECK-GI-NEXT: // kill: def $d1 killed $d1 def $q1
584-
; CHECK-GI-NEXT: adrp x8, .LCPI35_0
614+
; CHECK-GI-NEXT: adrp x8, .LCPI36_0
585615
; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
586-
; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI35_0]
616+
; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI36_0]
587617
; CHECK-GI-NEXT: tbl v0.16b, { v0.16b }, v1.16b
588618
; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
589619
; CHECK-GI-NEXT: ret
@@ -602,9 +632,9 @@ define <3 x i16> @shufflevector_v3i16(<3 x i16> %a, <3 x i16> %b) {
602632
; CHECK-GI: // %bb.0:
603633
; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
604634
; CHECK-GI-NEXT: // kill: def $d1 killed $d1 def $q1
605-
; CHECK-GI-NEXT: adrp x8, .LCPI36_0
635+
; CHECK-GI-NEXT: adrp x8, .LCPI37_0
606636
; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
607-
; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI36_0]
637+
; CHECK-GI-NEXT: ldr d1, [x8, :lo12:.LCPI37_0]
608638
; CHECK-GI-NEXT: tbl v0.16b, { v0.16b }, v1.16b
609639
; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
610640
; CHECK-GI-NEXT: ret
@@ -615,18 +645,18 @@ define <3 x i16> @shufflevector_v3i16(<3 x i16> %a, <3 x i16> %b) {
615645
define <7 x i16> @shufflevector_v7i16(<7 x i16> %a, <7 x i16> %b) {
616646
; CHECK-SD-LABEL: shufflevector_v7i16:
617647
; CHECK-SD: // %bb.0:
618-
; CHECK-SD-NEXT: adrp x8, .LCPI37_0
648+
; CHECK-SD-NEXT: adrp x8, .LCPI38_0
619649
; CHECK-SD-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
620-
; CHECK-SD-NEXT: ldr q2, [x8, :lo12:.LCPI37_0]
650+
; CHECK-SD-NEXT: ldr q2, [x8, :lo12:.LCPI38_0]
621651
; CHECK-SD-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
622652
; CHECK-SD-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
623653
; CHECK-SD-NEXT: ret
624654
;
625655
; CHECK-GI-LABEL: shufflevector_v7i16:
626656
; CHECK-GI: // %bb.0:
627-
; CHECK-GI-NEXT: adrp x8, .LCPI37_0
657+
; CHECK-GI-NEXT: adrp x8, .LCPI38_0
628658
; CHECK-GI-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
629-
; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI37_0]
659+
; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI38_0]
630660
; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
631661
; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
632662
; CHECK-GI-NEXT: ret
@@ -643,9 +673,9 @@ define <3 x i32> @shufflevector_v3i32(<3 x i32> %a, <3 x i32> %b) {
643673
;
644674
; CHECK-GI-LABEL: shufflevector_v3i32:
645675
; CHECK-GI: // %bb.0:
646-
; CHECK-GI-NEXT: adrp x8, .LCPI38_0
676+
; CHECK-GI-NEXT: adrp x8, .LCPI39_0
647677
; CHECK-GI-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
648-
; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI38_0]
678+
; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI39_0]
649679
; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
650680
; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
651681
; CHECK-GI-NEXT: ret

0 commit comments

Comments
 (0)