FSQRT¶
说明¶
浮点数平方根(Floating-point Square Root)
把源寄存器中低/半/单/双精度浮点数的平方根舍入后写入到目的寄存器中。
汇编语法¶
汇编符号¶
- SrcL:左源寄存器,可以索引全局寄存器R0-R23和前序1-4条输出至T队列或U队列的指令结果。
- T:输入的浮点数精度标识,包括FB,FH,FS,FD 4种。
- ->:用于指示目的寄存器。
- {t,u,Rd}:表示三种可选的目的寄存器,编码于RegDst域。其中:
- t,u:分别表示块内的T和U寄存器队列。
- Rd:可以索引全局寄存器R1-R23。
编码格式¶
SrcType域编码如下:
| SrcType | 数据格式 | 说明 |
|---|---|---|
| 0 | FD | 64bit双精度浮点数 |
| 1 | FS | 32bit单精度浮点数 |
| 2 | FH | 16bit半精度浮点数 |
| 3 | FB | 8bit低精度浮点数 |
执行方式¶
integer d = UInt(RegDst);
integer m = UInt(SrcL);
case SrcType of:
when 00 then DataType = FP64;
when 01 then DataType = FP32;
when 10 then DataType = FP16;
when 11 then DataType = FP8;
DataType operand = R[m, datawidth];
bits(64) result = SQRT(operand);
R[d, 64] = result;
注意
当源操作数为负数时,该指令会触发非法操作异常(NV)。
舍入模式¶
当计算结果无法精确表达需要进行舍入时,计算结果的舍入模式由CSTATE寄存器的FRM域段决定。如果FRM字段是无效的,那么默认采用RNE模式对结果进行舍入。
备注¶
本指令属于标准指令扩展,只能用于浮点块指令块体中。