先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
以 x[rs1] 为基址,使用 vs2 中 8 位无符号字节偏移执行无序 indexed load。
VLUXEI8.V 是 RISC-V V 扩展的无序索引向量装载指令。每个活动元素使用 x[rs1] + zero_extend(vs2[i]) 形成地址;指令名中的 ei8 表示索引 EEW=8,索引是无符号字节偏移,不是元素编号。无序形式不保证元素访问按元素编号顺序被观察。vm=0 时 v0.t 关闭的元素不访问内存。
从编码字段解析 8 位索引装载,再逐元素计算 x[rs1] + zero_extend(vs2[i])。
动画从 32 位向量内存指令编码开始,按官方位段显示 nf、mew、mop、vm、rs2/vs2 或 lumop/sumop、width、寄存器字段和 opcode。
VLUXEI8.V 的 vs2 是字节偏移向量,不是元素编号;无序形式不能依赖元素访问顺序。
阅读 VLUXEI8.V 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。后缀和操作数形式决定源操作数来自向量、标量还是立即数。
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
当前 vtype 提供 SEW、LMUL、tail policy 和 mask policy;这些规则影响元素宽度、寄存器组大小以及非活动/尾部目标元素。
带 vm 的普通向量指令在 vm=0 时用 v0 作为执行掩码,vm=1 表示未掩码。VMERGE 等少数形式会把 v0 当作数据选择输入。
结合 «vsetvli t0, a0, e32, m1, ta, ma vluxei8.v v1, (a0), v2» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vluxei8.v v1, (a0), v2» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vluxei8.v v1, (a0), v2» 等实际代码理解该场景。
索引装载的 vs2 元素是无符号字节偏移。
vm=0 时用 v0 选择活动元素,vm=1 时所有 body 元素都参与;非活动和尾部元素按当前策略处理。