[PATCH] D66199: [docs] loop pragmas
Michael Kruse via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 14 13:09:50 PDT 2019
Meinersbur added inline comments.
Comment at: docs/LanguageExtensions.rst:3068-3069
+There are loop hints that control transformations (e.g. vectorization, loop
+unrolling) and there loop hints that set transformation options (e.g.
+``vectorize_width``, ``unroll_count``). Pragmas setting transformation options
> Meinersbur wrote:
> > `vectorize_width` also "controls" a transformation. Is it that in our interpretation, `vectorize(enable)` overrides the profitability heuristic by taking out the "do not apply at all" option without setting any other option?
> I think I need to think a little bit more about this:
> > Is it that in our interpretation, vectorize(enable) overrides the profitability heuristic by taking out the "do not apply at all" option without setting any other option?
> but I would answer this with "yes". But just checking, what exactly do you mean with "do not apply at all option"?
I unfortunately mixed two meanings of "option" here:
1. option as in optimization setting
2. option as in candidate to choose from.
Let's take a look on the loop vectorizer. The profitability heuristic's job is too choose the "best" candidate out of the following list (independently of how LoopVectorize's heuristic is actually implemented; these might be decision made independently of each other, but as the user still sees one of the following outcomes):
0) no vectorization (the "do not apply at all" option/candidate)
1a) vec width=2 with epilogue
1b) vec width=2 without epilogue
2a) vec width=4 with epilogue
2b) vec width=4 without epilogue
3a) vec width=8 with epilogue
3b) vec width=8 without epilogue
`vectorize(enable)` with remove 0) as a candidate. `vecorize(disable)` will remove all expect 0) as a candidate.
The option/settings are `vectorize_width` and `vectorize_predicate` (and `interleave_count`). For instance `vectorize_width(4)` would remove 1) and 3)+ from the candidate list. `vectorize_predicate(enable)` takes any a) candidate from the list. What we were discussing was that these settings would remove 0) from the candidate list as well.
CHANGES SINCE LAST ACTION
More information about the cfe-commits