Skip to content

Commit 1f37d94

Browse files
committed
[PowerPC] Add extra v2i64 splat load tests. NFC
In service of D123801, this add some tests targetting a v2i64 splat of a load, and regenerates vsx_shuffle_le.ll for easier updating.
1 parent 04b4190 commit 1f37d94

File tree

2 files changed

+282
-154
lines changed

2 files changed

+282
-154
lines changed

llvm/test/CodeGen/PowerPC/canonical-merge-shuffles.ll

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,85 @@ entry:
821821
ret <2 x i64> %1
822822
}
823823

824+
define <2 x i64> @testSplati64_0(<1 x i64>* nocapture readonly %ptr) #0 {
825+
; CHECK-P8-LABEL: testSplati64_0:
826+
; CHECK-P8: # %bb.0: # %entry
827+
; CHECK-P8-NEXT: lxvdsx v2, 0, r3
828+
; CHECK-P8-NEXT: blr
829+
;
830+
; CHECK-P9-LABEL: testSplati64_0:
831+
; CHECK-P9: # %bb.0: # %entry
832+
; CHECK-P9-NEXT: lxvdsx v2, 0, r3
833+
; CHECK-P9-NEXT: blr
834+
;
835+
; CHECK-P9-BE-LABEL: testSplati64_0:
836+
; CHECK-P9-BE: # %bb.0: # %entry
837+
; CHECK-P9-BE-NEXT: lxvdsx v2, 0, r3
838+
; CHECK-P9-BE-NEXT: blr
839+
;
840+
; CHECK-NOVSX-LABEL: testSplati64_0:
841+
; CHECK-NOVSX: # %bb.0: # %entry
842+
; CHECK-NOVSX-NEXT: ld r3, 0(r3)
843+
; CHECK-NOVSX-NEXT: addi r4, r1, -16
844+
; CHECK-NOVSX-NEXT: std r3, -8(r1)
845+
; CHECK-NOVSX-NEXT: std r3, -16(r1)
846+
; CHECK-NOVSX-NEXT: lvx v2, 0, r4
847+
; CHECK-NOVSX-NEXT: blr
848+
;
849+
; CHECK-P7-LABEL: testSplati64_0:
850+
; CHECK-P7: # %bb.0: # %entry
851+
; CHECK-P7-NEXT: lxvdsx v2, 0, r3
852+
; CHECK-P7-NEXT: blr
853+
entry:
854+
%0 = load <1 x i64>, <1 x i64>* %ptr, align 8
855+
%1 = shufflevector <1 x i64> %0, <1 x i64> undef, <2 x i32> <i32 0, i32 0>
856+
ret <2 x i64> %1
857+
}
858+
859+
define <2 x i64> @testSplati64_1(<2 x i64>* nocapture readonly %ptr) #0 {
860+
; CHECK-P8-LABEL: testSplati64_1:
861+
; CHECK-P8: # %bb.0: # %entry
862+
; CHECK-P8-NEXT: lxvd2x vs0, 0, r3
863+
; CHECK-P8-NEXT: xxspltd v2, vs0, 1
864+
; CHECK-P8-NEXT: blr
865+
;
866+
; CHECK-P9-LABEL: testSplati64_1:
867+
; CHECK-P9: # %bb.0: # %entry
868+
; CHECK-P9-NEXT: lxv v2, 0(r3)
869+
; CHECK-P9-NEXT: xxspltd v2, v2, 0
870+
; CHECK-P9-NEXT: blr
871+
;
872+
; CHECK-P9-BE-LABEL: testSplati64_1:
873+
; CHECK-P9-BE: # %bb.0: # %entry
874+
; CHECK-P9-BE-NEXT: lxv v2, 0(r3)
875+
; CHECK-P9-BE-NEXT: xxspltd v2, v2, 1
876+
; CHECK-P9-BE-NEXT: blr
877+
;
878+
; CHECK-NOVSX-LABEL: testSplati64_1:
879+
; CHECK-NOVSX: # %bb.0: # %entry
880+
; CHECK-NOVSX-NEXT: ld r4, 8(r3)
881+
; CHECK-NOVSX-NEXT: std r4, -8(r1)
882+
; CHECK-NOVSX-NEXT: addis r4, r2, .LCPI21_0@toc@ha
883+
; CHECK-NOVSX-NEXT: ld r3, 0(r3)
884+
; CHECK-NOVSX-NEXT: addi r4, r4, .LCPI21_0@toc@l
885+
; CHECK-NOVSX-NEXT: lvx v2, 0, r4
886+
; CHECK-NOVSX-NEXT: std r3, -16(r1)
887+
; CHECK-NOVSX-NEXT: addi r3, r1, -16
888+
; CHECK-NOVSX-NEXT: lvx v3, 0, r3
889+
; CHECK-NOVSX-NEXT: vperm v2, v3, v3, v2
890+
; CHECK-NOVSX-NEXT: blr
891+
;
892+
; CHECK-P7-LABEL: testSplati64_1:
893+
; CHECK-P7: # %bb.0: # %entry
894+
; CHECK-P7-NEXT: lxvd2x vs0, 0, r3
895+
; CHECK-P7-NEXT: xxspltd v2, vs0, 1
896+
; CHECK-P7-NEXT: blr
897+
entry:
898+
%0 = load <2 x i64>, <2 x i64>* %ptr, align 8
899+
%1 = shufflevector <2 x i64> %0, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
900+
ret <2 x i64> %1
901+
}
902+
824903
define dso_local void @testByteSplat() #0 {
825904
; CHECK-P8-LABEL: testByteSplat:
826905
; CHECK-P8: # %bb.0: # %entry

0 commit comments

Comments
 (0)