llvm/lib/Transforms
Benjamin Kramer 1af132dcf3 LoopVectorizer: Emit memory checks into their own basic block.
This separates the check for "too few elements to run the vector loop" from the
"memory overlap" check, giving a lot nicer code and allowing to skip the memory
checks when we're not going to execute the vector code anyways. We still leave
the decision of whether to emit the memory checks as branches or setccs, but it
seems to be doing a good job. If ugly code pops up we may want to emit them as
separate blocks too. Small speedup on MultiSource/Benchmarks/MallocBench/espresso.

Most of this is legwork to allow multiple bypass blocks while updating PHIs,
dominators and loop info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172902 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-19 13:57:58 +00:00
..
Hello Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
InstCombine Use AttributeSet accessor methods instead of Attribute accessor methods. 2013-01-18 21:53:16 +00:00
Instrumentation Sort all of the includes. Several files got checked in with mis-sorted 2013-01-19 08:03:47 +00:00
IPO Use AttributeSet accessor methods instead of Attribute accessor methods. 2013-01-18 21:53:16 +00:00
Scalar Improved comment. 2013-01-18 23:02:45 +00:00
Utils Use AttributeSet accessor methods instead of Attribute accessor methods. 2013-01-18 21:53:16 +00:00
Vectorize LoopVectorizer: Emit memory checks into their own basic block. 2013-01-19 13:57:58 +00:00
CMakeLists.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
LLVMBuild.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
Makefile Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00