Is the vslidedown.vx OFFSET an element count or byte count?
It is an element-index offset, not a byte offset; lane i reads vs2[i+OFFSET].
Slide vector elements toward lower indexes.
VSLIDEDOWN.VX moves vs2 elements by offset x[rs1] toward lower indexes into vd. A source index outside VLMAX writes zero to the destination element.
Starts from OP-V encoding fields, then shows how VSLIDEDOWN reads higher-numbered source elements by OFFSET; destination elements whose source index is >= VLMAX receive zero.
Require V 1.0, enabled vector state, and valid supported vtype/SEW. Fix LMUL=m1 and vstart=0; this teaching configuration has VLEN=VLMAX×SEW=256, at least 128 bits. Changing SEW/VLMAX switches configurations. Only body is shown; inactive/tail values follow vma/vta without definite values. VL=0 updates no destination elements, including tails. With masking, vd/vs2 cannot be v0. Equal-width vd/vs2 may overlap. OFFSET is a full unsigned XLEN value or zero-extended 5-bit immediate; source indexes ≥VLMAX return zero. Steps are teaching stages, not processor cycles.
The teaching model fixes LMUL=m1 and vstart=0 and shows only body elements in the selected VL. In ordinary masked forms, inactive and tail elements follow vtype.vma/vta and the result row does not invent a definite value; VADC/VMADC/VSBC/VMSBC execute every body element, with v0 bits used only as carry/borrow-in.
vslidedown.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, element-index/packing/select/move rearrangement integer slide down, boundary/selection rules, and vd writeback. It does not model pipelines, caches, or timing.
vslidedown.vx reads OFFSET from x[rs1]; active element i reads vs2[i+OFFSET], or writes zero if the source index is greater than or equal to VLMAX.
vd/vs2 are SEW/LMUL vector groups with starts aligned to EMUL. Equal-width source/destination overlap is allowed. rs1 supplies a full unsigned XLEN element offset without SEW truncation; x0 supplies offset zero.
32-bit OP-V: funct6=001111 at bits31:26, vm at bit25, vs2 at bits24:20, rs1 at bits19:15, funct3=100 at bits14:12, vd at bits11:7, opcode=1010111 at bits6:0.
Active vd[i]=vs2[i+OFFSET]; the source index may exceed vl, but zero is returned only upon reaching VLMAX. This is not a memory address or byte offset.
Optional v0.t means vm=0; omission means vm=1. Masked vd cannot contain v0, which cannot supply both EEW=1 mask and SEW data. Prestart is unchanged; inactive/tail follow vma/vta, with the slideup region below both OFFSET and vl always unchanged.
Require V 1.0, enabled vector state and valid supported vtype/SEW. vstart>=vl (including vl=0) leaves all destination elements unchanged. Examples assume LMUL=m1, SEW=16, vl=8, vstart=0 and initialized sources, scalars and v0; animation stages are for teaching.
Understand this scenario with real code like «vslidedown.vx v8, v12, x5, v0.t».
It is an element-index offset, not a byte offset; lane i reads vs2[i+OFFSET].
No. It rearranges elements within vector register groups and performs no memory load or store.