FLTS¶
说明¶
浮点数小于比较(Floating-point Less Than)
如果左源寄存器中低/半/单/双精度浮点数小于右源寄存器中低/半/单/双精度浮点数,将1写入到目的寄存器中;反之,写入0。
汇编语法¶
汇编符号¶
- SrcL:左源寄存器,可以索引全局寄存器R0-R23和前序1-4条输出至T队列或U队列的指令结果。
- SrcR:右源寄存器,可以索引全局寄存器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);
integer n = UInt(SrcR);
case SrcType of:
when 00 then DataType = FP64;
when 01 then DataType = FP32;
when 10 then DataType = FP16;
when 11 then DataType = FP8;
DataType operand1 = R[m, 64];
DataType operand2 = R[n, 64];
bits(64) result = (operand1 < operand2 ? 1 : 0);
R[d, 64] = result;
注意!
如果任意操作数是NaN(包括SNaN或QNaN),该指令则触发无效操作NV异常。
备注¶
本指令属于标准指令扩展,只能用于浮点块指令块体中。