先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
VFRDIV.VF 是 RVV 单宽向量-标量反向浮点除法指令,语法为 vfrdiv.vf vd, vs2, rs1, vm;每个活动元素计算 vd[i] = f[rs1] / vs2[i]。
VFRDIV.VF 将浮点标量 f[rs1] 除以每个活动向量元素 vs2[i]。它和 VFDIV.VF 的操作数方向相反,常见学习重点就是不要把 f[rs1] / vs2[i] 误写成 vs2[i] / f[rs1]。舍入、NaN、无穷、除零和异常标志遵循官方 RVV 浮点规则。
从 OP-V 编码解码到逐元素反向浮点除法:每个活动元素计算 f[rs1] / vs2[i]。
V 扩展浮点指令使用 OP-V 主操作码,字段包含 funct6、源寄存器、vm、funct3、vd 和 opcode。
VFRDIV.VF 的方向是标量除以向量元素:f[rs1] / vs2[i]。它用于和 vfdiv.vf 区分操作数方向。
阅读 VFRDIV.VF 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。.vf:一个向量源和一个浮点标量源参与运算。
当前 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 vfrdiv.vf v1, v2, ft0 # v1[i] = ft0 / v2[i]» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vfrdiv.vf v1, v2, ft0 # v1[i] = ft0 / v2[i]» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vfrdiv.vf v1, v2, ft0 # v1[i] = ft0 / v2[i]» 等实际代码理解该场景。
vm=0 时只执行 v0.t 为 1 的活动元素;vm=1 表示不使用执行掩码。本页公式是 vd[i] = f[rs1] / vs2[i]。
不使用。普通 RVV 浮点运算使用浮点舍入模式 frm 并设置浮点异常标志;vxrm 用于定点舍入指令。
除零、0/0、NaN 操作数和无穷输入都属于浮点规则范围。结果、舍入和 fflags 按官方 RVV 浮点规则处理,本页不把它简化为整数式固定结果。