summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM/vzip.ll
diff options
context:
space:
mode:
authorEli Friedman <efriedma@codeaurora.org>2016-12-15 21:36:59 +0000
committerEli Friedman <efriedma@codeaurora.org>2016-12-15 21:36:59 +0000
commit34505083c6530bccfad189a37f9beaac3b442981 (patch)
tree2bbad55401ae052756778c812abea1b14f09b8b4 /llvm/test/CodeGen/ARM/vzip.ll
parent64c01f7bef8d65716f12e7556238ea8f8c2c010e (diff)
downloadbcm5719-llvm-34505083c6530bccfad189a37f9beaac3b442981.tar.gz
bcm5719-llvm-34505083c6530bccfad189a37f9beaac3b442981.zip
Don't combine a shuffle of two BUILD_VECTORs with duplicate elements.
Targets can't handle this case well in general; we often transform a shuffle of two cheap BUILD_VECTORs to element-by-element insertion, which is very inefficient. Fixes https://llvm.org/bugs/show_bug.cgi?id=31364 . Partially fixes https://llvm.org/bugs/show_bug.cgi?id=31301. Differential Revision: https://reviews.llvm.org/D27787 llvm-svn: 289874
Diffstat (limited to 'llvm/test/CodeGen/ARM/vzip.ll')
-rw-r--r--llvm/test/CodeGen/ARM/vzip.ll19
1 files changed, 7 insertions, 12 deletions
diff --git a/llvm/test/CodeGen/ARM/vzip.ll b/llvm/test/CodeGen/ARM/vzip.ll
index 01ed3f883fc..0758a5bed85 100644
--- a/llvm/test/CodeGen/ARM/vzip.ll
+++ b/llvm/test/CodeGen/ARM/vzip.ll
@@ -317,21 +317,16 @@ entry:
ret void
}
-; FIXME: This should generate a vzip
define <8 x i8> @vdup_zip(i8* nocapture readonly %x, i8* nocapture readonly %y) {
entry:
; CHECK-LABEL: vdup_zip:
- ; CHECK: ldrb r0, [r0]
- ; CHECK-NEXT: ldrb r1, [r1]
- ; CHECK-NEXT: vmov.8 d16[0], r0
- ; CHECK-NEXT: vmov.8 d16[1], r1
- ; CHECK-NEXT: vmov.8 d16[2], r0
- ; CHECK-NEXT: vmov.8 d16[3], r1
- ; CHECK-NEXT: vmov.8 d16[4], r0
- ; CHECK-NEXT: vmov.8 d16[5], r1
- ; CHECK-NEXT: vmov.8 d16[6], r0
- ; CHECK-NEXT: vmov.8 d16[7], r1
- ; CHECK-NEXT: vmov r0, r1, d16
+ ; CHECK: ldrb
+ ; CHECK-NEXT: ldrb
+ ; CHECK-NEXT: vmov.i16 d{{.*}}, #0x800
+ ; CHECK-NEXT: vmov.8
+ ; CHECK-NEXT: vmov.8
+ ; CHECK-NEXT: vtbl.8
+ ; CHECK-NEXT: vmov r0, r1
%0 = load i8, i8* %x, align 1
%1 = insertelement <8 x i8> undef, i8 %0, i32 0
%lane = shufflevector <8 x i8> %1, <8 x i8> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 undef, i32 undef, i32 undef, i32 undef>
OpenPOWER on IntegriCloud