diff options
Diffstat (limited to 'llvm/test/CodeGen/PowerPC/load-shuffle-and-shuffle-store.ll')
-rw-r--r-- | llvm/test/CodeGen/PowerPC/load-shuffle-and-shuffle-store.ll | 153 |
1 files changed, 31 insertions, 122 deletions
diff --git a/llvm/test/CodeGen/PowerPC/load-shuffle-and-shuffle-store.ll b/llvm/test/CodeGen/PowerPC/load-shuffle-and-shuffle-store.ll index ebbce70409c..dc2ead88f12 100644 --- a/llvm/test/CodeGen/PowerPC/load-shuffle-and-shuffle-store.ll +++ b/llvm/test/CodeGen/PowerPC/load-shuffle-and-shuffle-store.ll @@ -19,8 +19,7 @@ define <2 x i64> @load_swap00(<2 x i64>* %vp1, <2 x i64>* %vp2) { ; ; CHECK-P9-LABEL: load_swap00: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv v2, 0(r3) -; CHECK-P9-NEXT: xxswapd v2, v2 +; CHECK-P9-NEXT: lxvd2x v2, 0, r3 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap00: @@ -48,8 +47,7 @@ define <2 x i64> @load_swap01(<2 x i64>* %vp1, <2 x i64>* %vp2) { ; ; CHECK-P9-LABEL: load_swap01: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv v2, 0(r4) -; CHECK-P9-NEXT: xxswapd v2, v2 +; CHECK-P9-NEXT: lxvd2x v2, 0, r4 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap01: @@ -72,20 +70,12 @@ define <2 x i64> @load_swap01(<2 x i64>* %vp1, <2 x i64>* %vp2) { define <4 x i32> @load_swap10(<4 x i32>* %vp1, <4 x i32>* %vp2) { ; CHECK-P8-LABEL: load_swap10: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r4, r2, .LCPI2_0@toc@ha -; CHECK-P8-NEXT: lvx v3, 0, r3 -; CHECK-P8-NEXT: addi r4, r4, .LCPI2_0@toc@l -; CHECK-P8-NEXT: lvx v2, 0, r4 -; CHECK-P8-NEXT: vperm v2, v3, v3, v2 +; CHECK-P8-NEXT: lxvw4x v2, 0, r3 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: load_swap10: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv v2, 0(r3) -; CHECK-P9-NEXT: addis r3, r2, .LCPI2_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI2_0@toc@l -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 +; CHECK-P9-NEXT: lxvw4x v2, 0, r3 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap10: @@ -114,20 +104,12 @@ define <4 x i32> @load_swap10(<4 x i32>* %vp1, <4 x i32>* %vp2) { define <4 x i32> @load_swap11(<4 x i32>* %vp1, <4 x i32>* %vp2) { ; CHECK-P8-LABEL: load_swap11: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r3, r2, .LCPI3_0@toc@ha -; CHECK-P8-NEXT: lvx v3, 0, r4 -; CHECK-P8-NEXT: addi r3, r3, .LCPI3_0@toc@l -; CHECK-P8-NEXT: lvx v2, 0, r3 -; CHECK-P8-NEXT: vperm v2, v3, v3, v2 +; CHECK-P8-NEXT: lxvw4x v2, 0, r4 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: load_swap11: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI3_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI3_0@toc@l -; CHECK-P9-NEXT: lxv v2, 0(r4) -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 +; CHECK-P9-NEXT: lxvw4x v2, 0, r4 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap11: @@ -165,11 +147,7 @@ define <8 x i16> @load_swap20(<8 x i16>* %vp1, <8 x i16>* %vp2){ ; ; CHECK-P9-LABEL: load_swap20: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv v2, 0(r3) -; CHECK-P9-NEXT: addis r3, r2, .LCPI4_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI4_0@toc@l -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 +; CHECK-P9-NEXT: lxvh8x v2, 0, r3 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap20: @@ -207,11 +185,7 @@ define <8 x i16> @load_swap21(<8 x i16>* %vp1, <8 x i16>* %vp2){ ; ; CHECK-P9-LABEL: load_swap21: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI5_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI5_0@toc@l -; CHECK-P9-NEXT: lxv v2, 0(r4) -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 +; CHECK-P9-NEXT: lxvh8x v2, 0, r4 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap21: @@ -249,8 +223,7 @@ define <16 x i8> @load_swap30(<16 x i8>* %vp1, <16 x i8>* %vp2){ ; ; CHECK-P9-LABEL: load_swap30: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv vs0, 0(r3) -; CHECK-P9-NEXT: xxbrq v2, vs0 +; CHECK-P9-NEXT: lxvb16x v2, 0, r3 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap30: @@ -285,8 +258,7 @@ define <16 x i8> @load_swap31(<16 x i8>* %vp1, <16 x i8>* %vp2){ ; ; CHECK-P9-LABEL: load_swap31: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv vs0, 0(r4) -; CHECK-P9-NEXT: xxbrq v2, vs0 +; CHECK-P9-NEXT: lxvb16x v2, 0, r4 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap31: @@ -317,8 +289,7 @@ define <2 x double> @load_swap40(<2 x double>* %vp1, <2 x double>* %vp2) { ; ; CHECK-P9-LABEL: load_swap40: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv vs0, 0(r4) -; CHECK-P9-NEXT: xxswapd v2, vs0 +; CHECK-P9-NEXT: lxvd2x v2, 0, r4 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap40: @@ -341,20 +312,12 @@ define <2 x double> @load_swap40(<2 x double>* %vp1, <2 x double>* %vp2) { define <4 x float> @load_swap50(<4 x float>* %vp1, <4 x float>* %vp2) { ; CHECK-P8-LABEL: load_swap50: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r4, r2, .LCPI9_0@toc@ha -; CHECK-P8-NEXT: lvx v3, 0, r3 -; CHECK-P8-NEXT: addi r4, r4, .LCPI9_0@toc@l -; CHECK-P8-NEXT: lvx v2, 0, r4 -; CHECK-P8-NEXT: vperm v2, v3, v3, v2 +; CHECK-P8-NEXT: lxvw4x v2, 0, r3 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: load_swap50: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: lxv v2, 0(r3) -; CHECK-P9-NEXT: addis r3, r2, .LCPI9_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI9_0@toc@l -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 +; CHECK-P9-NEXT: lxvw4x v2, 0, r3 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap50: @@ -383,20 +346,12 @@ define <4 x float> @load_swap50(<4 x float>* %vp1, <4 x float>* %vp2) { define <4 x float> @load_swap51(<4 x float>* %vp1, <4 x float>* %vp2) { ; CHECK-P8-LABEL: load_swap51: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r3, r2, .LCPI10_0@toc@ha -; CHECK-P8-NEXT: lvx v3, 0, r4 -; CHECK-P8-NEXT: addi r3, r3, .LCPI10_0@toc@l -; CHECK-P8-NEXT: lvx v2, 0, r3 -; CHECK-P8-NEXT: vperm v2, v3, v3, v2 +; CHECK-P8-NEXT: lxvw4x v2, 0, r4 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: load_swap51: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI10_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI10_0@toc@l -; CHECK-P9-NEXT: lxv v2, 0(r4) -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 +; CHECK-P9-NEXT: lxvw4x v2, 0, r4 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: load_swap51: @@ -430,8 +385,7 @@ define void @swap_store00(<2 x i64> %v1, <2 x i64> %v2, <2 x i64>* %vp) { ; ; CHECK-P9-LABEL: swap_store00: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: xxswapd vs0, v2 -; CHECK-P9-NEXT: stxv vs0, 0(r7) +; CHECK-P9-NEXT: stxvd2x v2, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store00: @@ -458,8 +412,7 @@ define void @swap_store01(<2 x i64> %v1, <2 x i64> %v2, <2 x i64>* %vp) { ; ; CHECK-P9-LABEL: swap_store01: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: xxswapd vs0, v3 -; CHECK-P9-NEXT: stxv vs0, 0(r7) +; CHECK-P9-NEXT: stxvd2x v3, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store01: @@ -481,20 +434,12 @@ define void @swap_store01(<2 x i64> %v1, <2 x i64> %v2, <2 x i64>* %vp) { define void @swap_store10(<4 x i32> %v1, <4 x i32> %v2, <4 x i32>* %vp) { ; CHECK-P8-LABEL: swap_store10: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r3, r2, .LCPI13_0@toc@ha -; CHECK-P8-NEXT: addi r3, r3, .LCPI13_0@toc@l -; CHECK-P8-NEXT: lvx v3, 0, r3 -; CHECK-P8-NEXT: vperm v2, v2, v2, v3 -; CHECK-P8-NEXT: stvx v2, 0, r7 +; CHECK-P8-NEXT: stxvw4x v2, 0, r7 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: swap_store10: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI13_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI13_0@toc@l -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 -; CHECK-P9-NEXT: stxv v2, 0(r7) +; CHECK-P9-NEXT: stxvw4x v2, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store10: @@ -522,20 +467,12 @@ define void @swap_store10(<4 x i32> %v1, <4 x i32> %v2, <4 x i32>* %vp) { define void @swap_store11(<4 x i32> %v1, <4 x i32> %v2, <4 x i32>* %vp) { ; CHECK-P8-LABEL: swap_store11: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r3, r2, .LCPI14_0@toc@ha -; CHECK-P8-NEXT: addi r3, r3, .LCPI14_0@toc@l -; CHECK-P8-NEXT: lvx v2, 0, r3 -; CHECK-P8-NEXT: vperm v2, v3, v3, v2 -; CHECK-P8-NEXT: stvx v2, 0, r7 +; CHECK-P8-NEXT: stxvw4x v3, 0, r7 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: swap_store11: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI14_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI14_0@toc@l -; CHECK-P9-NEXT: lxvx v2, 0, r3 -; CHECK-P9-NEXT: vperm v2, v3, v3, v2 -; CHECK-P9-NEXT: stxv v2, 0(r7) +; CHECK-P9-NEXT: stxvw4x v3, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store11: @@ -572,11 +509,7 @@ define void @swap_store20(<8 x i16> %v1, <8 x i16> %v2, <8 x i16>* %vp) { ; ; CHECK-P9-LABEL: swap_store20: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI15_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI15_0@toc@l -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 -; CHECK-P9-NEXT: stxv v2, 0(r7) +; CHECK-P9-NEXT: stxvh8x v2, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store20: @@ -613,11 +546,7 @@ define void @swap_store21(<8 x i16> %v1, <8 x i16> %v2, <8 x i16>* %vp) { ; ; CHECK-P9-LABEL: swap_store21: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI16_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI16_0@toc@l -; CHECK-P9-NEXT: lxvx v2, 0, r3 -; CHECK-P9-NEXT: vperm v2, v3, v3, v2 -; CHECK-P9-NEXT: stxv v2, 0(r7) +; CHECK-P9-NEXT: stxvh8x v3, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store21: @@ -654,8 +583,7 @@ define void @swap_store30(<16 x i8> %v1, <16 x i8> %v2, <16 x i8>* %vp) { ; ; CHECK-P9-LABEL: swap_store30: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: xxbrq vs0, v2 -; CHECK-P9-NEXT: stxv vs0, 0(r7) +; CHECK-P9-NEXT: stxvb16x v2, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store30: @@ -689,8 +617,7 @@ define void @swap_store31(<16 x i8> %v1, <16 x i8> %v2, <16 x i8>* %vp) { ; ; CHECK-P9-LABEL: swap_store31: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: xxbrq vs0, v3 -; CHECK-P9-NEXT: stxv vs0, 0(r7) +; CHECK-P9-NEXT: stxvb16x v3, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store31: @@ -720,8 +647,7 @@ define void @swap_store40(<2 x double> %v1, <2 x double> %v2, <2 x double>* %vp) ; ; CHECK-P9-LABEL: swap_store40: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: xxswapd vs0, v2 -; CHECK-P9-NEXT: stxv vs0, 0(r7) +; CHECK-P9-NEXT: stxvd2x v2, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store40: @@ -748,8 +674,7 @@ define void @swap_store41(<2 x double> %v1, <2 x double> %v2, <2 x double>* %vp) ; ; CHECK-P9-LABEL: swap_store41: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: xxswapd vs0, v3 -; CHECK-P9-NEXT: stxv vs0, 0(r7) +; CHECK-P9-NEXT: stxvd2x v3, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store41: @@ -771,20 +696,12 @@ define void @swap_store41(<2 x double> %v1, <2 x double> %v2, <2 x double>* %vp) define void @swap_store50(<4 x float> %v1, <4 x float> %v2, <4 x float>* %vp) { ; CHECK-P8-LABEL: swap_store50: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r3, r2, .LCPI21_0@toc@ha -; CHECK-P8-NEXT: addi r3, r3, .LCPI21_0@toc@l -; CHECK-P8-NEXT: lvx v3, 0, r3 -; CHECK-P8-NEXT: vperm v2, v2, v2, v3 -; CHECK-P8-NEXT: stvx v2, 0, r7 +; CHECK-P8-NEXT: stxvw4x v2, 0, r7 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: swap_store50: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI21_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI21_0@toc@l -; CHECK-P9-NEXT: lxvx v3, 0, r3 -; CHECK-P9-NEXT: vperm v2, v2, v2, v3 -; CHECK-P9-NEXT: stxv v2, 0(r7) +; CHECK-P9-NEXT: stxvw4x v2, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store50: @@ -812,20 +729,12 @@ define void @swap_store50(<4 x float> %v1, <4 x float> %v2, <4 x float>* %vp) { define void @swap_store51(<4 x float> %v1, <4 x float> %v2, <4 x float>* %vp) { ; CHECK-P8-LABEL: swap_store51: ; CHECK-P8: # %bb.0: -; CHECK-P8-NEXT: addis r3, r2, .LCPI22_0@toc@ha -; CHECK-P8-NEXT: addi r3, r3, .LCPI22_0@toc@l -; CHECK-P8-NEXT: lvx v2, 0, r3 -; CHECK-P8-NEXT: vperm v2, v3, v3, v2 -; CHECK-P8-NEXT: stvx v2, 0, r7 +; CHECK-P8-NEXT: stxvw4x v3, 0, r7 ; CHECK-P8-NEXT: blr ; ; CHECK-P9-LABEL: swap_store51: ; CHECK-P9: # %bb.0: -; CHECK-P9-NEXT: addis r3, r2, .LCPI22_0@toc@ha -; CHECK-P9-NEXT: addi r3, r3, .LCPI22_0@toc@l -; CHECK-P9-NEXT: lxvx v2, 0, r3 -; CHECK-P9-NEXT: vperm v2, v3, v3, v2 -; CHECK-P9-NEXT: stxv v2, 0(r7) +; CHECK-P9-NEXT: stxvw4x v3, 0, r7 ; CHECK-P9-NEXT: blr ; ; CHECK-P8-BE-LABEL: swap_store51: |