先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
从 x[rs1] 开始按 2 字节单位步长执行 16 位 fault-only-first 向量装载;元素 0 之后的同步异常可通过缩短 vl 表示。
VLE16FF.V 是 RISC-V V 扩展的 16 位单位步长 fault-only-first 向量装载。活动 body 元素按地址 x[rs1] + i * 2 字节读取内存并写入 vd;若元素 0 发生同步异常,该指令按普通装载精确陷入且不修改 vl;若元素 0 之后的活动元素发生同步异常,实现可把 vl 设为故障元素索引。vm=0 时由 v0.t 选择访问元素,掩码关闭元素不发起内存访问。
从编码字段解析 16 位 fault-only-first装载,再逐元素计算 x[rs1] + i * 2。
动画从 32 位向量内存指令编码开始,按官方位段显示 nf、mew、mop、vm、rs2/vs2 或 lumop/sumop、width、寄存器字段和 opcode。
VLE16FF.V 仍是单位步长装载:活动元素 i 使用 x[rs1] + i * 2 字节。它的特殊点是 fault-only-first 异常边界:首元素故障正常陷入,后续活动元素故障可把 vl 缩短为故障元素索引。
阅读 VLE16FF.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, e16, m1, ta, ma vle16ff.v v8, (a0), v0.t» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e16, m1, ta, ma vle16ff.v v8, (a0), v0.t» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e16, m1, ta, ma vle16ff.v v8, (a0), v0.t» 等实际代码理解该场景。
两者地址计算和 EEW 都相同;VLE16FF.V 的区别是 fault-only-first 异常规则,后续活动元素故障可通过缩短 vl 表示。
不会。元素 0 的同步异常按普通装载精确陷入,该指令不会通过修改 vl 来继续执行。
不会。掩码关闭的 body 元素不发起内存访问,因此不会成为该指令的故障边界。