On 1/13/24 08:38, Daniel Henrique Barboza wrote:
MAXSZ() returns the value in bytes. Now that we have access to vlenb
we don't need to compensate with a '-3' in the scale to use 'vlen'.
MAXSZ() now works as follows:
LMUL lmul=scale MAXSZ (vlenb >> -scale)
1 0 vlenb
2 1 vlenb << 1
4 2 vlenb << 2
8 3 vlenb << 3
Um, what?
static inline uint32_t MAXSZ(DisasContext *s)
{
- int scale = s->lmul - 3;
- return s->cfg_ptr->vlen >> -scale;
+ return s->cfg_ptr->vlenb >> -s->lmul;
There's no left-shift here, either before or after.
Bug?