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

RISC-V VADC.VIM 指令详解

指令手册R-type

向量立即数带进位加:vd[i] = vs2[i] + imm + v0[i].LSB;carry-out 需用 vmadc 生成。

指令语法

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

指令行为说明

vadc.vim 是 RISC-V V 扩展的向量立即数带进位加法指令。对每个元素执行 vd[i] = vs2[i] + SEW(imm) + v0[i].LSB,其中 v0[i].LSB 是掩码寄存器 v0 对应元素的进位输入。结果写入普通向量目标 vd;该指令不产生 carry-out 掩码,carry-out 应由 vmadc.vim 计算。SEW 支持 8/16/32/64。

快速理解与检索要点

VADC.VIM 是 RVV 多精度加法用的带进位求和指令。进位输入固定来自 v0.mask[i],结果写入普通向量寄存器 vd;carry-out 需要用 VMADC 另行生成。

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

常见使用场景

位操作与掩码

结合 «vadc.vim vd, vs2, 0, v0» 等实际代码理解该场景。

向量运算

结合 «vadc.vim vd, vs2, 0, v0» 等实际代码理解该场景。

循环与迭代

结合 «vadc.vim vd, vs2, 0, 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 产生。