FDIV.H

RISC-V FDIV.H 指令详解

指令手册R-type

半精度浮点除法:rd = rs1 / rs2。

指令语法

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

指令行为说明

FDIV.H 按 fdiv.h 的半精度格式执行浮点除法,结果按 rm 字段或动态舍入模式舍入后写入 rd。特殊值、NaN、无穷、除零和异常标志遵循 RISC-V 浮点扩展的 IEEE 754 规则。

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

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

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

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

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

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

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

半精度计算视图
rs1
fa1(f11) = 3.0
rs2
fa2(f12) = 1.5
结果
3.0 / 1.5 = 2.0

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

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

快速理解与检索要点

FDIV.H 是 Zfh 半精度浮点除法。它使用 OP-FP 编码,funct5=00011 且 fmt=H(10),从两个浮点寄存器读取半精度操作数,按 rm 或动态 frm 舍入后写回 rd,并在 fflags 中累积适用的浮点异常标志。

OP-FP 字段中 opcode=1010011,funct5=00011 选择 FDIV,fmt=10 选择 H 半精度格式。
rm 是编码字段;rm=111 表示使用 frm 动态舍入模式。精确可表示的示例不会因 rm 改变结果。
除零、无效操作、上溢、下溢和不精确结果由 fflags 记录;页面动画只计算有限且可精确核算的教学示例。

常见使用场景

浮点基本运算

结合 «fdiv.h f10, f11, f12, rne ; f10 = f11 / f12» 等实际代码理解该场景。

数值计算

结合 «fdiv.h f10, f11, f12, rne ; f10 = f11 / f12» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

舍入模式来自 rm 字段;rm=111 使用 frm 动态舍入模式。
浮点异常记录在 fflags,不是整数分支条件或整数异常。
0/0、非零数除以 0、NaN 和无穷等情况按 IEEE 754/RISC-V 浮点规则产生结果。

常见问题

FDIV.H 的动画为什么限制输入值?

半精度边界、NaN、无穷和舍入组合很多。动画只接受有限且结果可精确核算的示例,避免用 JavaScript 数值模型误导;完整边界行为以官方浮点规则和静态说明为准。

FDIV.H 会因为除零触发整数异常吗?

不会。浮点除零等情况通过 fflags 的浮点异常标志记录,结果按 RISC-V 采用的 IEEE 754 浮点规则确定。