> ...it's not clear to me that we should define the upper bits of the
> byte to be zero.  What would rely on that?  Is it something that we'd
> require for all loads and stores of such modes?

Yes, I meant fewer than BITS_PER_UNIT bits in total.  As opposed to SVE's
"balanced" mask representation in riscv's case the bits are packed at the
beginning.

Loads and stores of masks only operate on the bits the mask actually
contains so when we e.g. have four vector units/elements only four
mask bits are loaded or stored.

The mode size of those very small modes is still one byte, i.e. we have
padding for them.  But this only matters for the internal representation
of those modes (and has been the source of several issues already of
course, the masked else being one of them I believe).

How does encoding work for SVE's small mask modes?  I suppose

      unsigned int elt_bits = vector_element_size (GET_MODE_PRECISION (mode),
                                                   GET_MODE_NUNITS (mode));

is != 1 but rather adjusted so a byte is filled?

For our mask modes anything else but zero padding makes no sense, so how
could we clarify this?

Reply via email to