Nadav Rotem
ee7ede76f4
Move the max vector width to a constant parameter. No functionality change.
...
llvm-svn: 168570
2012-11-25 16:48:08 +00:00
Nadav Rotem
ef33b5076c
Fix the document style.
...
llvm-svn: 168569
2012-11-25 16:39:01 +00:00
Nadav Rotem
12192f19eb
Refactor the ptr runtime check generation code. No functionality change.
...
llvm-svn: 168568
2012-11-25 16:27:16 +00:00
Nadav Rotem
b15d9fe24d
Rename method. No functionality change.
...
llvm-svn: 168560
2012-11-25 09:13:57 +00:00
Nadav Rotem
bf5173460f
The induction-pointer work is inspired by a research paper. This commit adds a reference.
...
llvm-svn: 168559
2012-11-25 09:09:26 +00:00
Nadav Rotem
ea3824f160
Add support for pointer induction variables even when there is no integer induction variable.
...
llvm-svn: 168558
2012-11-25 08:41:35 +00:00
Nadav Rotem
c3c07e62e8
LoopVectorizer: Add initial support for pointer induction variables (for example: *dst++ = *src++).
...
At the moment we still require to have an integer induction variable (for example: i++).
llvm-svn: 168231
2012-11-17 00:27:03 +00:00
Nadav Rotem
0565b5a279
LoopVectorize: Division reductions generate incorrect code. Remove the part of the code that deals with divs.
...
Thanks to Paul Redmond for catching this while reviewing the code.
llvm-svn: 168142
2012-11-16 06:51:17 +00:00
Nadav Rotem
a43bcddc8d
use the getSplat API. Patch by Paul Redmond.
...
llvm-svn: 167892
2012-11-14 00:02:13 +00:00
Nadav Rotem
12930749ab
Fix a comment typo and add comments.
...
llvm-svn: 167684
2012-11-11 05:15:00 +00:00
Nadav Rotem
1cfef3e9ee
Add support for memory runtime check. When we can, we calculate array bounds.
...
If the arrays are found to be disjoint then we run the vectorized version of
the loop. If they are not, we run the scalar code.
llvm-svn: 167608
2012-11-09 07:09:44 +00:00
Chandler Carruth
acc748b2b5
Fix sign compare warning. Patch by Mahesha HS.
...
llvm-svn: 167282
2012-11-02 05:24:00 +00:00
Nadav Rotem
4cb8cdab5e
LoopVectorize: Preserve NSW, NUW and IsExact flags.
...
llvm-svn: 167174
2012-10-31 21:40:39 +00:00
Nadav Rotem
ec3ab49dda
Put the threshold magic number in a variable.
...
llvm-svn: 167134
2012-10-31 16:22:16 +00:00
Nadav Rotem
1265ea8f8d
Remove enum values since they are not used anymore.
...
llvm-svn: 167131
2012-10-31 16:14:06 +00:00
Nadav Rotem
ce77ab0c24
LoopVectorize: Do not vectorize loops with tiny constant trip counts.
...
llvm-svn: 167101
2012-10-31 03:31:07 +00:00
Nadav Rotem
ff7889196b
Add support for loops that don't start with Zero.
...
This is important for loops in the LAPACK test-suite.
These loops start at 1 because they are auto-converted from fortran.
llvm-svn: 167084
2012-10-31 00:45:26 +00:00
Nadav Rotem
47a299dcc9
Add documentation.
...
llvm-svn: 167055
2012-10-30 22:06:26 +00:00
Nadav Rotem
bc21aceb19
LoopVectorize: Add support for write-only loops when the write destination is a single pointer.
...
Speedup SciMark by 1%
llvm-svn: 167035
2012-10-30 18:36:45 +00:00
Nadav Rotem
b3e8e688da
LoopVectorize: Fix a bug in the initialization of reduction variables. AND needs to start at all-one
...
while XOR, and OR need to start at zero.
llvm-svn: 167032
2012-10-30 18:12:36 +00:00
Nadav Rotem
73ddcfe03f
LoopVectorizer: change debug prints: Print the module identifier when deciding to vectorize. When deciding not to vectorize do not print the called function name because it can be null.
...
llvm-svn: 166989
2012-10-30 00:40:39 +00:00
Nadav Rotem
5ad045a8c5
LoopVectorize: Update and preserve the dominator tree info.
...
llvm-svn: 166970
2012-10-29 21:52:38 +00:00
Nadav Rotem
859366f93f
1. Fix a bug in getTypeConversion. When a *simple* type is split, we need to return the type of the split result.
...
2. Change the maximum vectorization width from 4 to 8.
3. A test for both.
llvm-svn: 166864
2012-10-27 04:11:32 +00:00
Nadav Rotem
afae78edab
Refactor the VectorTargetTransformInfo interface.
...
Add getCostXXX calls for different families of opcodes, such as casts, arithmetic, cmp, etc.
Port the LoopVectorizer to the new API.
The LoopVectorizer now finds instructions which will remain uniform after vectorization. It uses this information when calculating the cost of these instructions.
llvm-svn: 166836
2012-10-26 23:49:28 +00:00
Nadav Rotem
579042f71b
LoopVectorize: Teach the cost model to query scalar costs as scalar types and not vectors of 1.
...
llvm-svn: 166715
2012-10-25 21:03:48 +00:00