FLI.H

RISC-V FLI.H 指令详解

指令手册R-type

从 Zfa 32 项常量表加载一个半精度浮点常量。

指令语法

fli.h rd, constant
操作数说明
rd:目标浮点寄存器。
constant:汇编层面的 Zfa FLI 表项常量;机器编码使用 rs1 字段选择 0-31 表项。
ZfaZfhZvfh浮点转换

指令行为说明

FLI.H 使用 OP-FP 的 R-type 字段布局:rs1 编码 32 项 Zfa 浮点常量表索引,funct5=11110、fmt=H、rs2=1、funct3=000,并将所选半精度常量写入 f[rd]。它要求 Zfa 加 Zfh 或 Zvfh;不是任意立即数编码。entry 1 是半精度的最小正规正数,entry 29 和 entry 30 都为 +inf,entry 31 是规范 NaN。加载常量不设置浮点异常标志。

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

展示 Zfa FLI 的 OP-FP 固定字段、rs1 常量表索引和浮点寄存器写回;它不是任意浮点立即数或舍入操作。

rd
constant
fli.h
,
31..27
26..25
24..20
19..15
14..12
11..7
6..0
11110
FLI
10
fmt
00001
fixed 1
10000
table index
000
fixed
01010
FP rd
1010011
OP-FP
执行数据路径
instruction
0xF4180553
opcode
1010011 -> OP-FP
funct5 / fmt
11110 / 10 -> FLI.H
fixed fields
rs2=00001, funct3=000
constant index
rs1=16 -> 1.0
destination
rd=fa0(f10)
writeback
fa0(f10) = 1.0; fflags unchanged
当前步骤

Fetch:展示 32 位 OP-FP FLI 编码

FLI 使用 OP-FP 字段布局;它不把任意浮点字面量放入普通 I-type 立即数字段。

等待浮点寄存器写回

该动画只展示 Zfa FLI 的 ISA 可见字段选择、官方常量表选择和寄存器结果;不模拟汇编器实现、FPU 流水线、异常处理或微架构时序。

快速理解与检索要点

FLI.H 通过指令 rs1 字段选择官方 32 项表中的一个半精度常量写入 rd;它不能表达任意二进制浮点字面量。

entry 1 随目标格式变化;H/S/D/Q 分别使用该格式的最小正规正数。
entry 30 和 31 分别表示 +inf 与规范 NaN;加载它们不产生异常标志。

常见使用场景

浮点常量

结合 «fli.h f0, 1.0 # f0 = 1.0» 等实际代码理解该场景。

使用前检查清单

语法检查
  • rd:目标浮点寄存器。
  • constant:汇编层面的 Zfa FLI 表项常量;机器编码使用 rs1 字段选择 0-31 表项。
语义检查
  • 确认常量属于官方 Zfa FLI 32 项表。
  • 确认该指令不会加载任意浮点立即数,也不会设置浮点异常标志。

容易混淆 / 常见误区

constant 必须是官方 FLI 常量表可表示的值,不是任意浮点立即数。
rs1 字段实际编码 0-31 的表项索引。
加载 +inf 或规范 NaN 也不会设置浮点异常标志。

常见问题

FLI.H 可以加载任意浮点常量吗?

不可以。它只能选择 Zfa 规定的 32 个表项。

FLI.H 的 constant 是怎么编码的?

汇编器把可接受的常量名或数值映射到 rs1 字段中的 0-31 表项索引。