summaryrefslogtreecommitdiff
path: root/test/CodeGen/PowerPC/pr27078.ll
diff options
context:
space:
mode:
authorMichael Kuperstein <mkuper@google.com>2016-10-06 18:58:24 +0000
committerMichael Kuperstein <mkuper@google.com>2016-10-06 18:58:24 +0000
commit1ac52953b403748dfc8631e18183f5718a7ea793 (patch)
treeb23f60742ae4b84524e0e9b59c9a13c4c16c4e91 /test/CodeGen/PowerPC/pr27078.ll
parent33fe838cadecf80640d1c95bc5054dd9afa47f58 (diff)
[DAG] Generalize build_vector -> vector_shuffle combine for more than 2 inputs
This generalizes the build_vector -> vector_shuffle combine to support any number of inputs. The idea is to create a binary tree of shuffles, where the first layer performs pairwise shuffles of the input vectors placing each input element into the correct lane, and the rest of the tree blends these shuffles together. This doesn't try to be smart and create any sort of "optimal" shuffles. The assumption is that even a "poor" shuffle sequence is better than extracting and inserting the elements one by one. Differential Revision: https://reviews.llvm.org/D24683 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283480 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/PowerPC/pr27078.ll')
-rw-r--r--test/CodeGen/PowerPC/pr27078.ll9
1 files changed, 4 insertions, 5 deletions
diff --git a/test/CodeGen/PowerPC/pr27078.ll b/test/CodeGen/PowerPC/pr27078.ll
index a35e21dbc57..b100e3a5ba5 100644
--- a/test/CodeGen/PowerPC/pr27078.ll
+++ b/test/CodeGen/PowerPC/pr27078.ll
@@ -9,12 +9,11 @@ define <4 x float> @bar(float* %p, float* %q) {
%6 = shufflevector <12 x float> %5, <12 x float> undef, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
ret <4 x float> %6
-; CHECK: xxspltw
-; CHECK-NEXT: xxspltw
-; CHECK-NEXT: xxspltw
+; CHECK: vsldoi
; CHECK-NEXT: vmrghw
-; CHECK-NEXT: vmrghw
-; CHECK-NEXT: xxswapd
+; CHECK-NEXT: vmrglw
+; CHECK-NEXT: vsldoi
+; CHECK-NEXT: vsldoi
; CHECK-NEXT: vsldoi
; CHECK-NEXT: blr
}