VRSUB.VI 的立即数范围是多少?
VI 形式使用 5 位有符号立即数,范围是 -16 到 15,并在参与运算前符号扩展。
从立即数中减去向量元素。
VRSUB.VI 对活动元素计算 signext(imm) - vs2[i],低 SEW 位写入 vd。
从 OP-V 编码字段开始,展示 VRSUB 如何按第二源减 vs2 计算活动元素、按 SEW 回绕,并写回 vd。
要求 V 1.0、启用向量状态及合法受支持 vtype/SEW;固定 LMUL=m1、vstart=0。固定 VLEN=4096,VLMAX=4096/16=256;同宽源/目标可重叠。计算符号扩展 simm5(-16..15)减 vs2[i],保留低 SEW 位。v0 用于 EEW=1 掩码/借位时不可同时作数据源。输入元素为非负位模式;VL=0 不更新任何目标位。只展示 body,不指定 inactive/tail 值;教学步骤不是处理器周期。
vrsub.vi 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 imm 字段放在同一条编码带中。
动画展示 OP-V 字段解析、反向减法、执行掩码与 vd 写回;步骤是教学分解,不表示处理器周期。
VRSUB.VI 对每个活动元素计算 sign-extended imm - vs2[i]。VI 形式使用 5 位有符号立即数,合法范围是 -16 到 15。
语法:vrsub.vi vd, vs2, imm[, v0.t];省略掩码为 vm=1,给出为 vm=0。32 位 OP-V:opcode=1010111、funct3=011(OPIVI)、funct6=000011。
计算符号扩展的 simm5(-16..15)减 vs2[i],结果保留低 SEW 位,不产生算术溢出异常。
body 为 vstart≤i<vl;仅掩码开启的 body 元素执行,inactive/tail 按 vma/vta。prestart 不变;vl=0 或 vstart≥vl 不更新任何目标元素。
同宽源/目标可重叠;普通 masked vd 不可为v0。v0 提供 EEW=1 掩码/借位时不可同时作数据源;源组不能以不同 EEW 读取同一寄存器。组起点按 EMUL 对齐,EMUL≤8。
要求 RV32/RV64 V 1.0、已启用向量状态、合法受支持 vtype/SEW。动画固定 m1、vstart=0;VLEN=4096,只展示 body;步骤不是处理器周期。
假定 V/VS 已启用、合法 m1、支持 SEW、VLEN=4096、XLEN=64、vl=4、vstart=0,源已初始化,v0.mask[0..3]=1111。SEW=8, imm=7, v12=[10,0,255,7] → v8=[253,7,8,0]。inactive/tail 按 vma/vta。vl=0 不更新目标。
假定 V/VS 已启用、合法 m1、支持 SEW、VLEN=4096、XLEN=64、vl=4、vstart=0,源已初始化,v0.mask[0..3]=1111。SEW=8, imm=7, v12=[10,0,255,7] → v8=[253,7,8,0]。inactive/tail 按 vma/vta。vl=0 不更新目标。
VI 形式使用 5 位有符号立即数,范围是 -16 到 15,并在参与运算前符号扩展。
普通单宽整数减法提供 VSUB.VV、VSUB.VX,以及反向减法 VRSUB.VX、VRSUB.VI;向量减立即数不是单独的 VSUB.VI 形式。