先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
扩展浮点 FMA:wide_product = 扩展(vs1[i] * vs2[i]),vd[i] = +(wide_product) + vd[i]。
VFWMACC.VV 执行扩展浮点融合乘加/乘减。两个窄向量源元素相乘。乘积扩展到 2*SEW 后按公式 vd[i] = +(wide_product) + vd[i] 与宽 vd 组合,融合为一次舍入。 向量 FP32/FP64 操作需要相应标量 F/D 支持;FP16 由相应向量半精度扩展控制,基础 V 扩展不自动包含半精度算术。
VFWMACC.VV 的核心是窄输入生成宽乘积,再按 vd[i] = +(wide_product) + vd[i] 与宽 vd 融合。
阅读 VFWMACC.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, e16, m1, ta, ma vfwmacc.vv v2, v4, v6» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e16, m1, ta, ma vfwmacc.vv v2, v4, v6» 等实际代码理解该场景。
不使用。浮点算术和转换使用 frm 或指令规定的固定舍入;vxrm 用于定点舍入指令。