首页/指令库/FCLASS-D
FCLASS.D

RISC-V FCLASS.D 指令详解

指令手册R-type

检查双精度浮点值,向整数寄存器写入恰一位为 1 的 10 位分类掩码。

指令语法

fclass.d rd, rs1
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
D浮点比较

指令行为说明

FCLASS.D 检查 f[rs1] 中的双精度值,把 10 位分类掩码写入 x[rd];位 0..9 分别表示负无穷、负正规、负非正规、负零、正零、正非正规、正规正数、正无穷、信号 NaN、静默 NaN。除这 10 位外 rd 其余位清零,且不设置浮点异常标志。

快速理解与检索要点

FCLASS.D 用于无副作用地识别浮点值类别;它返回整数掩码而不是布尔比较结果。

掩码位定义与 FCLASS 表一致,正负零、正规/非正规和两类 NaN 分开编码。
该指令不执行舍入,也不数值转换。

常见使用场景

数值计算

结合 «fclass.d x10, f0 # x10 = class of f0 (double)» 等实际代码理解该场景。

浮点转换与比较

结合 «fclass.d x10, f0 # x10 = class of f0 (double)» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

结果写入整数寄存器,不写浮点寄存器。
恰好一位会置 1;不是可组合的多位属性集合。
FCLASS 不设置浮点异常标志,包括对 NaN 分类。

常见问题

FCLASS.D 会设置 NV 吗?

不会。官方 FCLASS 说明该指令不设置浮点异常标志。

FCLASS.D 的 rd 是浮点寄存器吗?

不是,rd 是整数寄存器,保存 10 位分类掩码。