Hi, Kewen. I have tried to implement "decrement IV" feature and incorporate into "vect_set_loop_controls_directly". Since the implementation is quite different from vect_set_loop_controls_directly, it will make vect_set_loop_controls_directly very complicated sometimes it makes me very hard to debug when I am testing.
I am not sure but I can try again. This patch isolated those implementation into a single function "vect_set_loop_controls_by_select_vl" which makes Richards easier to review codes. Well, I think I can try again to incorporate those codes into "vect_set_loop_controls_directly" when they finish the review process of "vect_set_loop_controls_by_select_vl". Thanks. juzhe.zh...@rivai.ai From: Kewen.Lin Date: 2023-05-08 15:55 To: juzhe.zh...@rivai.ai CC: gcc-patches; rguenther; richard.sandiford Subject: Re: [PATCH V4] VECT: Add decrement IV iteration loop control by variable amount support Hi Juzhe, > Hi, Kewen. > >>> Sorry for chiming in, I had some concern here. >>> We already have some handlings for partial vector in length in >>> vect_set_loop_controls_directly >>>(actually it deals with both mask and length), the proposed >>>vect_set_loop_controls_by_select_vl >>>for select_vl looks like a variant for partial vector in length (comparing >>>to the normal MIN), >>>and also adopts decrement IV. IMHO, it seems better to modify/extend the >>>current handling in >>>vect_set_loop_controls_directly for length, or factor out the handlings for >>>length there and >>>extend the factored one. Otherwise, it means we have two sets of handlings >>>for partial vector >>>in lengths, it looks bad to maintain. As the previous discussion, adopting >>>decrement IV is an >>>enhancement for loop control, it's good for both cases w/ or w/o select_vl. >>>If the above >>>understanding is correct, the possible steps seem to be: >>> - factor out the handling for length (* optional) >>> - modify it with decrement IV >>> - extend it with select_vl. >>>In future if some RVV vendor wants to degenerate select_vl to min, it can >>>just adopt the same >>>handlings with min by not defining select_vl optab. > > You mean like this: > doing this inside vect_set_loop_controls_directly ? > if (use_while_len_p) > return vect_set_loop_controls_by_while_len(...) No, I meant either factoring out those handlings for partial vector in length in function vect_set_loop_controls_directly to one separated function like: vect_set_loop_controls_directly_length and rename the existing one to vect_set_loop_controls_directly_mask, or keep the existing vect_set_loop_controls_directly for both mask and length but modify/extend the part for length. If there is no much code to share between mask and length, the former may be better. BR, Kewen