首页/指令库/VADC-VXM
VADC.VXM

RISC-V VADC.VXM 指令详解

指令手册R-type

将vs2每个元素与标量rs1及v0的进位输入相加:vd[i]=vs2[i]+x[rs1]+v0.mask[i]。

指令语法

vadc.vxm vd, vs2, rs1, v0
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
V向量运算整数算术

指令行为说明

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 另行生成。

VADC 编码为 masked(vm=0)形式,但会操作并写回所有 body elements;vm=1 的 unmasked 编码保留。
为了正确传播进位,多精度加法通常先用 vmadc 生成临时 carry mask,再执行 vadc。

常见使用场景

多精度整数运算

结合 «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» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 R-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

v0.mask[i] 是 carry-in,不是元素执行掩码。
VADC 写求和值,不写 carry-out;carry-out 用 VMADC 生成。
VADC 编码为 masked 形式但写回所有 body elements,vm=1 编码保留。

常见问题

v0 是普通掩码吗?

这里 v0 的对应 mask 位表示 carry-in,而不是选择是否执行该元素。

VADC 会产生下一轮进位吗?

不会。VADC 只写求和值;下一轮进位由 VMADC 产生。