diff options
author | Sanjay Patel <spatel@rotateright.com> | 2018-09-16 14:59:04 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2018-09-16 14:59:04 +0000 |
commit | 3e095174b0f0d690dfbded13957df17cbb6f1ef6 (patch) | |
tree | c14bdd2194158303477abd073008b56231692185 /llvm | |
parent | 6356864e6dc6cdf603c05848b28124ddcb972336 (diff) | |
download | bcm5719-llvm-3e095174b0f0d690dfbded13957df17cbb6f1ef6.tar.gz bcm5719-llvm-3e095174b0f0d690dfbded13957df17cbb6f1ef6.zip |
[x86] add failure to splat test (PR38949); NFC
llvm-svn: 342346
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/test/CodeGen/X86/avx-vbroadcastf128.ll | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/avx-vbroadcastf128.ll b/llvm/test/CodeGen/X86/avx-vbroadcastf128.ll index b5026437153..e35919d4f32 100644 --- a/llvm/test/CodeGen/X86/avx-vbroadcastf128.ll +++ b/llvm/test/CodeGen/X86/avx-vbroadcastf128.ll @@ -98,6 +98,33 @@ define <32 x i8> @test_broadcast_16i8_32i8(<16 x i8> *%p) nounwind { ret <32 x i8> %2 } +; PR38949 - https://bugs.llvm.org/show_bug.cgi?id=38949 +; Don't limit the transform based on extra uses of the load itself (the store is a user of the load's chain value). + +define void @subv_reuse_is_ok(<4 x float>* %a, <8 x float>* %b) { +; X32-LABEL: subv_reuse_is_ok: +; X32: # %bb.0: +; X32-NEXT: movl {{[0-9]+}}(%esp), %eax +; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx +; X32-NEXT: vmovups (%ecx), %xmm0 +; X32-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 +; X32-NEXT: vmovups %ymm0, (%eax) +; X32-NEXT: vzeroupper +; X32-NEXT: retl +; +; X64-LABEL: subv_reuse_is_ok: +; X64: # %bb.0: +; X64-NEXT: vmovups (%rdi), %xmm0 +; X64-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 +; X64-NEXT: vmovups %ymm0, (%rsi) +; X64-NEXT: vzeroupper +; X64-NEXT: retq + %ld = load <4 x float>, <4 x float>* %a, align 1 + %splat128 = shufflevector <4 x float> %ld, <4 x float> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3> + store <8 x float> %splat128, <8 x float>* %b, align 16 + ret void +} + define <4 x double> @test_broadcast_2f64_4f64_reuse(<2 x double>* %p0, <2 x double>* %p1) { ; X32-LABEL: test_broadcast_2f64_4f64_reuse: ; X32: # %bb.0: |