Commit Graph

5 Commits

Author SHA1 Message Date
Arnold Schwaighofer
effa193a01 ABCOpts: Cleanup - use PointerIntPair instead of reinterpret cast
No functionality change.

Swift SVN r21210
2014-08-14 18:18:37 +00:00
Arnold Schwaighofer
e0173f4585 ABCOpts: Move member variables to the top of the class
No functionality change.

Swift SVN r21209
2014-08-14 18:18:37 +00:00
Arnold Schwaighofer
04ca5e128e ABCOpts: Add bounds check hoisting of induction identity accesses
We can now hoist the check in:

 for (i = start; i != end; ++i)
   a[i] = ...

or

 for i in start ..< end
   a[i] = ...

We will also hoist invariant checks as in

 k =
 for i in start ..< end
   a[k] = ...

We will also hoists the overflow check for "++i" out of the loop.

The only thing blocking vectorization of memset loops is the fact that we are
overflow checking the type size muliplication of array accesses. "a[i]" is
translated to "a + sizeof(T) * i" and this multiplication is still overflow
checked.

We can remove bounds checks in PrimeNum, XorLoop, Hash, MemSet, NBody, Walsh.

Memset                 ,  2371.00   ,  1180.00  ,  1179.00  ,        99.9%
XorLoop                ,  1403.00   ,  1255.00  ,  149.00   ,        11.9%

rdar://14757945

Swift SVN r21182
2014-08-13 20:00:08 +00:00
Arnold Schwaighofer
32af1c622c ABCOpts: Enable per default
Swift SVN r20213
2014-07-20 00:16:37 +00:00
Arnold Schwaighofer
f6b0682988 Array bounds check optimization pass
Implements redundant bounds check elimination for basic blocks and along the
dominator tree of loops.

No induction variable based hoisting yet.

O3:
NBody          ,  473.00     ,  122.00    ,  294.2%
QuickSort      ,  477.00     ,  310.00    ,  53.9%
RC4            ,  1022.00    ,  736.00    ,  38.6%
Walsh          ,  1781.00    ,  1142.00   ,  55.5%

No effect on Ofast.

Disabled for now.

Swift SVN r20199
2014-07-19 01:18:50 +00:00