先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
拓宽负融合乘减累加器:vs1[i] 与 vs2[i] 为 SEW 宽乘数,宽 vd[i] 为 2*SEW 加数和结果;-(vs1[i] * vs2[i]) + vd[i]。
VFWNMSAC.VV 按官方 RVV 语义覆盖宽加数:vs1[i] 与 vs2[i] 是 SEW 宽乘数,vd[i] 同时是 2*SEW 宽输入和结果。每个活动元素执行 -(vs1[i] * vs2[i]) + vd[i],以一次融合浮点运算舍入到宽结果格式。vm=0 时 v0.t 控制元素是否执行;本页面的可交互示例固定展示 SEW=32 到 binary64 的可核验路径。
从 OP-V 编码解码到逐元素拓宽融合乘加:两个 SEW=32 乘数与 2*SEW=64 的宽 vd[i] 在一次 binary64 融合运算中生成结果;第二乘数来自 same-lane vs1。
lane 0: fma(-(1 * 0.5), +0.5) -> 0
显示的 lane 与当前步骤高亮同步;其余逐元素结果位于下方。
V 扩展浮点指令使用 OP-V 主操作码,字段包含 funct6、源寄存器、vm、funct3、vd 和 opcode。
先把 vs1[i] 与 vs2[i] 作为 SEW 宽乘数读取,再与宽 vd[i] 按 -(vs1[i] * vs2[i]) + vd[i] 融合;vd[i] 被结果覆盖。
阅读 VFWNMSAC.VV 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。.vv:两个向量源逐元素参与运算。
当前 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 vfwnmsac.vv v4, v8, v12 # vd[i] = -(v12[i] * v8[i]) + vd[i]» 等实际代码理解该场景。
不是。官方定义中 vd 是 2*SEW 宽加数,也会被最终结果覆盖;动画将它作为可编辑的累加器输入显示。