RISC-V MCU中文社区

【分享】 浮点指令(五)

发表于 全国大学生集成电路创新创业大赛 2023-05-20 09:12:33
0
854
0

团队介绍

报名编号:CICC3940
团队名称:树上鸟儿成双队

浮点指令以及简单解释

fmv.d.x

fcvt.d.lu rd, rs1, rs2 //f[rd] = f64u64(x[rs1])
无符号长整型向双精度浮点转换(Floating-point Convert to Double from Unsigned Long). R-type, RV64D.
把寄存器 x[rs1]中的 64 位无符号整数转化为双精度浮点数,再写入 f[rd]中。

flw

flw rd, offset(rs1) //f[rd] = M[x[rs1] + sext(offset)][31:0]
浮点加载字(Floating-point Load Word). I-type, RV32F and RV64F.
从内存地址 x[rs1] + sign-extend(offset)中取单精度浮点数,并写入 f[rd]。
压缩形式: c.flwsp rd, offset; c.flw rd, offset(rs1)

fld

fld rd, offset(rs1) //f[rd] = M[x[rs1] + sext(offset)][63:0]
浮点加载双字(Floating-point Load Doubleword). I-type, RV32D and RV64D.
从内存地址 x[rs1] + sign-extend(offset)中取双精度浮点数,并写入 f[rd]。
压缩形式: c.fldsp rd, offset; c.fld rd, offset(rs1)

fsw

fsw rs2, offset(rs1) //M[x[rs1] + sext(offset)] = f[rs2][31:0]
单精度浮点存储(Floating-point Store Word). S-type, RV32F and RV64F.
将寄存器 f[rs2]中的单精度浮点数存入内存地址 x[rs1] + sign-extend(offset)中。
压缩形式: c.fswsp rs2, offset; c.fsw rs2, offset(rs1)

fsd

fsd rs2, offset(rs1) //M[x[rs1] + sext(offset)] = f[rs2][63:0]
双精度浮点存储(Floating-point Store Doubleword). S-type, RV32D and RV64D.
将寄存器 f[rs2]中的双精度浮点数存入内存地址 x[rs1] + sign-extend(offset)中。
压缩形式: c.fsdsp rs2, offset; c.fsd rs2, offset(rs1)

fmadd.s

fmadd.s rd, rs1, rs2, rs3 //f[rd] = f[rs1]× f[rs2]+f[rs3]
单精度浮点乘加(Floating-point Fused Multiply-Add, Single-Precision). R4-type, RV32F and RV64F.
把寄存器 f[rs1]和 f[rs2]中的单精度浮点数相乘,并将未舍入的积和寄存器 f[rs3]中的单精度
浮点数相加,将舍入后的单精度浮点数写入 f[rd]。

fmsub.s

fmsub.s rd, rs1, rs2, rs3 //f[rd] = f[rs1]× f[rs2]-f[rs3]
单精度浮点乘减(Floating-point Fused Multiply-Subtarct, Single-Precision). R4-type, RV32F and RV64F.
把寄存器 f[rs1]和 f[rs2]中的单精度浮点数相乘,并将未舍入的积减去寄存器 f[rs3]中的单精
度浮点数,将舍入后的单精度浮点数写入 f[rd]。

fnmsub.s

fnmsub.s rd, rs1, rs2, rs3 //f[rd] = -f[rs1]× f[rs2]+f[rs3]
单精度浮点乘取反减(Floating-point Fused Negative Multiply-Subtract, Single-Precision). R4-type, RV32F and RV64F.
把寄存器 f[rs1]和 f[rs2]中的单精度浮点数相乘,将结果取反,并将未舍入的积减去寄存器f[rs3]中的单精度浮点数,将舍入后的单精度浮点数写入 f[rd]。

fnmadd.s

fnmadd.s rd, rs1, rs2, rs3 //f[rd] = -f[rs1]_f[rs2]-f[rs3]
单精度浮点乘取反加(Floating-point Fused Negative Multiply-Add, Single-Precision). R4-type,RV32F and RV64F.
把寄存器 f[rs1]和 f[rs2]中的单精度浮点数相乘,将结果取反,并将未舍入的积和寄存器 f[rs3]中的单精度浮点数相加,将舍入后的单精度浮点数写入 f[rd]。

fmadd.d

fmadd.d rd, rs1, rs2, rs3 //f[rd] = f[rs1]× f[rs2]+f[rs3]
双精度浮点乘加(Floating-point Fused Multiply-Add, Double-Precision). R4-type, RV32D and RV64D.
把寄存器 f[rs1]和 f[rs2]中的双精度浮点数相乘,并将未舍入的积和寄存器 f[rs3]中的双精度
浮点数相加,将舍入后的双精度浮点数写入 f[rd]。

fmsub.d

fmsub.d rd, rs1, rs2, rs3 //f[rd] = f[rs1]× f[rs2]-f[rs3]
双精度浮点乘减(Floating-point Fused Multiply-Subtract, Double-Precision). R4-type, RV32D and RV64D.
把寄存器 f[rs1]和 f[rs2]中的双精度浮点数相乘,并将未舍入的积减去寄存器 f[rs3]中的双精度浮点数,将舍入后的双精度浮点数写入 f[rd]。

fnmsub.d

_fnmsub.d rd, rs1, rs2, rs3 //f[rd] = -f[rs1]_f[rs2]+f[rs3]
双精度浮点乘取反减(Floating-point Fused Negative Multiply-Subtract, Double-Precision). R4-type, RV32D and RV64D.
把寄存器 f[rs1]和 f[rs2]中的双精度浮点数相乘,将结果取反,并将未舍入的积减去寄存器f[rs3]中的双精度浮点数,将舍入后的双精度浮点数写入 f[rd]。

fnmadd.d

fnmadd.d rd, rs1, rs2, rs3 //f[rd] = f[rs1]× f[rs2]+f[rs3]
双精度浮点乘取反加(Floating-point Fused Negative Multiply-Add, Double-Precision). R4-type,RV32D and RV64D.
把寄存器 f[rs1]和 f[rs2]中的双精度浮点数相乘,将结果取反,并将未舍入的积和寄存器 f[rs3]中的双精度浮点数相加,将舍入后的双精度浮点数写入 f[rd]。

喜欢0
用户评论
LiYH

LiYH 实名认证


积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板