Implement rdar://9009151, transforming strided loop stores of
authorChris Lattner <sabre@nondot.org>
Sat, 19 Feb 2011 19:31:39 +0000 (19:31 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 19 Feb 2011 19:31:39 +0000 (19:31 +0000)
commit3a393728a62122d7009d8e2cbe52a221874e576a
tree2b6b4c0e13d0dd76328dd7b31884b0643bd109ef
parent9bb83e4f488e8675e309e4a875a05a088e4c011b
Implement rdar://9009151, transforming strided loop stores of
unsplatable values into memset_pattern16 when it is available
(recent darwins).  This transforms lots of strided loop stores
of ints for example, like 5 in vpr:

  Formed memset:   call void @memset_pattern16(i8* %4, i8* getelementptr inbounds ([16 x i8]* @.memset_pattern9, i32 0, i32 0), i64 %tmp25)
    from store to: {%3,+,4}<%11> at:   store i32 3, i32* %scevgep, align 4, !tbaa !4

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126040 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/LoopIdiomRecognize.cpp
test/Transforms/LoopIdiom/basic.ll