> Weiwei Li <liwei...@iscas.ac.cn> 於 2022年3月30日 下午4:27 寫道: > 在 2022/3/30 下午3:42, 陳約廷 写道: >> >>> Weiwei Li <liwei...@iscas.ac.cn <mailto:liwei...@iscas.ac.cn>> 於 2022年3月28日 >>> 下午7:56 寫道: >>> >>> >>> 在 2022/3/7 下午3:10, ~eopxd 写道: >>>> From: eopXD <eop.c...@sifive.com <mailto:eop.c...@sifive.com>> > Another question: max_elems is equal to total_elems when lmul >= 0. > > So max_elems can be reused here instead of caculating total_elems again. > >> >> I don’t understand your second question though. If nf = 3, there will be 3 >> registers >> involved with the instruction (namely reg, reg+1, reg+2). Why do we care >> about >> (reg+3)? >> > I just consider register group here. Reg, reg+1, reg+2 and reg+3 may belong > to the same register group. > > Regards, > > Weiwei Li >
According to v-spec (under section 7.8): Each field will be held in successively numbered vector register groups. When EMUL>1 each field will occupy a vector register group held in multiple successively numbered vector registers, and the vector register group for each field must follow the usual vector register alignment constraints (e.g., when EMUL=2 and NFIELDS=4, each field’s vector register group must start at an even vector register, but does not have to start at a multiple of 8 vector register number). I think the spec has explained itself that NFIELDS represents the number of register groups involved in this instruction. Therefore in a register group of 4 (LMUL = m2), NFIELD should be no more than 2. The `vlmax` here would be (VLEN * 4 / EEW). In this sense, if the `vl` provided for the vector instruction is within the range 2 * vlmax / 4 <= vl <= 3 * vlmax / 4, the elements in the 4th register (namely reg+3) will all be counted as tail elements. I hope this answers your question. Regards, eop Chen