VMSBC.VX 会写出加法/减法结果吗?
不会。它只写借位掩码位;整数差值由 VSBC 等数据指令产生。
计算逐元素减法借位,并把布尔结果写入目标掩码 vd。
VMSBC.VX 是 RISC-V V 扩展的向量-标量减法借位输出指令。对每个 body 元素,将 vs2[i] 与按 SEW 处理的 x[rs1] 作为无符号数相减;截断前差值为负时,vd.mask[i] 写 1,否则写 0。它只写借位掩码,不写整数差值。固定 vm=1,没有借位输入,也没有普通执行掩码操作数。
从 OP-V 编码字段开始,展示无 m 的 VMSBC 如何以 vm=1 处理所有 body 元素,不读取 borrow-in,并写逐元素借位掩码。
要求合法 vtype、VS 已启用与受支持 SEW;VL=0 不更新任何目标(含 tail)。VMSBC 每个 body 元素写一个 mask bit,tail 始终 agnostic;m1 下 vd 可与数据源同名,也可为 v0。带 borrow-in 时 v0 不可同时作 SEW 数据源。
教学模型固定 LMUL=m1、vstart=0,只展示所选 VL 的 body 元素。固定 VLEN=4096,VLMAX=4096/16=256,只演示支持所选 SEW 的实现;同名向量源必须具有相同元素。VMSBC.VX 固定 vm=1,无 v0 borrow-in;若 v0 被指定为 SEW 数据源,仍读取其数据。每个 body 元素产生一个目标 mask bit。
vmsbc.vx 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 rs1 字段放在同一条编码带中。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、活动元素读取、SEW 宽度整数借位输出生成、固定 vm=1、无 borrow-in和 vd 写回;不模拟流水线、缓存或执行时延。
VMSBC.VX 只生成借位掩码:vd.mask[i] = (unsigned(vs2[i]) - unsigned(scalar) < 0)。
语法 vmsbc.vx vd, vs2, rs1;vd 为单个 mask 寄存器,vs2 为 SEW 数据源,rs1 为整数标量源。
32 位 OP-V:opcode=1010111、funct6=010011、funct3=100 (OPIVX)。固定 vm=1。
按无符号位模式计算 vs2[i]-scalar;截断前差值为负写1,否则写0。XLEN>SEW 取标量低 SEW 位,XLEN<SEW 符号扩展。没有借位输入。
mask 目标可为 v0;与 SEW 源重叠须位于源组最低寄存器,合法不同 EEW 重叠强制 ma/ta。m1 下可同名。显式 vs2=v0 仍读取数据。
需 RV32/RV64 V 1.0、合法 vtype、VS 已启用及受支持 SEW;body 为 vstart≤i<vl,prestart 不变。所有 body 写借位位,mask tail 始终 agnostic。VL=0 不更新任何目标(含 tail);动画只展示固定合法配置的 body,步骤不是处理器周期。
假定 RV32/RV64 V 1.0、VS 已启用、合法 e32,m1、VLEN≥128、vl=4、vstart=0,源已初始化;示例未掩码。v2=[0,7,0xffffffff,4], x11=7 → v1.mask[0..3]=[1,0,0,1]。只写 mask bit,tail 始终 agnostic,不假定清零。
假定 RV32/RV64 V 1.0、VS 已启用、合法 e32,m1、VLEN≥128、vl=4、vstart=0,源已初始化;示例未掩码。v2=[0,7,0xffffffff,4], x11=7 → v1.mask[0..3]=[1,0,0,1]。只写 mask bit,tail 始终 agnostic,不假定清零。
不会。它只写借位掩码位;整数差值由 VSBC 等数据指令产生。