summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-03-20 17:08:51 +0000
committerChad Rosier <mcrosier@apple.com>2012-03-20 17:08:51 +0000
commit33e528d44d8c9c9ad2ae49816a7ddb234446c08e (patch)
tree3bd3cb7dd63060ee16e39d5f878bdf6b32387828 /test
parent5c062ad92672f22e61a4b20a9954af3db3b72bd6 (diff)
downloadllvm-33e528d44d8c9c9ad2ae49816a7ddb234446c08e.tar.gz
llvm-33e528d44d8c9c9ad2ae49816a7ddb234446c08e.tar.bz2
llvm-33e528d44d8c9c9ad2ae49816a7ddb234446c08e.tar.xz
[avx] Adjust the VINSERTF128rm pattern to allow for unaligned loads.
This results in things such as vmovups 16(%rdi), %xmm0 vinsertf128 $1, %xmm0, %ymm0, %ymm0 to be combined to vinsertf128 $1, 16(%rdi), %ymm0, %ymm0 rdar://11076953 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153092 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/X86/avx-vinsertf128.ll13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/CodeGen/X86/avx-vinsertf128.ll b/test/CodeGen/X86/avx-vinsertf128.ll
index 9934a33041..3e86a2ae5e 100644
--- a/test/CodeGen/X86/avx-vinsertf128.ll
+++ b/test/CodeGen/X86/avx-vinsertf128.ll
@@ -116,3 +116,16 @@ entry:
%2 = tail call <8 x float> @llvm.x86.avx.vinsertf128.ps.256(<8 x float> undef, <4 x float> %1, i8 1)
ret <8 x float> %2
}
+
+rdar://11076953
+; CHECK: vinsertf128_ucombine
+define <8 x float> @vinsertf128_ucombine(float* nocapture %f) nounwind uwtable readonly ssp {
+; CHECK-NOT: vmovups
+; CHECK: vinsertf128
+entry:
+ %add.ptr = getelementptr inbounds float* %f, i64 4
+ %0 = bitcast float* %add.ptr to <4 x float>*
+ %1 = load <4 x float>* %0, align 8
+ %2 = tail call <8 x float> @llvm.x86.avx.vinsertf128.ps.256(<8 x float> undef, <4 x float> %1, i8 1)
+ ret <8 x float> %2
+}