diff options
author | Eli Friedman <efriedma@codeaurora.org> | 2016-12-15 21:36:59 +0000 |
---|---|---|
committer | Eli Friedman <efriedma@codeaurora.org> | 2016-12-15 21:36:59 +0000 |
commit | 34505083c6530bccfad189a37f9beaac3b442981 (patch) | |
tree | 2bbad55401ae052756778c812abea1b14f09b8b4 /llvm/test/CodeGen/ARM/vzip.ll | |
parent | 64c01f7bef8d65716f12e7556238ea8f8c2c010e (diff) | |
download | bcm5719-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.ll | 19 |
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> |