首页/指令库/FCVT-S-LU
FCVT.S.LU

RISC-V FCVT.S.LU 指令详解

指令手册R-type

RV64 整数转浮点转换,无符号 64 位整数与单精度之间按 rm/frm 规则处理。

指令语法

fcvt.s.lu rd, rs1, rm
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
F浮点转换

指令行为说明

FCVT.S.LU 是 RV64 整数转浮点转换指令。它把 x[rs1] 中的 无符号 64 位整数转换为单精度值并写入 f[rd]。不精确结果设置 NX;浮点到整数超出可表示范围或 NaN 按官方 FCVT.int 规则产生裁剪结果并设置 NV。

快速理解与检索要点

FCVT.S.LU 属于 RV64 的 L/LU FCVT 形式;重点是 64 位整数宽度、rm 舍入字段和异常标志规则。

D 扩展的双精度转换规则与 F 扩展单精度转换规则类似,但源/目标浮点格式不同。
NX 只表示舍入后结果与原值不同;NV 用于无效浮点到整数转换。

常见使用场景

RV64专用操作

结合 «fcvt.s.lu f0, x10, rne # f0 = (float)(ulong)x10 (RV64)» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

这些 L/LU 形式是 RV64 指令;RV32 不提供 64 位整数目的/源寄存器形式。
所有 FCVT 整数/浮点转换都按 rm 字段选择舍入模式,DYN 使用 frm。
较大 64 位整数转浮点可能不精确并设置 NX。

常见问题

FCVT.S.LU 是否 RV32 可用?

不可用。L/LU 是 64 位整数转换形式,官方定义为 RV64-only。

FCVT.S.LU 会忽略 rm 吗?

不会。官方规则说明整数/浮点转换按 rm 字段舍入,DYN 使用 frm。