VREM.VV

RISC-V VREM.VV 指令详解

指令手册R-type

逐元素有符号整数余数。

指令语法

vrem.vv vd, vs2, vs1, vm
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
V向量整数运算除法/求余

指令行为说明

VREM.VV 计算 vs2 元素除以vs1 对应元素后的有符号余数。除数为零时结果按官方向量整数除法/余数规则产生,不触发陷入。

快速理解与检索要点

VREM.VV 是 RVV 整数余数指令,与 VDIV/VDIVU 的除法规则配套。

除数为 0 不产生异常,余数结果为被除数。
操作数按有符号二进制补码整数解释。
有符号除法溢出特例的余数为 0。

常见使用场景

模运算

结合 «vrem.vv v8, v12, v4, v0.t» 等实际代码理解该场景。

周期计算

结合 «vrem.vv v8, v12, v4, v0.t» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

除数为 0 时余数为被除数,这是官方定义的结果。
有符号最小值除以 -1 的溢出特例余数为 0。
没有“标量除以向量”的余数形式。

常见问题

VREM.VV 除零会陷入吗?

不会。官方 RVV 整数除法/余数规则沿用标量极端输入结果;余数指令在除数为 0 时返回被除数。