[PATCH, vec-tails 07/10] Support loop epilogue combining

Jeff Law law@redhat.com
Mon Aug 1 16:10:00 GMT 2016


On 08/01/2016 03:09 AM, Ilya Enkovich wrote:
> 2016-07-26 18:38 GMT+03:00 Ilya Enkovich <enkovich.gnu@gmail.com>:
>> 2016-07-26 18:26 GMT+03:00 Jeff Law <law@redhat.com>:
>>> 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.
>>
>> Probably another part of if-conversion may be re-used to build required
>> epilogue.  I'll have a look.
>
> Hi,
>
> Yuri will continue my work from this point.
Understood.  I'm actually got some comments on #5 and Yuri is already on 
the CC list for that draft message.

Jeff



More information about the Gcc-patches mailing list