Go to file
Tobias Grosser 1eeedf4829 [IslNodeBuilder] Relax complexity check in invariant loads and run it early
When performing invariant load hoisting we check that invariant load expressions
are not too complex. Up to this commit, we performed this check by counting the
sum of dimensions in the access range as a very simple heuristic. This heuristic
is a little too conservative, as it prevents hoisting for any scops with a
very large number of parameters. Hence, we update the heuristic to only count
existentially quantified dimensions and set dimensions. We expect this to still
detect the problematic expressions in h264 because of which this check was
originally introduced.

For some unknown reason, this complexity check was originally committed in
IslNodeBuilder. It really belongs in ScopInfo, as there is no point in
optimizing a program which we could have known earlier cannot be code generated.
The benefit of running the check early is that we can avoid to even hoist checks
that are expensive to code generate as invariant loads. This can be seen in
the changed tests, where we now indeed detect the scop, but just not invariant
load hoist the complicated access.

We also improve the formatting of the code, document it, and use isl++ to
simplify expressions.

llvm-svn: 308659
2017-07-20 19:55:19 +00:00
clang [Docs] Regenerate the command line option reference. 2017-07-20 17:52:48 +00:00
clang-tools-extra [clang-tidy] s/1/true/, NFC 2017-07-20 14:56:52 +00:00
compiler-rt [compiler-rt] Use NOINLE to shrink stack frames 2017-07-20 18:54:26 +00:00
debuginfo-tests Add a test for PR33166. 2017-05-25 19:33:16 +00:00
libclc generic: add missing get_work_dim include 2017-06-02 15:58:35 +00:00
libcxx [libcxx] [test] Update msvc_stdlib_force_include.hpp. 2017-07-19 22:02:33 +00:00
libcxxabi Update version to 6.0.0svn 2017-07-19 13:42:18 +00:00
libunwind Bump docs version to 6.0 2017-07-19 13:49:39 +00:00
lld Add the --chroot option for --reproduce. 2017-07-20 18:17:55 +00:00
lldb Add help text for "expression" telling how to enter multi-line mode. 2017-07-19 23:25:42 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm Implement LaneBitmask::getNumLanes and LaneBitmask::getHighestLane 2017-07-20 19:43:19 +00:00
openmp OpenMP RTL cleanup: two PAUSEs per spin loop iteration replaced with single one 2017-07-19 09:26:13 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [IslNodeBuilder] Relax complexity check in invariant loads and run it early 2017-07-20 19:55:19 +00:00