aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/ScalarRepl
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-03-08 04:17:04 +0000
committerChris Lattner <sabre@nondot.org>2009-03-08 04:17:04 +0000
commit29e641761e81bd000bdc4ccfae479c6dda18e402 (patch)
tree36f7ff32ab04818a2e11194513736b5c3fb527b7 /test/Transforms/ScalarRepl
parentcf1bb0836899c59694d0bbccd145d1b479547a1f (diff)
downloadexternal_llvm-29e641761e81bd000bdc4ccfae479c6dda18e402.zip
external_llvm-29e641761e81bd000bdc4ccfae479c6dda18e402.tar.gz
external_llvm-29e641761e81bd000bdc4ccfae479c6dda18e402.tar.bz2
teach SROA to handle promoting vector allocas with a memset into them into
a vector type instead of into an integer type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66368 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/ScalarRepl')
-rw-r--r--test/Transforms/ScalarRepl/vector_memcpy.ll18
1 files changed, 16 insertions, 2 deletions
diff --git a/test/Transforms/ScalarRepl/vector_memcpy.ll b/test/Transforms/ScalarRepl/vector_memcpy.ll
index dc947b0..5678578 100644
--- a/test/Transforms/ScalarRepl/vector_memcpy.ll
+++ b/test/Transforms/ScalarRepl/vector_memcpy.ll
@@ -1,4 +1,7 @@
-; RUN: llvm-as < %s | opt -scalarrepl | llvm-dis | grep {ret <16 x float> %A}
+; RUN: llvm-as < %s | opt -scalarrepl | llvm-dis > %t
+; RUN: grep {ret <16 x float> %A} %t
+; RUN: grep {ret <16 x float> zeroinitializer} %t
+
define <16 x float> @foo(<16 x float> %A) nounwind {
%tmp = alloca <16 x float>, align 16
%tmp2 = alloca <16 x float>, align 16
@@ -11,5 +14,16 @@ define <16 x float> @foo(<16 x float> %A) nounwind {
ret <16 x float> %R
}
-declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
+define <16 x float> @foo2(<16 x float> %A) nounwind {
+ %tmp2 = alloca <16 x float>, align 16
+ %s2 = bitcast <16 x float>* %tmp2 to i8*
+ call void @llvm.memset.i64(i8* %s2, i8 0, i64 64, i32 16)
+
+ %R = load <16 x float>* %tmp2
+ ret <16 x float> %R
+}
+
+
+declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
+declare void @llvm.memset.i64(i8* nocapture, i8, i64, i32) nounwind