For those not following on github:
On 2020-04-19 1:00 a.m., Krste Asanovic wrote:
SEW and LMUL values are essential to correct code execution regardless of load/store width encoding.
They should be assembler directive variables set automatically by vsetvli (and vsetvl when its xs2 argument is statically defined).
For dynamic xs2 and vsetvl, a manual assembler directive should be available.
This should help in various situations, including validation that SEW/LMUL ratio is maintained by a given vsetvli, and also for load/store syntax:
With this in place the assembler code can translate e8 to the corre
and also when SEW is less than 64, some become useless.ct SEW * factor value in load/stores eliminating the readability concern.
I agree that the base should have as robust an encoding without over committing available bits.
Thus I would want to also want to move 32b when SEW=16, and in addition
I also believe that load/store are so important, so pivotal (e.g. matrix transforms) that flexibility and efficiency are both mandated.
The compress load/store format seeks to address efficiency.
The encoding needs the flexibility of SEW * factors.
I propose the factors be depent upon current SEW value
For SEW=8 the encoding yields factors of 1,2,4 and 8
For SEW=16 the encoding yields factors of 1/2, 1, 2 and 4
For SEW of 32 and above the encoding yields factors of 1/4, 1/2, 1 and 2.
Thus we always support LEW = SEW *2 operations and support load/store SEW/2 and SEW/4 when they exist.