VSOXEI8.V 的索引单位是什么?
索引值是无符号字节偏移,不是元素序号。
以 x[rs1] 为基址,使用 vs2 中 8 位无符号字节偏移把 vs3 活动元素执行有序 indexed store。
VSOXEI8.V 是 RISC-V V 扩展的有序索引向量存储指令。每个活动元素使用 x[rs1] + zero_extend(vs2[i]) 形成地址,并把 vs3[i] 的当前 SEW 位数据写入该地址;ei8 只规定索引 EEW=8。有序形式按元素顺序写入内存,并在元素级遵循 RVWMO。vm=0 时 v0.t 关闭的元素不写内存。
从编码字段解析 8 位索引存储,再逐元素计算 x[rs1] + zero_extend(vs2[i])。
教学环境:V 1.0、向量状态已启用、合法且受支持 vtype/SEW/索引EEW;固定 VLEN=4096、LMUL=m1、vstart=0,VLMAX=4096/32,索引 EMUL=0.25。索引组须对齐且不越过v31;同一寄存器不能作为不同EEW的源,v0.t 时源组不能读取v0数据。相同EEW的同名vs3/vs2须有相同元素。x0基址为0。假定所有活动访问成功,未对齐访问要求环境支持;地址显示限制0..0xffffffff并非ISA限制。只显示逐元素存储事件(非最终字节内存映像);重复/重叠地址后续存储可能覆盖先前数据。有序存储在元素级按元素顺序遵循RVWMO;步骤不是处理器周期。inactive/tail不访问内存,VL=0无访问;源寄存器不变,正常完成后vstart=0。
动画从 32 位向量内存指令编码开始,按官方位段显示 nf、mew、mop、vm、rs2/vs2 或 lumop/sumop、width、寄存器字段和 opcode。
VSOXEI8.V 是有序索引 RVV 存储指令,内存写入只发生在活动且未被掩码关闭的元素上。
V 1.0;要求向量状态已启用、vill=0及受支持vtype。活动元素满足vstart≤i<vl且掩码启用;v0.t为vm=0,省略为vm=1。正常完成后vstart=0。
数据EEW=SEW、EMUL=LMUL;索引EMUL=(索引EEW/SEW)×LMUL且须在1/8..8。组起点须对齐;不同EEW源不能读同一寄存器(含EEW=1的v0)。inactive/tail不访问内存;vstart≥vl无访问。
索引是无符号字节偏移,窄于XLEN先零扩展,不按数据宽度缩放。有序存储在元素级遵循RVWMO;源寄存器不变,活动访问仍可能陷入,未对齐可成功或异常。
假定V/VS已启用、合法受支持vtype、LMUL=m1、VLEN=4096、XLEN=64、vstart=0,源和全部body掩码已初始化。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。假定内存可写且访问成功;源不变,inactive/tail不访问内存。正常完成后vstart=0。
假定V/VS已启用、合法受支持vtype、LMUL=m1、VLEN=4096、XLEN=64、vstart=0,源和全部body掩码已初始化。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。假定内存可写且访问成功;源不变,inactive/tail不访问内存。正常完成后vstart=0。
假定V/VS已启用、合法受支持vtype、LMUL=m1、VLEN=4096、XLEN=64、vstart=0,源和全部body掩码已初始化。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。假定内存可写且访问成功;源不变,inactive/tail不访问内存。正常完成后vstart=0。
索引值是无符号字节偏移,不是元素序号。