56 changes: 20 additions & 36 deletions llvm/test/CodeGen/PowerPC/scalar-float-ldst.ll
Original file line number Diff line number Diff line change
Expand Up @@ -2516,8 +2516,7 @@ entry:
define dso_local float @ld_align32_float_uint64_t(i8* nocapture readonly %ptr) {
; CHECK-P10-LABEL: ld_align32_float_uint64_t:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: lfdx f0, r3, r4
; CHECK-P10-NEXT: plfd f0, 99999000(r3), 0
; CHECK-P10-NEXT: xscvuxdsp f1, f0
; CHECK-P10-NEXT: blr
;
Expand Down Expand Up @@ -2650,8 +2649,7 @@ define dso_local float @ld_disjoint_align32_float_uint64_t(i64 %ptr) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: lfdx f0, r3, r4
; CHECK-P10-NEXT: plfd f0, 999990000(r3), 0
; CHECK-P10-NEXT: xscvuxdsp f1, f0
; CHECK-P10-NEXT: blr
;
Expand Down Expand Up @@ -2826,8 +2824,7 @@ entry:
define dso_local float @ld_align32_float_int64_t(i8* nocapture readonly %ptr) {
; CHECK-P10-LABEL: ld_align32_float_int64_t:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: lfdx f0, r3, r4
; CHECK-P10-NEXT: plfd f0, 99999000(r3), 0
; CHECK-P10-NEXT: xscvsxdsp f1, f0
; CHECK-P10-NEXT: blr
;
Expand Down Expand Up @@ -2960,8 +2957,7 @@ define dso_local float @ld_disjoint_align32_float_int64_t(i64 %ptr) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: lfdx f0, r3, r4
; CHECK-P10-NEXT: plfd f0, 999990000(r3), 0
; CHECK-P10-NEXT: xscvsxdsp f1, f0
; CHECK-P10-NEXT: blr
;
Expand Down Expand Up @@ -3132,8 +3128,7 @@ entry:
define dso_local float @ld_align32_float_float(i8* nocapture readonly %ptr) {
; CHECK-P10-LABEL: ld_align32_float_float:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: lfsx f1, r3, r4
; CHECK-P10-NEXT: plfs f1, 99999000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-PREP10-LABEL: ld_align32_float_float:
Expand Down Expand Up @@ -3250,8 +3245,7 @@ define dso_local float @ld_disjoint_align32_float_float(i64 %ptr) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: lfsx f1, r3, r4
; CHECK-P10-NEXT: plfs f1, 999990000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_disjoint_align32_float_float:
Expand Down Expand Up @@ -3409,8 +3403,7 @@ entry:
define dso_local float @ld_align32_float_double(i8* nocapture readonly %ptr) {
; CHECK-P10-LABEL: ld_align32_float_double:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: lfdx f0, r3, r4
; CHECK-P10-NEXT: plfd f0, 99999000(r3), 0
; CHECK-P10-NEXT: xsrsp f1, f0
; CHECK-P10-NEXT: blr
;
Expand Down Expand Up @@ -3543,8 +3536,7 @@ define dso_local float @ld_disjoint_align32_float_double(i64 %ptr) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: lfdx f0, r3, r4
; CHECK-P10-NEXT: plfd f0, 999990000(r3), 0
; CHECK-P10-NEXT: xsrsp f1, f0
; CHECK-P10-NEXT: blr
;
Expand Down Expand Up @@ -6160,9 +6152,8 @@ entry:
define dso_local void @st_align32_float_uint64_t(i8* nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_uint64_t:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsdx f0, r3, r4
; CHECK-P10-NEXT: xscvdpuxds v2, f1
; CHECK-P10-NEXT: pstxsd v2, 99999000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-PREP10-LABEL: st_align32_float_uint64_t:
Expand Down Expand Up @@ -6322,11 +6313,10 @@ entry:
define dso_local void @st_disjoint_align32_float_uint64_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align32_float_uint64_t:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: xscvdpuxds v2, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: stxsdx f0, r3, r4
; CHECK-P10-NEXT: pstxsd v2, 999990000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_align32_float_uint64_t:
Expand Down Expand Up @@ -6548,9 +6538,8 @@ entry:
define dso_local void @st_align32_float_int64_t(i8* nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_int64_t:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsdx f0, r3, r4
; CHECK-P10-NEXT: xscvdpsxds v2, f1
; CHECK-P10-NEXT: pstxsd v2, 99999000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-PREP10-LABEL: st_align32_float_int64_t:
Expand Down Expand Up @@ -6710,11 +6699,10 @@ entry:
define dso_local void @st_disjoint_align32_float_int64_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align32_float_int64_t:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: xscvdpsxds v2, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: stxsdx f0, r3, r4
; CHECK-P10-NEXT: pstxsd v2, 999990000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_align32_float_int64_t:
Expand Down Expand Up @@ -6919,8 +6907,7 @@ entry:
define dso_local void @st_align32_float_float(i8* nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_float:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stfsx f1, r3, r4
; CHECK-P10-NEXT: pstfs f1, 99999000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-PREP10-LABEL: st_align32_float_float:
Expand Down Expand Up @@ -7037,8 +7024,7 @@ define dso_local void @st_disjoint_align32_float_float(i64 %ptr, float %str) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: stfsx f1, r3, r4
; CHECK-P10-NEXT: pstfs f1, 999990000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_align32_float_float:
Expand Down Expand Up @@ -7194,8 +7180,7 @@ entry:
define dso_local void @st_align32_float_double(i8* nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_double:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stfdx f1, r3, r4
; CHECK-P10-NEXT: pstfd f1, 99999000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-PREP10-LABEL: st_align32_float_double:
Expand Down Expand Up @@ -7319,8 +7304,7 @@ define dso_local void @st_disjoint_align32_float_double(i64 %ptr, float %str) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: stfdx f1, r3, r4
; CHECK-P10-NEXT: pstfd f1, 999990000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_align32_float_double:
Expand Down
162 changes: 54 additions & 108 deletions llvm/test/CodeGen/PowerPC/scalar-i16-ldst.ll

Large diffs are not rendered by default.

201 changes: 85 additions & 116 deletions llvm/test/CodeGen/PowerPC/scalar-i32-ldst.ll

Large diffs are not rendered by default.

292 changes: 136 additions & 156 deletions llvm/test/CodeGen/PowerPC/scalar-i64-ldst.ll

Large diffs are not rendered by default.

174 changes: 58 additions & 116 deletions llvm/test/CodeGen/PowerPC/scalar-i8-ldst.ll

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions llvm/test/CodeGen/PowerPC/vec_insert_elt.ll
Original file line number Diff line number Diff line change
Expand Up @@ -671,15 +671,13 @@ entry:
define <2 x double> @testDoubleImm4(<2 x double> %a, i32* %b) {
; CHECK-LABEL: testDoubleImm4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lis r3, 4
; CHECK-NEXT: lfdx f0, r5, r3
; CHECK-NEXT: plfd f0, 262144(r5), 0
; CHECK-NEXT: xxmrghd v2, v2, vs0
; CHECK-NEXT: blr
;
; CHECK-BE-LABEL: testDoubleImm4:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: lis r3, 4
; CHECK-BE-NEXT: lfdx f0, r5, r3
; CHECK-BE-NEXT: plfd f0, 262144(r5), 0
; CHECK-BE-NEXT: xxpermdi v2, vs0, v2, 1
; CHECK-BE-NEXT: blr
;
Expand Down
156 changes: 96 additions & 60 deletions llvm/test/CodeGen/PowerPC/vector-ldst.ll
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,16 @@ entry:

; Function Attrs: norecurse nounwind readonly uwtable willreturn
define dso_local <16 x i8> @ld_unalign16_vector(i8* nocapture readonly %ptr) {
; CHECK-LABEL: ld_unalign16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r4, 1
; CHECK-NEXT: lxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: ld_unalign16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: plxv v2, 1(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_unalign16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 1
; CHECK-P9-NEXT: lxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: ld_unalign16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand All @@ -68,11 +73,16 @@ entry:

; Function Attrs: norecurse nounwind readonly uwtable willreturn
define dso_local <16 x i8> @ld_align16_vector(i8* nocapture readonly %ptr) {
; CHECK-LABEL: ld_align16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r4, 8
; CHECK-NEXT: lxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: ld_align16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: plxv v2, 8(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_align16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 8
; CHECK-P9-NEXT: lxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: ld_align16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand All @@ -96,8 +106,7 @@ entry:
define dso_local <16 x i8> @ld_unalign32_vector(i8* nocapture readonly %ptr) {
; CHECK-P10-LABEL: ld_unalign32_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999
; CHECK-P10-NEXT: lxvx v2, r3, r4
; CHECK-P10-NEXT: plxv v2, 99999(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_unalign32_vector:
Expand Down Expand Up @@ -131,8 +140,7 @@ entry:
define dso_local <16 x i8> @ld_align32_vector(i8* nocapture readonly %ptr) {
; CHECK-P10-LABEL: ld_align32_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: lxvx v2, r3, r4
; CHECK-P10-NEXT: plxv v2, 99999000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_align32_vector:
Expand Down Expand Up @@ -350,12 +358,18 @@ entry:

; Function Attrs: norecurse nounwind readonly uwtable willreturn
define dso_local <16 x i8> @ld_disjoint_unalign16_vector(i64 %ptr) {
; CHECK-LABEL: ld_disjoint_unalign16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: rldicr r3, r3, 0, 51
; CHECK-NEXT: li r4, 6
; CHECK-NEXT: lxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: ld_disjoint_unalign16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: rldicr r3, r3, 0, 51
; CHECK-P10-NEXT: plxv v2, 6(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_disjoint_unalign16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: rldicr r3, r3, 0, 51
; CHECK-P9-NEXT: li r4, 6
; CHECK-P9-NEXT: lxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: ld_disjoint_unalign16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand All @@ -380,12 +394,18 @@ entry:

; Function Attrs: norecurse nounwind readonly uwtable willreturn
define dso_local <16 x i8> @ld_disjoint_align16_vector(i64 %ptr) {
; CHECK-LABEL: ld_disjoint_align16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: rldicr r3, r3, 0, 51
; CHECK-NEXT: li r4, 24
; CHECK-NEXT: lxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: ld_disjoint_align16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: rldicr r3, r3, 0, 51
; CHECK-P10-NEXT: plxv v2, 24(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_disjoint_align16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: rldicr r3, r3, 0, 51
; CHECK-P9-NEXT: li r4, 24
; CHECK-P9-NEXT: lxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: ld_disjoint_align16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand Down Expand Up @@ -442,8 +462,7 @@ define dso_local <16 x i8> @ld_disjoint_unalign32_vector(i64 %ptr) {
; CHECK-P10-LABEL: ld_disjoint_unalign32_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: rldicr r3, r3, 0, 43
; CHECK-P10-NEXT: pli r4, 99999
; CHECK-P10-NEXT: lxvx v2, r3, r4
; CHECK-P10-NEXT: plxv v2, 99999(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_disjoint_unalign32_vector:
Expand Down Expand Up @@ -483,8 +502,7 @@ define dso_local <16 x i8> @ld_disjoint_align32_vector(i64 %ptr) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: lxvx v2, r3, r4
; CHECK-P10-NEXT: plxv v2, 999990000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: ld_disjoint_align32_vector:
Expand Down Expand Up @@ -875,11 +893,16 @@ entry:

; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly
define dso_local void @st_unalign16_vector(i8* nocapture %ptr, <16 x i8> %str) {
; CHECK-LABEL: st_unalign16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r4, 1
; CHECK-NEXT: stxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: st_unalign16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pstxv v2, 1(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_unalign16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 1
; CHECK-P9-NEXT: stxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: st_unalign16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand All @@ -901,11 +924,16 @@ entry:

; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly
define dso_local void @st_align16_vector(i8* nocapture %ptr, <16 x i8> %str) {
; CHECK-LABEL: st_align16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r4, 8
; CHECK-NEXT: stxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: st_align16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pstxv v2, 8(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 8
; CHECK-P9-NEXT: stxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: st_align16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand All @@ -929,8 +957,7 @@ entry:
define dso_local void @st_unalign32_vector(i8* nocapture %ptr, <16 x i8> %str) {
; CHECK-P10-LABEL: st_unalign32_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999
; CHECK-P10-NEXT: stxvx v2, r3, r4
; CHECK-P10-NEXT: pstxv v2, 99999(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_unalign32_vector:
Expand Down Expand Up @@ -964,8 +991,7 @@ entry:
define dso_local void @st_align32_vector(i8* nocapture %ptr, <16 x i8> %str) {
; CHECK-P10-LABEL: st_align32_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxvx v2, r3, r4
; CHECK-P10-NEXT: pstxv v2, 99999000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_vector:
Expand Down Expand Up @@ -1183,12 +1209,18 @@ entry:

; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly
define dso_local void @st_disjoint_unalign16_vector(i64 %ptr, <16 x i8> %str) {
; CHECK-LABEL: st_disjoint_unalign16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: rldicr r3, r3, 0, 51
; CHECK-NEXT: li r4, 6
; CHECK-NEXT: stxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: st_disjoint_unalign16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: rldicr r3, r3, 0, 51
; CHECK-P10-NEXT: pstxv v2, 6(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_unalign16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: rldicr r3, r3, 0, 51
; CHECK-P9-NEXT: li r4, 6
; CHECK-P9-NEXT: stxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: st_disjoint_unalign16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand All @@ -1213,12 +1245,18 @@ entry:

; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly
define dso_local void @st_disjoint_align16_vector(i64 %ptr, <16 x i8> %str) {
; CHECK-LABEL: st_disjoint_align16_vector:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: rldicr r3, r3, 0, 51
; CHECK-NEXT: li r4, 24
; CHECK-NEXT: stxvx v2, r3, r4
; CHECK-NEXT: blr
; CHECK-P10-LABEL: st_disjoint_align16_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: rldicr r3, r3, 0, 51
; CHECK-P10-NEXT: pstxv v2, 24(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_align16_vector:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: rldicr r3, r3, 0, 51
; CHECK-P9-NEXT: li r4, 24
; CHECK-P9-NEXT: stxvx v2, r3, r4
; CHECK-P9-NEXT: blr
;
; CHECK-P8-LE-LABEL: st_disjoint_align16_vector:
; CHECK-P8-LE: # %bb.0: # %entry
Expand Down Expand Up @@ -1275,8 +1313,7 @@ define dso_local void @st_disjoint_unalign32_vector(i64 %ptr, <16 x i8> %str) {
; CHECK-P10-LABEL: st_disjoint_unalign32_vector:
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: rldicr r3, r3, 0, 43
; CHECK-P10-NEXT: pli r4, 99999
; CHECK-P10-NEXT: stxvx v2, r3, r4
; CHECK-P10-NEXT: pstxv v2, 99999(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_unalign32_vector:
Expand Down Expand Up @@ -1316,8 +1353,7 @@ define dso_local void @st_disjoint_align32_vector(i64 %ptr, <16 x i8> %str) {
; CHECK-P10: # %bb.0: # %entry
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
; CHECK-P10-NEXT: stxvx v2, r3, r4
; CHECK-P10-NEXT: pstxv v2, 999990000(r3), 0
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_disjoint_align32_vector:
Expand Down