[LLVMdev] [PATCH] parallel loop awareness to the LoopVectorizer
pekka.jaaskelainen at tut.fi
Mon Jan 28 09:36:21 PST 2013
On 01/28/2013 06:51 PM, Hal Finkel wrote:
> Is this sufficient to implement #pragma ivdep in clang?
I'm not completely sure of this:
"Note: The proven dependencies that prevent vectorization are not ignored,
only assumed dependencies are ignored."
Thus, there's a slight difference. It cannot be used to disable dependency
checking altogether (and just blame a sloppy programmer if there actually
are dependencies), but it just converts the "unknown alias" to "no alias".
If there's a "yes" from the analyzer it still prevents the vectorization.
So, sort of a softened programmer-friendlier version of the semantics.
The vagueness comes from that it depends on the intelligence
of the dependency analysis implementation whether a dependency can be "proven"
or not, doesn't it? Thus, #pragma ivdep with a non-existing
loop dependence analyzer is equivalent to the semantics of the proposed
Also, it's a bit unclear what is the real difference to the #pragma parallel:
It similarly states: "However, if dependencies are proven, they are not
ignored." So conversely, if the compiler cannot prove a dependency for
some reason, they *are* ignored?
OpenMP's 'omp for', on the other hand, can be used to mark a truly parallel
loop where this metadata could be used if one wants to parallelize those
loops using a finer-granularity mechanism than threads.
More information about the llvm-dev