先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
向量-向量无符号平均减:活动元素读取 vs2 和 vs1,按 vxrm 舍入后写回 SEW 位 vd。
vasubu.vv 是 RVV 定点平均减指令。它在 vl 范围内对活动元素执行无符号运算,使用 vxrm 的 rnu/rne/rdn/rod 舍入模式,并受 vm/v0.t 执行掩码控制。
从 OP-V 编码字段开始,展示 VASUBU 如何按无限精度差值执行平均减,用 vxrm 舍入后再写回 SEW 宽 vd;最终溢出结果按规范回绕。
vasubu.vv 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 vs1 字段放在同一条编码带中。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、活动元素读取、SEW 宽度整数无符号平均减法、vxrm 定点舍入和 vd 写回;不模拟流水线、缓存或执行时延。
VASUBU.VV 用于 RVV 定点平均减。源元素按无符号数解释,结果按 vxrm 舍入后写回 SEW 位 vd;它不设置浮点异常标志,也不是饱和指令。
阅读 VASUBU.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 vasubu.vv v4, v8, v12, v0.t» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e16, m1, ta, ma vasubu.vv v4, v8, v12, v0.t» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e16, m1, ta, ma vasubu.vv v4, v8, v12, v0.t» 等实际代码理解该场景。
VASUBU.VV 是定点平均减,会按 vxrm 对右移 1 位的结果舍入;普通整数减不使用 vxrm。
不会。本页指令使用 vxrm 舍入,但不是饱和指令;需要饱和语义时应查看 VSADD/VSSUB 等饱和定点指令。