Vector Execution Context
RV32/RV64 V 1.0; enabled vector state, vill=0, supported SEW and 2*SEW. vd is a read/write accumulator with EEW=2*SEW, EMUL=2*LMUL<=8 and an aligned group start. SEW=64 needs additional 128-bit integer elements.
32-bit OP-V: opcode=1010111, funct6=111100, funct3=110 (OPMVX); vm bit25, vs2 bits24:20, rs1 bits19:15, vd bits11:7. Syntax source order: vs1/rs1, vs2. Optional v0.t means vm=0; omission means vm=1.
Form the full 2*SEW product as unsigned × unsigned, add old vd and keep low 2*SEW bits. Wide vd is also a source; narrow multiplicands cannot overlap it, which would read one register at different EEWs. First take low scalar bits for XLEN>SEW or sign-extend for XLEN<SEW; x0 supplies zero.
Compute only mask-enabled vstart<=i<vl elements. Prestart stays unchanged; inactive/tail follow vma/vta: undisturbed or agnostic (old values or all ones). Masked vd excludes v0, which cannot supply mask and data together. vstart>=vl (including vl=0) leaves all destination elements unchanged; success resets vstart=0 without saturation or vxsat change.
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture — Version 20260120, Chapter 31