Go to file
Chad Rosier c94f8e2906 [LoopVectorize] Add Support for Small Size Reductions.
Unlike scalar operations, we can perform vector operations on element types that
are smaller than the native integer types. We type-promote scalar operations if
they are smaller than a native type (e.g., i8 arithmetic is promoted to i32
arithmetic on Arm targets). This patch detects and removes type-promotions
within the reduction detection framework, enabling the vectorization of small
size reductions.

In the legality phase, we look through the ANDs and extensions that InstCombine
creates during promotion, keeping track of the smaller type. In the
profitability phase, we use the smaller type and ignore the ANDs and extensions
in the cost model. Finally, in the code generation phase, we truncate the result
of the reduction to allow InstCombine to rewrite the entire expression in the
smaller type.

This fixes PR21369.
http://reviews.llvm.org/D12202

Patch by Matt Simpson <mssimpso@codeaurora.org>!

llvm-svn: 246149
2015-08-27 14:12:17 +00:00
clang clang-format: Don't let a leading "template <..>" lead to wrapped initializers. 2015-08-27 11:59:31 +00:00
clang-tools-extra Fix another LoopConvert fail. 2015-08-26 17:08:24 +00:00
compiler-rt [compiler-rt] [tsan] Fix GetTls for aarch64 2015-08-27 13:11:00 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Update mailing list reference. 2015-08-24 22:43:24 +00:00
libcxx [libcxx] Remove installation rules on Darwin when it would overwrite the system installation. 2015-08-26 20:18:21 +00:00
libcxxabi Fix or disable C++11 tests in C++03 mode 2015-08-20 01:22:17 +00:00
libunwind [libunwind] Remove unused includes. 2015-08-27 06:58:31 +00:00
lld Start adding support for absolute symbols. 2015-08-27 12:40:06 +00:00
lldb Fix lldb build on older OSX versions after svn commit r244716 2015-08-27 03:42:56 +00:00
llgo Update to new lists.llvm.org 2015-08-05 04:03:05 +00:00
llvm [LoopVectorize] Add Support for Small Size Reductions. 2015-08-27 14:12:17 +00:00
openmp Put taskdata variables under KMP_DEBUG guards. 2015-08-26 20:02:21 +00:00
polly BlockGenerator: Add the possiblity to pass a set of new access functions 2015-08-27 07:28:16 +00:00