VMADC.VX 会写出加法结果吗?
不会。它只写进位输出的掩码位;加法的 SEW 宽结果由 VADC 等数据指令产生。
计算逐元素加法进位,并把布尔结果写入目标掩码 vd。
VMADC.VX 是 RISC-V V 扩展的向量-标量加法进位输出指令。它不写整数和,而是把 vs2[i] + x[rs1] 的每个元素进位输出写成目标掩码位。若 XLEN 大于 SEW,标量取低 SEW 位;若 XLEN 小于 SEW,标量符号扩展到 SEW。不带 m 后缀的形式没有进位输入,且没有普通执行掩码操作数。目标寄存器是掩码寄存器,不能理解为普通 SEW 宽整数结果。
从 OP-V 编码字段开始,展示无 m 的 VMADC 形式如何以 vm=1 处理所有 body 元素,不读取 carry-in,并把逐元素 carry-out 写入目标掩码位。
教学模型固定 LMUL=m1、vstart=0,只展示所选 VL 的 body 元素。固定 VLEN=4096,VLMAX=4096/16=256,只演示支持所选 SEW 的实现;同名向量源必须具有相同元素。VMADC 的目标 mask 始终采用 tail-agnostic;tail 不保证保留,VL=0 时包括 tail 在内不更新任何目标位。LMUL=m1 下 vd 可以与 SEW 数据源同名;带 carry-in 时 v0 不能同时用作 SEW 数据源,但 vd 可以是 v0。VMADC.VX 固定 vm=1,无 v0 carry-in;若 v0 被指定为 SEW 数据源,仍读取其数据。每个 body 元素产生一个目标 mask bit。
vmadc.vx 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 rs1 字段放在同一条编码带中。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、活动元素读取、SEW 宽度整数进位输出生成、固定 vm=1、无 carry-in和 vd 写回;不模拟流水线、缓存或执行时延。
VMADC.VX 固定 vm=1,对每个 body 元素从 vs2[i] + x[rs1] 生成进位掩码;它不读取 v0 carry-in,但 v0 若被指定为 SEW 数据源仍会读取其数据。
32 位 OP-V:opcode=1010111、funct6=010001、funct3=100(OPIVX)、vm=1。vd 是单个 mask 目标寄存器,每个元素一位;vs2 是 SEW 数据源。
rs1 是整数寄存器;XLEN>SEW 取低 SEW 位,XLEN<SEW 符号扩展到 SEW。x0 提供 0。
固定 vm=1,没有 carry-in,也没有普通 v0.t 执行掩码。每个 body 元素都执行。
把两个 SEW 位源按无符号值相加;和≥2^SEW 时 vd.mask[i]=1,否则为0。不写 SEW 宽整数和;mask 位 i 位于 vd 的 bit i,与 SEW/LMUL 无关。
目标与源遵循寄存器组重叠限制:mask EEW=1;目标窄于源时须与源组低端同起点。带 carry-in 时 v0 不能同时作为 SEW 数据源,但 mask 目标可为 v0。动画固定 LMUL=m1,因此 vd 可与数据源同名。
要求 V 1.0、向量状态已启用、合法 vtype 及所选宽度受支持。body 为 vstart≤i<vl;prestart 不更新,mask tail 始终 agnostic,不受 vta 控制。VL=0 或 vstart≥vl 不更新任何目标位,包括 tail。动画固定 VLEN=4096、vstart=0,只显示 body 位。
假定 V、合法 e8,m1、vl=1、vstart=0 且源已初始化,vs2[0]=255,第二源为1:和为256,目标 mask bit 0 为1;不写整数和,tail 不保证保留。
假定 V、合法 e8,m1、vl=1、vstart=0 且源已初始化,vs2[0]=255,第二源为1:和为256,目标 mask bit 0 为1;不写整数和,tail 不保证保留。
假定 V、合法 e8,m1、vl=1、vstart=0 且源已初始化,vs2[0]=255,第二源为1:和为256,目标 mask bit 0 为1;不写整数和,tail 不保证保留。
不会。它只写进位输出的掩码位;加法的 SEW 宽结果由 VADC 等数据指令产生。