My understanding was that we went into this knowing that the IVs
would defeat SCEV analysis.  Apparently that wasn't a problem for RVV,
but it's not surprising that it is a problem in general.

This isn't just about SELECT_VL though.  We use the same type of IV
for cases what aren't going to use SELECT_VL.

Richard Biener <rguent...@suse.de> writes:
> On Tue, 30 May 2023, Kewen.Lin wrote:
>
>> on 2023/5/30 17:26, juzhe.zh...@rivai.ai wrote:
>> > Ok.
>> > 
>> > It seems that for this conditions:
>> > 
>> > +  /* If we're vectorizing a loop that uses length "controls" and
>> > +     can iterate more than once, we apply decrementing IV approach
>> > +     in loop control.  */
>> > +  if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
>> > +      && !LOOP_VINFO_LENS (loop_vinfo).is_empty ()
>> > +      && LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS (loop_vinfo) == 0
>> > +      && !(LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
>> > +     && known_le (LOOP_VINFO_INT_NITERS (loop_vinfo),
>> > +                  LOOP_VINFO_VECT_FACTOR (loop_vinfo))))
>> > +    LOOP_VINFO_USING_DECREMENTING_IV_P (loop_vinfo) = true;
>> > 
>> > 
>> > I should add direct_supportted_p (SELECT_VL...) to this is that right?
>> 
>> I guess no, with this condition any targets without SELECT_VL are unable
>> to leverage the new decrement scheme for lengths, as your reply in PR109971
>> you didn't meant to disable it.  IIUC, what Richi suggested is to introduce
>> one new IV just like the previous one which has non-variable step, then it's
>> SCEV-ed and some analysis based on it can do a good job.
>
> No, I said the current scheme does sth along
>
>  do {
>    remain -= MIN (vf, remain);
>  } while (remain != 0);
>
> and I suggest to instead do
>
>  do {
>    old_remain = remain;
>    len = MIN (vf, remain);
>    remain -= vf;
>  } while (old_remain >= vf);
>
> basically since only the last iteration will have len < vf we can
> ignore that remain -= vf will underflow there if we appropriately
> rewrite the exit test to use the pre-decrement value.

Yeah, agree that should work.

But how easy would it be to extend SCEV analysis, via a pattern match?
The evolution of the IV phi wrt the inner loop is still a normal SCEV.

Thanks,
Richard

Reply via email to