Does VWSLL.VV keep SEW width?
No. The destination element width is 2*SEW.
Zero-extend vs2 to 2*SEW; shift by vs1.
Syntax: vwsll.vv vd, vs2, vs1[, v0.t]; vd/vs2/vs1 are vector registers and rs1 is an integer register. Equal sources require equal initial values.
32-bit OP-V: funct6=110101, funct3=000 (OPIVV), opcode=1010111. vm=0 uses v0.t; omitting it gives vm=1.
Zvbb depends on Zve32x; require SEW and 2*SEW support. Zero-extend vs2 to 2*SEW, shift by the low log2(2*SEW) count bits and keep low 2*SEW bits. This is neither signed widening nor rotation.
Destination EMUL=2*LMUL≤8; groups follow EMUL alignment. A narrow source with EMUL≥1 may overlap only the highest end of vd, forcing ma/ta. With vm=0, destination excludes v0; data sources cannot also use the EEW=1 mask v0.
Require enabled vector state and valid vtype. Process active body only; preserve prestart and follow vma/vta for inactive/tail. vstart≥vl (including vl=0) updates nothing; success clears vstart. SEW=64 widening needs additional 128-bit integer elements.
Zero-extend vs2 to 2*SEW; shift by vs1 low log2(2*SEW) bits.
Starts from OP-V encoding fields, then shows how VWSLL zero-extends each SEW-wide vs2 element to 2*SEW, uses the low lg2(2*SEW) shift-count bits, and writes the widened logical-left-shift result.
Teaching context: Zvbb, enabled vector state, valid supported vtype, and support for SEW and 2*SEW; SEW=64 needs additional 128-bit integer elements. Fix LMUL=m1, VLEN=4096, vstart=0. Inputs are nonnegative SEW bit patterns; zero-extend to 2*SEW, shift by the low log2(2*SEW) count bits and retain low 2*SEW bits. .vi uimm is 0–31; .vx x0 supplies zero. vd is an even-start EMUL=2 group; narrow overlap is allowed only at its highest register and forces ma/ta. With v0.t, destination and data sources exclude v0. Equal sources require equal initial values. Show body only without definite inactive/tail values; VL=0 updates nothing. Stages are not processor cycles.
vwsll.vv uses OP-V encoding. The animation places fixed fields, register fields, vm, and the vs1 field in one encoding strip.
This animation shows only ISA-visible relationships from the official V extension: OP-V field decode, active-element reads, 2*SEW widening integer widening logical left shift, mask control, and vd writeback. It does not model pipelines, caches, or timing.
Zero-extend each SEW source, then shift into a 2*SEW destination group.
Syntax: vwsll.vv vd, vs2, vs1[, v0.t]; vd/vs2/vs1 are vector registers and rs1 is an integer register. Equal sources require equal initial values.
32-bit OP-V: funct6=110101, funct3=000 (OPIVV), opcode=1010111. vm=0 uses v0.t; omitting it gives vm=1.
Zvbb depends on Zve32x; require SEW and 2*SEW support. Zero-extend vs2 to 2*SEW, shift by the low log2(2*SEW) count bits and keep low 2*SEW bits. This is neither signed widening nor rotation.
Destination EMUL=2*LMUL≤8; groups follow EMUL alignment. A narrow source with EMUL≥1 may overlap only the highest end of vd, forcing ma/ta. With vm=0, destination excludes v0; data sources cannot also use the EEW=1 mask v0.
Require enabled vector state and valid vtype. Process active body only; preserve prestart and follow vma/vta for inactive/tail. vstart≥vl (including vl=0) updates nothing; success clears vstart. SEW=64 widening needs additional 128-bit integer elements.
vwsll.vv v4, v8, v12 # SEW=16, LMUL=1; vs2[0]=0x8000, shift=3 => vd[0]=0x00040000. Initialize the stated source values and enable the listed extension and relevant state; the comment gives the result derived from this page's rules.
vwsll.vv v4, v8, v12 # SEW=16, LMUL=1; vs2[0]=0x8000, shift=3 => vd[0]=0x00040000. Initialize the stated source values and enable the listed extension and relevant state; the comment gives the result derived from this page's rules.
No. The destination element width is 2*SEW.
The official description zero-extends before shifting, so do not treat it as signed widening.