v0 是普通掩码吗?
这里 v0 的对应 mask 位表示 carry-in,而不是选择是否执行该元素。
将vs2每个元素与标量rs1及v0的进位输入相加:vd[i]=vs2[i]+x[rs1]+v0.mask[i]。
VADC.VXM 执行向量-标量带进位求和:vd[i] = vs2[i] + x[rs1] + v0.mask[i]。v0 的对应 mask 位是 carry-in,不是元素执行掩码;VADC 编码为 masked 形式但会写回所有 body elements。carry-out 需使用 VMADC 生成。
VADC.VXM 是 RVV 多精度加法用的带进位求和指令。进位输入固定来自 v0.mask[i],结果写入普通向量寄存器 vd;carry-out 需要用 VMADC 另行生成。
结合 «vsetvli t0, a0, e32, m1, ta, ma vmadc.vim v0, v8, 0 vadc.vxm v10, v8, a1, v0» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vmadc.vim v0, v8, 0 vadc.vxm v10, v8, a1, v0» 等实际代码理解该场景。
这里 v0 的对应 mask 位表示 carry-in,而不是选择是否执行该元素。
不会。VADC 只写求和值;下一轮进位由 VMADC 产生。