Do you mean like this ?
/* We need to use precomputed mask for such situation and such mask
can only be computed in compile-time known size modes. */
bool indices_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_fit_selector_p
&& !vec_len.is_constant ())
return false;
[email protected]
From: Robin Dapp
Date: 2023-12-15 20:25
To: [email protected]; 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, [email protected] 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