5.3. 浮点运算指令
在龙芯基础指令集中,浮点数指令可按功能划分为浮点运算指令、浮点访存指令、浮点比较指令、浮点分支指令、浮点转换指令和浮点搬运指令。
浮点运算指令覆盖单/双精度浮点数的基本运算,包括加、减、乘、除、乘加、乘减、最大值、最小值、绝对值、取反、开方、倒数等。LoongArch支持的浮点运算指令及功能如表4-2所示。
LoongArch中的浮点数指令名都以f开头。每条指令通常同时提供单精度和双精度版本,并通过指令名后缀.s和.d区分。.s表示参与运算的操作数位于低32位,.d表示操作数为64位。
表4-2中,浮点寄存器fd表示目的操作数,浮点寄存器fj和fk表示两个源操作数。fd、fj、fk都可以是浮点寄存器f0~f31中的任意一个。
Tip
浮点运算指令没有带立即数的形式。所有浮点运算都需要先从内存把操作数加载到浮点寄存器中,计算完成后,再根据需要把结果保留在寄存器或写回内存。这个过程会用到浮点访存指令。