[gomp4] Preserve NVPTX "reconvergence" points
Bernd Schmidt
bernds@codesourcery.com
Wed Jun 24 13:37:00 GMT 2015
On 06/19/2015 03:45 PM, Jakub Jelinek wrote:
> If the loop remains in the IL (isn't optimized away as unreachable or
> isn't removed, e.g. as a non-loop - say if it contains a noreturn call),
> the flags on struct loop should be still there. For the loop clauses
> (reduction always, and private/lastprivate if addressable etc.) for
> OpenMP simd / Cilk+ simd we use special arrays indexed by internal
> functions, which then during vectorization are shrunk (but in theory could
> be expanded too) to the right vectorization factor if vectorized, of course
> accesses within the loop vectorized using SIMD, and if not vectorized,
> shrunk to 1 element.
I'd appreciate if you could describe that mechanism in more detail. As
far as I can tell it is very poorly commented and documented in the
code. I mean, it doesn't even follow the minimal coding standards of
describing function inputs:
/* Helper function of lower_rec_input_clauses, used for #pragma omp simd
privatization. */
static bool
lower_rec_simd_input_clauses (tree new_var, omp_context *ctx, int &max_vf,
tree &idx, tree &lane, tree &ivar, tree &lvar)
Bernd
More information about the Gcc-patches
mailing list