"juzhe.zh...@rivai.ai" <juzhe.zh...@rivai.ai> writes:
>>> What's the byte size of VNx1BI, expressed as a function of N?
>>> If it's CEIL (N, 8) then we don't have a way of representing that yet.
> N is a poly value.
> RVV like SVE support scalable vector.
> the N is poly (1,1).
>
> VNx1B mode nunits = poly(1,1) units.
> VNx1B mode bitsize =poly (1,1) bitsize.
> VNx1B mode bytesize = poly(1,1) units (currently). Ideally and more accurate, 
> it should be VNx1B mode bytesize =poly (1/8,1/8).

But this would be a fractional bytesize, and like Richard says,
the memory subsystem would always access full bytes.  So I think
the bytesize would have to be at least CEIL (N, 8).

> However, it can't represent it like this. GCC consider its bytesize as  poly 
> (1,1) bytesize.

Ah, OK.  That (making the size N bytes) does seem like a reasonable
workaround, provided that it matches the C types, etc.  So the total
amount of padding is 7N bits (I assume at the msb of the type when
viewed as an integer).

I agree that what (IIUC) was discussed upthread works, i.e.:

  bytesize = N
  bitsize = N * 8 (fixed function of bytesize)
  precision = N
  nunits = N
  unit_size = 1
  unit_precision = 1

But target-independent code won't expect this layout, so supporting
it will involve more than just adjusting the parameters.

Thanks,
Richard

Reply via email to