FCVT.S.BF16 是否提供 BF16 加减乘除?
不。Zfbfmin/Zvfbfmin 主要提供 BF16 与 FP32 转换;Zvfbfwma 提供拓宽乘加。
将 BF16 精确加宽为 FP32。
语法 fcvt.s.bf16 rd, rs1[, rm];rd、rs1 均选择浮点 f0–f31,f0 可读写;rs2 是固定格式选择子,不是第二源。
32 位 OP-FP:funct5=01000,fmt=00,rs2=00110,funct3=rm,opcode=1010011;没有立即数。
RV32/RV64 Zfbfmin 1.0,依赖 F;启用所需扩展与浮点状态。精确加宽,数值不受 rm 影响;软件应编码 RNE(000);仅可能新增 NV。rm 可省略,汇编默认 dyn;静态 rm=101/110 与动态 frm=101–111 按保留编码处理。
支持 subnormal;源格式窄于 FLEN 时检查 NaN-boxing,错误装箱按 canonical quiet NaN;较窄结果高位填 1。sNaN 新增 NV、NaN 结果规范化;fflags 累积而非清零,设置标志本身不产生浮点陷阱。
FCVT.S.BF16 使用 opcode 1010011(0x53)、funct7 0100000、rs2 固定 6(BF16)。32 位 OP-FP:funct5=01000,fmt=00,rs2=00110,funct3=rm,opcode=1010011;没有立即数。
FCVT.S.BF16(Zfbfmin,依赖 F)将 f[rs1] 中 NaN-boxed 的 BF16 值精确加宽转换为单精度 FP32 并写入 f[rd]。对普通数或无穷,BF16 编码左移 16 位形成 FP32 高 16 位,低 16 位 fraction 补零;结果按 FP32 在更宽 FLEN 中 NaN-box。该转换不需要舍入,但遇到 signaling NaN 等输入时可能设置 Invalid。
FCVT.S.BF16 属于 RISC-V BF16 扩展;BF16 是 1 位符号、8 位指数、7 位 fraction 的 16 位浮点格式。
fcvt.s.bf16 f0, f1, rne # boxed BF16 0x3FC0 (1.5) -> FP32 0x3FC00000 (1.5)。预置示例源值并启用所需扩展与相关状态。
不。Zfbfmin/Zvfbfmin 主要提供 BF16 与 FP32 转换;Zvfbfwma 提供拓宽乘加。
rd 和 rs1 均选择浮点寄存器 f0–f31;f0 可以正常读写。源格式窄于 FLEN 时检查 NaN-boxing,错误装箱按规范 quiet NaN 处理;较窄结果的高位全部写 1。