首页/指令库/VDIVU-VX
VDIVU.VX

RISC-V VDIVU.VX 指令详解

指令手册V-type

向量-标量无符号整数除法,把逐元素商写入 vd;除零不触发异常。

指令语法

vdivu.vx vd, vs2, rs1[, v0.t]
操作数说明
vd 与 vs2 是 SEW 位向量寄存器组;同 EEW 源/目标可重叠,同名源读取相同初值。
rs1 选择整数寄存器;XLEN>SEW 取低 SEW 位,XLEN<SEW 符号扩展(包括无符号除法),x0 恒提供 0。
商向零舍入;除零返回全 1 位模式,不产生除零 trap。有符号最小负数/-1 返回被除数;无符号除法不会溢出。
要求 V、向量状态已启用且 vtype 受支持;活动元素满足 vstart≤i<vl 且(vm=1 或 v0[i]=1),VL=0 时目标完全不更新。省略 v0.t 表示 vm=1。inactive/tail 遵循 vma/vta;masked vd 不得覆盖 v0,v0 不能同时以 EEW=1 和 SEW 作为源读取。
V向量运算整数算术

指令行为说明

VDIVU.VX 对活动元素执行 SEW 位无符号整数除法:vs2 是被除数,由 x[rs1] 按 .vx 规则形成的标量是除数,商向零舍入并写入 vd。除零返回全 1 位模式,不产生除零 trap。无符号除法不会溢出。

VDIVU.VX 指令解析与执行动画

从 OP-V 编码字段开始,展示 VDIVU 如何逐元素计算无符号商及除零结果;无符号除法不会溢出。

输入的指令
vdivu.vx
执行环境

教学模型固定 LMUL=m1、vstart=0,只展示所选 VL 的 body 元素。固定 VLEN=4096,VLMAX=4096/16=256,只演示支持所选 SEW 的实现;同名向量源必须具有相同元素。普通掩码形式的 inactive 与 tail 元素按 vtype.vma/vta 处理,不在结果行中伪造确定值;VADC/VMADC/VSBC/VMSBC 则对所有 body 元素执行,v0 位仅作 carry/borrow-in。

OP-V encodingvdivu.vx
funct6
100000
vm
0
vs2
01000
rs1
01011
funct3
110
vd
00100
opcode
1010111
lane
0
1
2
3
4
5
6
7
v8
0x0064
0x002a
0x0007
0x00ff
0x0080
0x0001
0x0064
0x002a
/
/
/
/
/
/
/
/
x11
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
v0.t
1
0
1
1
1
0
1
1
v4
...
-
...
...
...
-
...
...
当前步骤

显示 OP-V 32 位编码字段

vdivu.vx 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 rs1 字段放在同一条编码带中。

动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、活动元素读取、SEW 宽度整数无符号除法、mask 控制和 vd 写回;不模拟流水线、缓存或执行时延。

快速理解与检索要点

VDIVU.VX 不产生除零异常。它在当前 vl 的活动元素上读取 vs2 作为被除数、读取x[rs1] 标量值作为除数,写回 无符号商;vm=0 时只执行 v0.t 为 1 的 body 元素。

VDIVU.VX 使用 OP-V 编码;.vx 形式由 funct3=110 选择,funct6=100000 选择 VDIVU。
vs2 是被除数;除数来自 x[rs1] 标量值;每个 lane 独立计算,不跨 lane 组合。
源操作数按无符号 SEW 整数解释,结果是商。
商向零舍入;整数除法不读取 frm 或 vxrm,也不设置浮点异常标志。
除数为 0 时,商结果按官方极端输入规则产生:无符号和有符号除法都写回全 1 位模式。
无符号形式没有有符号最小负数除以 -1 的溢出特例。
vm=0 使用 v0.t 执行掩码;mask-off 与 tail 元素按当前 vtype 策略处理。
若 XLEN>SEW,仅取 x[rs1] 低 SEW 位;若 XLEN<SEW,先符号扩展到 SEW。无符号除法也遵守此符号扩展规则。

向量执行上下文

vd 与 vs2 是 SEW 位向量寄存器组;同 EEW 源/目标可重叠,同名源读取相同初值。

rs1 选择整数寄存器;XLEN>SEW 取低 SEW 位,XLEN<SEW 符号扩展(包括无符号除法),x0 恒提供 0。

商向零舍入;除零返回全 1 位模式,不产生除零 trap。有符号最小负数/-1 返回被除数;无符号除法不会溢出。

要求 V、向量状态已启用且 vtype 受支持;活动元素满足 vstart≤i<vl 且(vm=1 或 v0[i]=1),VL=0 时目标完全不更新。省略 v0.t 表示 vm=1。inactive/tail 遵循 vma/vta;masked vd 不得覆盖 v0,v0 不能同时以 EEW=1 和 SEW 作为源读取。

The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture — Version 20260120, Chapter 31

常见使用场景

向量化整数缩放

假定 V/向量状态已启用、vstart=0、e32,m1 可用、VLMAX≥4 且 a0=4;示例未掩码,全部四个 body 元素执行。v2=[20,21,22,23],a1=3,得到 v1=[6,7,7,7];商向零舍入。尾元素按 ta 处理,不假定清零。

批量求商

假定 V/向量状态已启用、vstart=0、e32,m1 可用、VLMAX≥4 且 a0=4;示例未掩码,全部四个 body 元素执行。v2=[20,21,22,23],a1=3,得到 v1=[6,7,7,7];商向零舍入。尾元素按 ta 处理,不假定清零。

使用前检查清单

语法检查
  • vd 与 vs2 是 SEW 位向量寄存器组;同 EEW 源/目标可重叠,同名源读取相同初值。
  • rs1 选择整数寄存器;XLEN>SEW 取低 SEW 位,XLEN<SEW 符号扩展(包括无符号除法),x0 恒提供 0。
语义检查
  • 商向零舍入;除零返回全 1 位模式,不产生除零 trap。有符号最小负数/-1 返回被除数;无符号除法不会溢出。
  • 要求 V、向量状态已启用且 vtype 受支持;活动元素满足 vstart≤i<vl 且(vm=1 或 v0[i]=1),VL=0 时目标完全不更新。省略 v0.t 表示 vm=1。inactive/tail 遵循 vma/vta;masked vd 不得覆盖 v0,v0 不能同时以 EEW=1 和 SEW 作为源读取。

容易混淆 / 常见误区

除数为 0 不会 trap;需要错误路径的软件必须显式检测除数。
两个源操作数都按 SEW 位宽的无符号位模式解释。
第二源来自 x[rs1] 并按 .vx 标量规则形成 SEW 宽元素;没有标量除以向量的反向形式。

常见问题

VDIVU.VX 除零会产生异常吗?

不会。官方 V 扩展为除零定义了确定结果:商写回全 1 位模式,指令本身不产生除零 trap。

VDIVU.VX 和 VREMU 的关系是什么?

VDIVU.VX 写回商;配套的 VREMU 形式写回余数。除零时,商为全 1 位模式,余数为被除数。

VDIVU.VX 的商如何舍入?

商向零舍入。例如 SEW=32 时,21/4 得到 5。普通掩码形式仅对活动元素计算。