diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-08-24 16:35:02 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-08-24 16:35:02 +0000 |
| commit | 5e529592b17880abebd71c233b1cb848c32abeb6 (patch) | |
| tree | 5d10efe4faeda81dd82278472bb9c2c09b8196e4 /test/CodeGen/ARM/vzip.ll | |
| parent | 15c5c77fa04cd97e1057e8a585f669fc49da0d92 (diff) | |
Vendor import of llvm release_50 branch r311606:vendor/llvm/llvm-release_50-r311606
Notes
svn path=/vendor/llvm/dist/; revision=322837
svn path=/vendor/llvm/llvm-release_50-r311606/; revision=322838; tag=vendor/llvm/llvm-release_50-r311606
Diffstat (limited to 'test/CodeGen/ARM/vzip.ll')
| -rw-r--r-- | test/CodeGen/ARM/vzip.ll | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/vzip.ll b/test/CodeGen/ARM/vzip.ll index 771bf5f05215..06b49ab94053 100644 --- a/test/CodeGen/ARM/vzip.ll +++ b/test/CodeGen/ARM/vzip.ll @@ -282,6 +282,25 @@ entry: ret <8 x i16> %0 } +; NOTE: The mask here looks like something that could be done with a vzip, +; but which the current handling of two-result vzip can't do - thus ending up +; as a vtrn. +define <8 x i16> @vzip_lower_shufflemask_undef_rev(<4 x i16>* %A, <4 x i16>* %B) { +; CHECK-LABEL: vzip_lower_shufflemask_undef_rev: +; CHECK: @ BB#0: @ %entry +; CHECK-NEXT: vldr d16, [r1] +; CHECK-NEXT: vldr d19, [r0] +; CHECK-NEXT: vtrn.16 d19, d16 +; CHECK-NEXT: vmov r0, r1, d18 +; CHECK-NEXT: vmov r2, r3, d19 +; CHECK-NEXT: mov pc, lr +entry: + %tmp1 = load <4 x i16>, <4 x i16>* %A + %tmp2 = load <4 x i16>, <4 x i16>* %B + %0 = shufflevector <4 x i16> %tmp1, <4 x i16> %tmp2, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 0, i32 4, i32 undef, i32 undef> + ret <8 x i16> %0 +} + define <4 x i32> @vzip_lower_shufflemask_zeroed(<2 x i32>* %A) { ; CHECK-LABEL: vzip_lower_shufflemask_zeroed: ; CHECK: @ BB#0: @ %entry |
