FCVT.BF16.S 是否提供 BF16 加减乘除?
不。Zfbfmin/Zvfbfmin 主要提供 BF16 与 FP32 转换;Zvfbfwma 提供拓宽乘加。
将 FP32 窄化为 BF16;按 rm/frm 舍入。
语法 fcvt.bf16.s rd, rs1[, rm];rd、rs1 均选择浮点 f0–f31,f0 可读写;rs2 是固定格式选择子,不是第二源。
32 位 OP-FP:funct5=01000,fmt=10,rs2=01000,funct3=rm,opcode=1010011;没有立即数。
RV32/RV64 Zfbfmin 1.0,依赖 F;启用所需扩展与浮点状态。按 rm 舍入,rm=111 使用 frm;可累积 OF/UF/NX/NV。rm 可省略,汇编默认 dyn;静态 rm=101/110 与动态 frm=101–111 按保留编码处理。
支持 subnormal;源格式窄于 FLEN 时检查 NaN-boxing,错误装箱按 canonical quiet NaN;较窄结果高位填 1。sNaN 新增 NV、NaN 结果规范化;fflags 累积而非清零,设置标志本身不产生浮点陷阱。
FCVT.BF16.S 使用 opcode 1010011(0x53)、funct7 0100010、rs2 固定 8(BF16.S)。32 位 OP-FP:funct5=01000,fmt=10,rs2=01000,funct3=rm,opcode=1010011;没有立即数。
FCVT.BF16.S(Zfbfmin,依赖 F)将 f[rs1] 中的单精度 FP32 值窄化转换为 BF16,并按指令 rm 字段选择的 RISC-V 浮点舍入模式舍入,结果作为 BF16 值写入 f[rd](按较窄浮点结果进行 NaN-box)。它只支持 FP32 与 BF16 之间的最小转换,不提供 BF16 加减乘除。可能设置 Overflow、Underflow、Inexact、Invalid 异常标志。
FCVT.BF16.S 属于 RISC-V BF16 扩展;BF16 是 1 位符号、8 位指数、7 位 fraction 的 16 位浮点格式。
fcvt.bf16.s f0, f1, rne # boxed FP32 0x3F808000 (1.00390625) -> boxed BF16 0x3F80 (1.0), NX。预置示例源值并启用所需扩展与相关状态。
不。Zfbfmin/Zvfbfmin 主要提供 BF16 与 FP32 转换;Zvfbfwma 提供拓宽乘加。
rd 和 rs1 均选择浮点寄存器 f0–f31;f0 可以正常读写。源格式窄于 FLEN 时检查 NaN-boxing,错误装箱按规范 quiet NaN 处理;较窄结果的高位全部写 1。