Hi Juzhe,

thanks, the somewhat unified modulo is IMHO a more readable.
Could probably still be improved but OK with me for now.

> +       if (is_dummy_len)
> +         {
> +           rtx dummy_len = gen_reg_rtx (Pmode);

Can we call this is_vlmax_len/is_vlmax and vlmax_len or so?

> +  if (inner_offsize < inner_vsize)
> +    {
> +      /* 7.2. Vector Load/Store Addressing Modes.
> +      If the vector offset elements are narrower than XLEN, they are
> +      zero-extended to XLEN before adding to the ptr effective address. If
> +      the vector offset elements are wider than XLEN, the least-significant
> +      XLEN bits are used in the address calculation. An implementation must
> +      raise an illegal instruction exception if the EEW is not supported for
> +      offset elements.  */
> +      if (!zero_extend_p || (zero_extend_p && scale_log2 != 0))

Hehe I really thought we have a widening shift, well ;)

I see, the zero extension refers to this part of the GCC docs
 "multiply the extended offset by operand 4;" 

and not to the RVV spec.  You could clarify this then, saying
that the RVV spec only refers to the scale_log == 0 case.

The rest LGTM now, no separate revision needed for those nits.

Regards
 Robin

Reply via email to