On 07/26/2016 03:57 AM, Ilya Enkovich wrote:

Ilya, what's the fundamental reason why we need to run
if-conversion again? Yes, I know you want to if-convert the
epilogue, but why?

What are the consequences of not doing if-conversion on the
epilogue? Presumably we miss a vectorization opportunity on the
tail.  But that may be a reasonable limitation to allow the
existing work to move forward while you go back and revamp things a
little.

If we have some control-flow in a loop then we have to if-convert it
for vectorizer. We need to preserve both versions: if-converted one
for vectorizer and the original one to be used if vectorization
fails.  For epilogues we have similar situation and need two
versions.  I do it by running if-conversion on a copy of original
loop. Note that it doesn't run full if-conversion pass. If-conversion
is called for epilogue loop only.
Right. So what I think Richi wants you to try is to use the if-converted loop to construct the if-converted epilogue. It seems conceptually simple and low cost -- the question is on the implementation side. I have no clue how painful that would be.

jeff

Reply via email to