@@ -21,15 +21,15 @@ Each hart supporting a vector extension defines two parameters:
2121
2222. [#norm:elen]#The maximum size in bits of a vector element that any operation can produce or consume, _ELEN_ {ge} 8, which
2323must be a power of 2.#
24- . [#norm:vlen]#The number of bits in a single vector register, _VLEN_, which must be a power of 2, and must be no greater than 2^16^.#
24+ . [#norm:vlen]#The number of bits in a single vector register, _VLEN_ {ge} 8 , which must be a power of 2, and must be no greater than 2^16^.#
2525
2626Standard vector extensions (<<sec-vector-extensions>>) and
2727architecture profiles may set further constraints on _ELEN_ and _VLEN_.
2828
29- NOTE: Future extensions may allow ELEN {gt} VLEN by holding one
29+ NOTE: Future extensions may allow ELEN > VLEN by holding one
3030element using bits from multiple vector registers. The formulas in this
3131specification have been updated to allow this. The changes only
32- affect ELEN {gt} VLEN cases, when ELEN {le} VLEN nothing is changed.
32+ affect ELEN > VLEN cases, when ELEN {le} VLEN nothing is changed.
3333E.g.: EMUL for "scalar in vector" inputs/outputs of reductions is now
3434defined as ceil(EEW/VLEN), so it is still 1 (specifying a single register,
3535as before) when EEW {le} VLEN. Element width for whole vector register
@@ -288,8 +288,7 @@ register-resident vectors.
288288Implementations must provide fractional LMUL settings that allow the
289289narrowest supported type to occupy a fraction of a vector register
290290corresponding to the ratio of the narrowest supported type's width to
291- that of the largest supported type's width or to the vector register length,
292- if the latter is smaller than the largest supported type (ELEN/VLEN > 1).
291+ the smaller of VLEN and the largest supported type's width.
293292In general, the requirement is to support LMUL {ge} SEW~MIN~/min(ELEN, VLEN),
294293where SEW~MIN~ is the narrowest supported SEW value, ELEN is the widest
295294supported SEW value and VLEN is the number of bits in a vector register.
@@ -1060,7 +1059,7 @@ Widened scalar values, e.g., input and output to a widening reduction
10601059operation, are held in the first element of a vector register and
10611060have EMUL=1.
10621061If a vector extension supports EEW/VLEN > 1, EEW-wide widened scalar
1063- values are held in a vector register group with EMUL = EEW/VLEN
1062+ values are held in a vector register group with EMUL = EEW/VLEN.
10641063
10651064==== Vector Masking
10661065
@@ -2109,11 +2108,11 @@ The full set of EEW variants is provided so that the encoded EEW can be used
21092108as a hint to indicate the destination register group will next be accessed
21102109with this EEW, which aids implementations that rearrange data internally.
21112110
2112- In vector extensions supporting ELEN/VLEN {gt} 1, element size can exceed
2111+ In vector extensions supporting ELEN/VLEN > 1, element size can exceed
21132112the number of bits available in a vector register or a vector register
2114- group. In that case whole vector register load instructions
2113+ group. In that case, the whole vector register load instructions
21152114still operate on the specified number of vector register(s), using the
2116- least significant bits of the element.
2115+ least- significant bits of the element.
21172116
21182117The vector whole register store instructions are encoded similar to
21192118unmasked unit-stride store of elements with EEW=8.
@@ -3936,7 +3935,7 @@ destination format is converted to the destination format's largest finite value
39363935and a scalar held in element 0 of a vector register group, and perform a
39373936reduction using some binary operator, to produce a scalar result in
39383937element 0 of a vector register group.# [#norm:vreduction_scalar_disregard_LMUL]#The scalar input and output operands
3939- are held in element 0 of a group with EMUL=ceil(EEW/VLEN) regardless of LMUL setting.#
3938+ are held in element 0 of a group with EMUL=ceil(EEW/VLEN), regardless of LMUL setting.#
39403939
39413940[#norm:vreduction_vd_overlap_vs]#The destination vector register can overlap the source operands,
39423941including the mask register.#
@@ -4566,7 +4565,7 @@ and `vmv.s.x` are reserved.#
45664565
45674566The floating-point scalar read/write instructions transfer a single
45684567value between a scalar `f` register and element 0 of a vector
4569- register group with EMUL=ceil(EEW/VLEN). [#norm:vfmv-f-s_vfmv-s-f_ignoreLMUL]##The instructions ignore LMUL, EMUL is computed as ceil(EEW/VLEN).#
4568+ register group with EMUL=ceil(EEW/VLEN). [#norm:vfmv-f-s_vfmv-s-f_ignoreLMUL]##The instructions ignore LMUL; EMUL is computed as ceil(EEW/VLEN).#
45704569
45714570----
45724571vfmv.f.s rd, vs2 # f[rd] = vs2[0] (rs1=0)
@@ -4909,7 +4908,7 @@ e q r d c b v a # v11 destination after vrgather using viota.m under mask
49094908[#norm:vmv-nr-r_op]#The `vmv<nr>r.v` instructions copy whole vector registers (i.e., all
49104909VLEN bits) and can copy whole vector register groups. The `nr` value
49114910in the opcode is the number of individual vector registers, NREG, to
4912- copy. The instructions operate as if EEW=min(VLEN, SEW), EMUL = NREG, effective
4911+ copy. The instructions operate as if EEW=min(VLEN, SEW), EMUL = NREG, and effective
49134912length `evl`= EMUL * VLEN/EEW.#
49144913
49154914NOTE: These instructions are intended to aid compilers to shuffle
0 commit comments