> FTR, my concern & suggestion was:
> 
>   I suppose the difficulty is that we might make:
> 
>     MASK_LOAD (mask, ptr, some-arbitrary-else-value)
> 
>   seem as cheap as:
> 
>     MASK_LOAD (mask, ptr, { 0, 0,. ... 0})
> 
>   which definitely isn't the case for SVE (and I'm guessing also
>   for AVX).  It would be better to keep the:
> 
>     COND_EXPR (mask, ..., some-arbitrary-else-value)
> 
>   separate and try to optimise it with surrounding code.

Ah, I rather understood that as an "either or" rather than an "and".

> That is, we'd add the else value to the maskload optab and MASK_LOAD
> internal function, but use predicates to test whether a target supports
> a particular else value.

So e.g. for SVE we'd have

  res = MASK_LOAD (mask, ptr, {0, 0, ..., 0})
  COND_EXPR (mask, res, {0, 0, ...})

which would always be folded/optimized away, while for RVV
we'd have

  res = MASK_LOAD (mask, ptr, whatever_else_value)
  COND_EXPR (mask, res, {0, 0, ...})

that could/should result in a separate instruction depending on
the rest of the code?

Regards
 Robin

Reply via email to