aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
authorPekka Jääskeläinen <visit0r@gcc.gnu.org>2018-05-04 19:43:57 +0000
committerPekka Jääskeläinen <visit0r@gcc.gnu.org>2018-05-04 19:43:57 +0000
commit080dc24383a602a5a4095eb05b04100f15ba1ad4 (patch)
treea0d2a78948f718293527ac76c53bdee3303d989f /gcc/cfgexpand.c
parent1e25c5a9bb7042d7bca5a4fa840666dcb16f4918 (diff)
downloadgcc-080dc24383a602a5a4095eb05b04100f15ba1ad4.zip
gcc-080dc24383a602a5a4095eb05b04100f15ba1ad4.tar.gz
gcc-080dc24383a602a5a4095eb05b04100f15ba1ad4.tar.bz2
[BRIGFE] phsa-specific optimizations
Add flag -fassume-phsa that is on by default. If -fno-assume-phsa is given, these optimizations are disabled. With this flag, gccbrig can generate GENERIC that assumes we are targeting a phsa-runtime based implementation, which allows us to expose the work-item context accesses to retrieve WI IDs etc. which helps optimizers. First optimization that takes advantage of this is to get rid of the setworkitemid calls whenever we have non-inlined calls that use IDs internally. Other optimizations added in this commit: - expand absoluteid to similar level of simplicity as workitemid. At the moment absoluteid is the best indexing ID to end up with WG vectorization. - propagate ID variables closer to their uses. This is mainly to avoid known useless casts, which confuse at least scalar evolution analysis. - use signed long long for storing IDs. Unsigned integers have defined wraparound semantics, which confuse at least scalar evolution analysis, leading to unvectorizable WI loops. - also refactor some BRIG function generation helpers to brig_function. - no point in having the wi-loop as a for-loop. It's really a do...while and SCEV can analyze it just fine still. - add consts to ptrs etc. in BRIG builtin defs. Improves optimization opportunities. - add qualifiers to generated function parameters. Const and restrict on the hidden local/private pointers, the arg buffer and the context pointer help some optimizations. From-SVN: r259957
Diffstat (limited to 'gcc/cfgexpand.c')
0 files changed, 0 insertions, 0 deletions