FMINM.H

RISC-V FMINM.H 指令详解

指令手册R-type

返回两个半精度浮点操作数的最小值。

指令语法

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

指令行为说明

FMINM.H 是 Zfa 的半精度 IEEE 754-2019 minimum 操作:如果任一输入是 NaN,结果为规范 NaN;否则返回数值较小的操作数,并按规范处理 -0.0 与 +0.0。

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

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

rd
rs1
rs2
fminm.h
,
,
执行环境
FLEN=>=32 / fmt=H (10)
funct3: FMINM(任一 NaN 为规范 NaN)
fflags: 示例 fflags 保持 0
31..27
26..25
24..20
19..15
14..12
11..7
6..0
00101
FMINM
10
fmt=H
01100
rs2
01011
rs1
010
funct3=010
01010
rd
1010011
OP-FP
执行数据路径
instruction
0x2CC5A553
opcode
1010011 -> OP-FP
funct5/fmt
00101 + H(10) -> FMINM.H
funct3
010 -> FMINM(任一 NaN 为规范 NaN)
rd/rs
fa0(f10) / fa1(f11) / fa2(f12)
read
-0.0, 0.0
FP op
FMINM(-0.0, 0.0) = -0.0
write
fa0(f10) = -0.0; 示例 fflags 保持 0
当前步骤

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

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

encoding: 0x2CC5A553
syntax : fminm.h fa0(f10), fa1(f11), fa2(f12)
result : fa0(f10) = -0.0; 示例 fflags 保持 0

默认示例展示官方规定的有符号零排序:-0.0 小于 +0.0。若任一输入为 NaN,Zfa FMINM/FMAXM 返回规范 NaN;信号 NaN 会设置 NV。

半精度计算视图
rs1
fa1(f11) = -0.0
rs2
fa2(f12) = 0.0
结果
FMINM(-0.0, 0.0) = -0.0

默认示例展示官方规定的有符号零排序:-0.0 小于 +0.0。若任一输入为 NaN,Zfa FMINM/FMAXM 返回规范 NaN;信号 NaN 会设置 NV。

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

快速理解与检索要点

FMINM.H 的核心搜索点是 NaN 处理。M 形式是 Zfa 版本,任一 NaN 都返回规范 NaN。

-0.0 与 +0.0 不相等地排序:-0.0 小于 +0.0。
该指令不使用 rm;它是选择操作而不是舍入算术。

常见使用场景

浮点比较

结合 «fminm.h f0, f1, f2 # f0 = IEEE 754-2019 min(f1,f2)» 等实际代码理解该场景。

数值计算

结合 «fminm.h f0, f1, f2 # f0 = IEEE 754-2019 min(f1,f2)» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

与普通 FMIN/FMAX 不同,FMINM/FMAXM 在任一输入为 NaN 时返回规范 NaN。
单独的 quiet NaN 不设置 NV;但 M 形式返回规范 NaN,而普通形式返回另一非 NaN 操作数。
-0.0 被认为小于 +0.0。

常见问题

FMINM.H 和 FMIN.H 的主要差异是什么?

M 形式在任一输入为 NaN 时返回规范 NaN;普通形式在只有一个 NaN 时返回另一个非 NaN 操作数。

FMINM.H 会舍入吗?

不会。它从两个操作数中选择结果,不带 rm 舍入字段。