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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |riscv

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
AVX512 can do zeroing or merging (with existing destination contents)
for masked ops, on the GIMPLE side merging would need another source operand
so what we effectively only support is zeroing for AVX512.

I see aarch64 SVE picks the value from specific operands where I'm assuming
that's what the ISA implements (only).

For any suggestion can you please elaborate on what MU/TU and TA/MA are?
Searching for two-letter things in the RVV spec has way to many hits to
find the relevant parts of the spec.

If 'undefined' means there's ISA that leaves the choice to implementors
and that's usually "cheaper" then rather than a new undef_type I always
point to 'error_mark_node' that could be used but you also need a
representation on the RTL side.  I'd also like to add that 'undefined'
is in the end always problematic for an IL.

I would assume that in case 'undefined' allows the implementation to
completely skip operating on a vector subpart, like not issue it, the
actual value will be what's already in the target register so it looks
like "merge" to me but for not skipped subparts that adds a data dependence
on the previous (sub-)register contents (not an issue for "skipped" parts).

Reply via email to