How does VWMULU.VX differ from VMUL or VMULH?
VWMULU.VX writes the full 2*SEW widening product. VMUL writes the low SEW bits, while VMULH-family instructions write the high SEW bits.
VWMULU.VX produces full 2*SEW widening products for active elements and does not accumulate old vd.
VWMULU.VX is a RISC-V V extension unsigned widening vector-scalar multiply instruction. Each active element interprets vs2 and x[rs1] after the official .vx scalar conversion as unsigned vs2[i] and unsigned x[rs1], computes the full 2*SEW product, and writes vd. With vm=0, only body elements whose v0.t bit is 1 execute the multiply; masked-off and tail elements follow the current vtype policies.
Starts from OP-V encoding fields, then shows how VWMULU interprets SEW source elements as unsigned-by-unsigned and writes the full 2*SEW product to vd.
Teaching context: V 1.0, enabled vector state and valid supported vtype; fix LMUL=m1, VLEN=4096, vstart=0. Require SEW and 2*SEW support; SEW=64 needs additional 128-bit integer elements. Enter nonnegative SEW bit patterns; interpret both sources as unsigned. .vx takes low bits when XLEN>SEW or sign-extends when XLEN<SEW; x0 supplies zero. Write the full product to 2*SEW vd without accumulating old vd, saturation or vxsat change. Destination EMUL=2 requires an even start; a narrow source may overlap only its highest register, forcing mask/tail-agnostic behavior. Equal sources require equal initial values; with v0.t, vd and data sources exclude v0. Only body is shown, without definite inactive/tail values. VL=0 updates nothing; success resets vstart=0. Stages are not processor cycles.
vwmulu.vx uses OP-V encoding. The animation places fixed fields, register fields, vm, and the rs1 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 unsigned widening multiplication, mask control, and vd writeback. It does not model pipelines, caches, or timing.
VWMULU.VX multiplies two SEW-width sources and writes the full 2*SEW product. It processes only active elements within the current vl, the second source comes from integer scalar register rs1 after the official .vx scalar conversion to SEW, and the signedness is unsigned vs2[i] and unsigned x[rs1].
vd is a wide destination with EEW=2*SEW and EMUL=2*LMUL<=8, aligned to EMUL; vs2 and the converted scalar supply SEW-bit multiplicands.
32-bit OP-V: opcode=1010111, funct6=111000, funct3=110 (OPMVX); vm bit25, vs2 bits24:20, rs1 bits19:15, vd bits11:7. Syntax source order: vs2, rs1. Optional v0.t means vm=0; omission means vm=1.
Multiply two unsigned sources and write the full 2*SEW product without accumulating old vd. First take low scalar bits for XLEN>SEW or sign-extend for XLEN<SEW; x0 supplies zero. Only mask-enabled vstart<=i<vl elements update; vstart>=vl (including vl=0) leaves vd unchanged.
A narrow source overlaps wide vd only with EMUL>=1 and equal highest registers, forcing mask/tail-agnostic behavior. Masked vd excludes v0, which cannot supply both mask and data. Prestart stays unchanged; vma/vta govern inactive/tail preservation or permitted all ones.
RV32/RV64 V 1.0; require enabled vector state, vill=0, supported SEW and 2*SEW. SEW=64 needs additional 128-bit integer elements. Success resets vstart=0 without saturation or vxsat change. The animation fixes LMUL=m1, VLEN=4096, vstart=0; stages are not processor cycles.
Assume enabled V/VS, valid supported e16,m1,tu,mu, supported 32-bit results, VLEN=4096, XLEN=64, vl=4, vstart=0; v12=[65535,2,32768,4], v0.mask[0..3]=1111. x5=3; vd[0]=65535×3=196605 → 0x0002fffd. Tails retain old values; success resets vstart=0.
Assume enabled V/VS, valid supported e16,m1,tu,mu, supported 32-bit results, VLEN=4096, XLEN=64, vl=4, vstart=0; v12=[65535,2,32768,4], v0.mask[0..3]=1111. x5=3; vd[0]=65535×3=196605 → 0x0002fffd. Tails retain old values; success resets vstart=0.
VWMULU.VX writes the full 2*SEW widening product. VMUL writes the low SEW bits, while VMULH-family instructions write the high SEW bits.
No. VWMULU.VX writes only the product; widening multiply-accumulate semantics belong to VWMACC* instructions.