FDIV.D

RISC-V FDIV.D 指令详解

指令手册R-type

执行双精度浮点除法:f[rd] = f[rs1] / f[rs2]。

指令语法

fdiv.d rd, rs1, rs2, rm
操作数说明
rd:目标浮点寄存器,接收该格式的浮点结果。
rs1/rs2:源浮点寄存器;带 rm 的算术/舍入指令由 rm 或动态 frm 选择舍入模式。
D浮点运算

指令行为说明

FDIV.D 使用 OP-FP 编码与 fmt=D,对两个双精度浮点源操作数执行除法,按 rm 字段或动态 frm 舍入,并把结果写入浮点寄存器 rd。特殊值结果、NaN-boxing 输入检查和 fflags 行为由 RISC-V D/F 扩展浮点规则约束;具体执行延迟不是 ISA 语义。

FDIV.D 指令解析与执行动画

展示 D 扩展双精度 OP-FP 指令的 ISA 可见流程:解析编码字段,读取浮点寄存器,执行 FDIV 语义并写回 rd。

rd
rs1
rs2
rm
fdiv.d
,
,
,
执行环境
FLEN=64 / fmt=D (01)
舍入: RNE 最近偶数
fflags: 示例 fflags 保持 0
31..27
26..25
24..20
19..15
14..12
11..7
6..0
00011
FDIV
01
fmt=D
01100
rs2
01011
rs1
000
rm
01010
rd
1010011
OP-FP
执行数据路径
instruction
0x1AC58553
opcode
1010011 -> OP-FP
funct5/fmt
00011 + D(01) -> FDIV.D
rm
000 -> RNE 最近偶数
rd/rs
fa0(f10) / fa1(f11) / fa2(f12)
read
7.5, 2.5
FP op
7.5 / 2.5 = 3.0
write
fa0(f10) = 3.0; 示例 fflags 保持 0
当前步骤

Fetch:展示 32-bit OP-FP 编码

机器码按 R-type OP-FP 字段切分;双精度浮点 OP-FP 指令使用 opcode 1010011。

encoding: 0x1AC58553
syntax : fdiv.d fa0(f10), fa1(f11), fa2(f12), rne
result : fa0(f10) = 3.0; 示例 fflags 保持 0

当前默认示例 7.5 / 2.5 = 3.0 可精确表示,因此示例 fflags 保持 0。

双精度计算视图
rs1
fa1(f11) = 7.5
rs2
fa2(f12) = 2.5
结果
7.5 / 2.5 = 3.0

当前默认示例 7.5 / 2.5 = 3.0 可精确表示,因此示例 fflags 保持 0。

该动画只展示 RISC-V D 扩展的 ISA 可见 OP-FP 编码、示例数值结果和 fflags 关系;不模拟具体 FPU 流水线、延迟、完整 IEEE 754 边界组合或微架构实现。

快速理解与检索要点

FDIV.D 是 D 扩展双精度除法。编码通过 opcode=OP-FP、funct5=FDIV、fmt=D 和 rm 确定语义;结果写回浮点寄存器,特殊值、NaN-boxing 和异常标志由官方 D/F 浮点规则决定。

语法操作数是 rd、rs1、rs2、rm;源值、FLEN 和 fflags 是执行上下文,不属于汇编操作数。
fmt=D 表示 64 位双精度格式;D 扩展依赖 F 扩展的浮点控制状态。
页面动画使用 7.5 / 2.5 = 3.0 的精确示例,因此示例 fflags 保持 0;真实非精确或特殊值情况仍可能设置 fflags。

常见使用场景

浮点基本运算

结合 «fdiv.d f0, f1, f2 # f0 = f1/f2 (RNE)» 等实际代码理解该场景。

使用前检查清单

语法检查
  • rd:目标浮点寄存器,接收该格式的浮点结果。
  • rs1/rs2:源浮点寄存器;带 rm 的算术/舍入指令由 rm 或动态 frm 选择舍入模式。
语义检查
  • 确认操作数的浮点格式后缀(.H/.S/.D/.Q)符合数据宽度。
  • 确认是否需要检查 fflags 中的 NV、DZ、OF、UF、NX 等标志。

容易混淆 / 常见误区

rm=111 表示使用 frm 动态舍入模式;其它有效 rm 值是静态舍入模式。
D 扩展双精度操作数在更宽 FLEN 中受 NaN-boxing 规则约束。
具体除法延迟是实现相关属性,不属于 ISA 语义或页面动画内容。

常见问题

FDIV.D 的动画为什么没有直接演示除零?

本页动画用于讲清编码、寄存器读取、舍入字段和普通执行路径。除零、0/0、NaN 和无穷的结果分类由静态文字说明,避免把复杂特殊值规则误简化。

FDIV.D 会产生整数异常吗?

不会按整数条件码报告结果;浮点异常由 fflags 记录,具体结果按 RISC-V 浮点规则产生。