VASUBU.VV 和普通 VSUB 有什么区别?
VASUBU.VV 是定点平均减,会按 vxrm 对右移 1 位的结果舍入;普通整数减不使用 vxrm。
向量-向量无符号平均减:活动元素读取 vs2 和 vs1,按 vxrm 舍入后写回 SEW 位 vd。
vasubu.vv 是 RVV 定点平均减指令。它在 vl 范围内对活动元素执行无符号运算,使用 vxrm 的 rnu/rne/rdn/rod 舍入模式,并受 vm/v0.t 执行掩码控制。
从 OP-V 编码字段开始,展示 VASUBU 如何按无限精度差值执行平均减,用 vxrm 舍入后再写回 SEW 宽 vd;最终溢出结果按规范回绕。
要求合法 vtype、已启用 VS 与受支持 SEW;VL=0 时包括 tail 在内均不更新。步骤仅为教学分解,不是处理器周期。
教学模型固定 LMUL=m1、vstart=0,只展示所选 VL 的 body 元素。固定 VLEN=4096,VLMAX=4096/16=256,只演示支持所选 SEW 的实现;同名向量源必须具有相同元素。普通掩码形式的 inactive 与 tail 元素按 vtype.vma/vta 处理,不在结果行中伪造确定值;VADC/VMADC/VSBC/VMSBC 则对所有 body 元素执行,v0 位仅作 carry/borrow-in。
vasubu.vv 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 vs1 字段放在同一条编码带中。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、活动元素读取、SEW 宽度整数无符号平均减法、vxrm 定点舍入和 vd 写回;不模拟流水线、缓存或执行时延。
VASUBU.VV 用于 RVV 定点平均减。源元素按无符号数解释,结果按 vxrm 舍入后写回 SEW 位 vd;它不设置浮点异常标志,也不是饱和指令。
vd、vs2 是 SEW 位向量寄存器组;同宽源与目标可重叠,同名源必须读取相同初值。
vs1 是第二个 SEW 位向量源,不是标量寄存器。
先按指令的有符号/无符号解释形成无限精度差,再右移 1 位并按 vxrm 舍入,最后截断到 SEW;溢出回绕,不饱和、不设置 vxsat。
要求 V 与所选 vtype 可用。vm=0 使用 v0.t,vm=1 未掩码;仅活动 body 元素计算,inactive/tail 遵循 vma/vta。masked vd 不得重叠 v0,v0 不能同时作为不同 EEW 数据源。
假定 V、e16,m1 可用且 VLMAX≥4,a0=4、vxrm=rne,v0 按 lane 0..3 为 1010。各 vs2 元素为 1,第二源元素为 2;示例活动 lane 0 和 2 得到 0,因为 -0.5 按 rne 舍入到偶数 0,关闭及尾部元素遵循 ma/ta。
假定 V、e16,m1 可用且 VLMAX≥4,a0=4、vxrm=rne,v0 按 lane 0..3 为 1010。各 vs2 元素为 1,第二源元素为 2;示例活动 lane 0 和 2 得到 0,因为 -0.5 按 rne 舍入到偶数 0,关闭及尾部元素遵循 ma/ta。
假定 V、e16,m1 可用且 VLMAX≥4,a0=4、vxrm=rne,v0 按 lane 0..3 为 1010。各 vs2 元素为 1,第二源元素为 2;示例活动 lane 0 和 2 得到 0,因为 -0.5 按 rne 舍入到偶数 0,关闭及尾部元素遵循 ma/ta。
VASUBU.VV 是定点平均减,会按 vxrm 对右移 1 位的结果舍入;普通整数减不使用 vxrm。
不会。本页指令使用 vxrm 舍入,但不是饱和指令;需要饱和语义时应查看 VSADD/VSSUB 等饱和定点指令。