Oh. I think it should be renamed into not_fit. Is this following make sense to you ? /* We need to use precomputed mask for such situation and such mask can only be computed in compile-time known size modes. */ bool indices_not_fit_selector_p = maybe_ge (vec_len, 2 << GET_MODE_BITSIZE (GET_MODE_INNER (vmode))); if (GET_MODE_BITSIZE (GET_MODE_INNER (vmode)) == 8 && indices_not_fit_selector_p && !vec_len.is_constant ()) return false; juzhe.zhong@rivai.ai From: Robin Dapp Date: 2023-12-15 20:25 To: juzhe.zhong@rivai.ai; gcc-patches CC: rdapp.gcc; kito.cheng; Kito.cheng; jeffreyalaw Subject: Re: [PATCH] RISC-V: Fix vmerge optimization bug in vec_perm vectorization On 12/15/23 13:16, juzhe.zhong@rivai.ai wrote: > >>> bool indices_fit_selector = maybe_ge (vec_len, 2 << GET_MODE_BITSIZE (GET_MODE_INNER (vmode))); > No, I think it will make us miss some optimization. > > For example, for poly value [16,16] maybe_ge ([16,16], 65536) which makes us missed merge optimization but > we definitely can do merge optimization. I didn't mean to skip the && !vec_len.is_constant (), that should stay. Just the first part of condition that can be re-used in the if as well (inverted). Regards Robin