Hi, Richard. After several tries with your testcases (I already added into V15 patch). I think "using a new IV" would be better than "multiplication" Now: loop_len_34 = MIN_EXPR ; _74 = MIN_EXPR ; ------> multiplication approach will changed into _74 = loop_len_34 * 2; loop_len_48 = MIN_EXPR <_74, 4>; _77 = _74 - loop_len_48; loop_len_49 = MIN_EXPR <_77, 4>; _78 = _77 - loop_len_49; loop_len_50 = MIN_EXPR <_78, 4>; loop_len_51 = _78 - loop_len_50; I prefer "new IV" since it looks more reasonable and better codegen. Could you take a look at it: V15 patch: https://gcc.gnu.org/pipermail/gcc-patches/2023-May/619534.html Thanks. juzhe.zhong@rivai.ai From: Richard Sandiford Date: 2023-05-25 04:05 To: 钟居哲 CC: gcc-patches; rguenther Subject: Re: [PATCH V14] VECT: Add decrement IV iteration loop control by variable amount support I'll look at the samples tomorrow, but just to address one thing: 钟居哲 writes: >>> What gives the best code in these cases? Is emitting a multiplication >>> better? Or is using a new IV better? > Could you give me more detail information about "new refresh IV" approach. > I'd like to try that. By “using a new IV” I meant calling vect_set_loop_controls_directly for every rgroup, not just the first. So in the earlier example, there would be one decrementing IV for x and one decrementing IV for y. Thanks, Richard