报名编号:CICC1327
团队名称:301小队
指令格式
fsgnj.s rd , rs1, rs2
fsgnjn.s rd , rs1, rs2
fsgnjx.s rd , rs1, rs2
fsgnj.s 指令的操作数均为单精度浮点数,结果的符号位来自操作数寄存器rs2的符号位,结果的其他位来自操作数寄存器rs1,将结果写回寄存器rd
fsgnjn.s 指令的操作数均为单精度浮点数,结果的符号位来自操作数寄存器rs2的符号位取反,结果的其他位来自操作数寄存器rs1,将结果写回寄存器rd
fsgnjx.s 指令的操作数均为单精度浮点数,结果的符号位来自操作数寄存器rs1和操作数寄存器rs2的符号位的异或操作,结果的其他位来自操作数寄存器rs1,将结果写回寄存器rd
三个指令可以采用一个模块实现,较为简单,单周期执行
指令格式
fmv.x.w rd, rs1
fmv.w.x rd, rs1
• fmv.x.w 指令将通用浮点寄存器 rs1中的单精度浮点数读出,然后写回通用整数寄存rd中。
• fmv.w.x 指令将通用整数寄存器 rs1中的整数读出,然后写回通用浮点寄存器rd中。
实现较为简单,需要注意读出的rs1的值的寄存器来源和写回的寄存器,可单周期实现
指令格式
flt.s rd , rs1, rs2
fle.s rd , rs1, rs2
feq.s rd , rs1, rs2
• flt.s 指令:如果通用浮点寄存器rs1中的单精度浮点数值小于rs2中的值,则结果为1,否则为0 ,将结果写回通用整数寄存器rd中。
• fle.s 指令:如果通用浮点寄存器rs1中的单精度浮点数值小于或者等于rs2中的值,则结果为1,否则为0,将结果写回通用整数寄存器rd中。
• feq.s 指令:如果通用浮点寄存器rs1中的单精度浮点数值等于rs2中的值,结果为1,否则为0,将结果写回通用整数寄存器rd中。
此三个指令可以和fmin,fmax指令采用同一个模块实现,其区别是,此三个指令返回的结果为1或者0,并且返回整数寄存器,可以一个周期实现
指令格式
fclass.s rd, rs1
对通用浮点寄存器rs1中的单精度浮点数进行判断,根据其所属的类型产生一个10位的独热码结果,将结果写回通用整数寄存器rd中。如下所示
此指令可以对指令分类,对于其他指令而言也需要判断指令的类型,因此可以复用此模块节约资源。
指令类型 | 数量 |
---|---|
浮点数读写指令 | 6 |
浮点数运算指令 | 5 |
浮点数比较指令 | 5 |
浮点数乘加指令 | 4 |
浮点数格式转换指令 | 4 |
浮点数符号注入指令 | 3 |
浮点与整数互搬指令 | 2 |
浮点数分类指令 | 1 |
一共30条指令