What unit do VSOXEI8.V indexes use?
Index values are unsigned byte offsets, not element numbers.
Use x[rs1] plus 8-bit unsigned byte offsets from vs2 for ordered indexed stores from active vs3 elements.
VSOXEI8.V is an RISC-V V-extension ordered indexed vector store instruction. Each active element forms its address as x[rs1] + zero_extend(vs2[i]) and stores the current-SEW data from vs3[i]; ei8 specifies only the index EEW. The ordered form writes elements to memory in element order and obeys RVWMO at the element level. With vm=0, elements disabled by v0.t do not write memory.
Decode the 8-bit indexed store, then compute each element address as x[rs1] + zero_extend(vs2[i]).
Teaching context: V 1.0, enabled vector state, valid supported vtype/SEW/index EEW; fix VLEN=4096, LMUL=m1, vstart=0, VLMAX=4096/32, index EMUL=0.25. Index groups align and stay within v31; a register cannot supply different source EEWs, and v0.t excludes v0 data sources. Equal-EEW vs3/vs2 sharing a register require equal elements. x0 gives base zero. Assume all active accesses succeed; misaligned accesses require environment support. The address display range 0..0xffffffff is a teaching limit, not an ISA limit. Rows show per-element store events, not a final byte-memory image; later overlapping stores may overwrite earlier data. Ordered stores obey RVWMO in element order. Stages are not processor cycles. Inactive/tail elements make no access; VL=0 makes no access. Sources remain unchanged; success resets vstart=0.
The animation starts from the 32-bit vector memory encoding and shows the official bit fields: nf, mew, mop, vm, rs2/vs2 or lumop/sumop, width, register fields, and opcode.
VSOXEI8.V is an RVV ordered indexed store; memory writes occur only for active elements not masked off.
V 1.0 requires enabled vector state, vill=0 and supported vtype. Active elements have vstart<=i<vl and enabled mask; v0.t means vm=0, omission vm=1. Success resets vstart=0.
Data EEW=SEW, EMUL=LMUL; index EMUL=(index EEW/SEW)*LMUL must be 1/8..8. Groups align; one register cannot provide different source EEWs, including EEW=1 v0. Inactive/tail make no access; vstart>=vl makes no access.
Unsigned byte indexes zero-extend when narrower than XLEN and are not scaled by data width. Ordered stores obey RVWMO at element level. Sources remain unchanged; active accesses may trap, and misaligned accesses may succeed or fault.
Assume enabled V/VS, valid supported vtype, LMUL=m1, VLEN=4096, XLEN=64, vstart=0, initialized sources and all body mask bits enabled. SEW=32, vl=4, a0=0x8000, v4=[0,4,8,12], v8=[10,20,30,40] → stores [0x8000]=10, [0x8004]=20, [0x8008]=30, [0x800C]=40. Assume writable memory and successful accesses; sources stay unchanged and inactive/tail make no access. Success resets vstart=0.
Assume enabled V/VS, valid supported vtype, LMUL=m1, VLEN=4096, XLEN=64, vstart=0, initialized sources and all body mask bits enabled. SEW=32, vl=4, a0=0x8000, v4=[0,4,8,12], v8=[10,20,30,40] → stores [0x8000]=10, [0x8004]=20, [0x8008]=30, [0x800C]=40. Assume writable memory and successful accesses; sources stay unchanged and inactive/tail make no access. Success resets vstart=0.
Assume enabled V/VS, valid supported vtype, LMUL=m1, VLEN=4096, XLEN=64, vstart=0, initialized sources and all body mask bits enabled. SEW=32, vl=4, a0=0x8000, v4=[0,4,8,12], v8=[10,20,30,40] → stores [0x8000]=10, [0x8004]=20, [0x8008]=30, [0x800C]=40. Assume writable memory and successful accesses; sources stay unchanged and inactive/tail make no access. Success resets vstart=0.
Index values are unsigned byte offsets, not element numbers.