@@ -821,6 +821,85 @@ entry:
821
821
ret <2 x i64 > %1
822
822
}
823
823
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
+
824
903
define dso_local void @testByteSplat () #0 {
825
904
; CHECK-P8-LABEL: testByteSplat:
826
905
; CHECK-P8: # %bb.0: # %entry
0 commit comments