Hi Kito,

So valid range fractional LMUL for SEW=8, 16 32 are:

mf8 = [8, (1/8)*32] = [8, 4] = [], no SEW is valid with mf8 for ELEN = 32
mf4 = [8, (1/4)*32] = [8, 8] = only SEW 8 with mf4 is valid
mf2 = [8, (1/2)*32] = [8, 16] = SEW 8 and 16 with mf2 are valid

[1] 
https://github.com/riscvarchive/riscv-v-spec/blob/master/v-spec.adoc#342-vector-register-grouping-vlmul20

Yes, so AFAIK we currently prohibit SEW/LMUL combinations/modes that would lead to sub-element modes but we don't prevent MF8 for ELEN = 32 entirely.

Isn't the issue here that an ELEN = 32 but VLEN 32 implementation could decide to not to implement MF8 at all (even if it didn't lead to issues with the proper VLEN) so we must not use it? That's unfortunate but in line with other IMHO unfortunate spec decisions like unaligned vector access so there's no way around it.

What's the plan for this patch now?

I am not sure I got the point, we are using early clobber to avoid the
overlap constraint, that's pretty conservative way and should not lead
the problem here when we using LMUL=1/SEW=32 for V2SI, or are you
worry about we may put two V2SI within single vector register?

Hmm, yeah I don't remember what I was thinking here. It should be ok to use LMUL = 1, right. What I don't see is the connection to the issue the patch is addressing, though. I would expect a test that ensures we're not emitting an mf8 vsetvl.

--
Regards
Robin

Reply via email to