https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113607

--- Comment #22 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Robin Dapp from comment #19)
> What seems odd to me is that in fre5 we simplify
> 
>   _429 = .COND_SHL (mask_patt_205.47_276, vect_cst__262, vect_cst__262, { 0,
> ... });
>   vect_prephitmp_129.51_282 = _429;
>   vect_iftmp.55_287 = VEC_COND_EXPR <mask_patt_209.54_286,
> vect_prephitmp_129.51_282, vect_cst__262>;


this is:

_429 = mask_patt_205.47_276[i] ? vect_cst__262[i] : (vect_cst__262 <<
{0,..})[i];
vect_iftmp.55_287 = mask_patt_209.54_286[i] ? _429 [i] : vect_cst__262[i]

Which should have folded into:
tmp_ = mask_patt_205.47_276 | ~mask_patt_209.54_286;
_429 = .COND_SHL (tmp_, vect_cst__262, vect_cst__262, { 0, ... });

What is the definition of mask_patt_209.54_286 and mask_patt_205.47_276?
is `mask_patt_209.54_286 = ~mask_patt_205.47_276` ?

If so then this is a valid transformation I think.

Reply via email to