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?


r~

Reply via email to