fcmpo (浮动比较有序) 指令
用途
比较两个浮点寄存器的内容。
语法
| 位数 | VALUE |
|---|---|
| 0-5 | 63 |
| 6-8 | BF |
| 9-10 | // |
| 11-15 | 法国 |
| 16-20 | FRB |
| 21-30 | 32 |
| 31 | / |
描述
fcmpo 指令将浮点寄存器 (FPR) FRA 中的 64 位双精度浮点操作数与 FPR FRB中的 64 位双精度浮点操作数进行比较。 浮点状态和控制寄存器 (FPSCR) 的浮点条件代码字段 (FPCC) 设置为反映操作数 FPR FRA 相对于操作数 FPR FRB的值。 值 BF 确定条件寄存器中的哪个字段接收四个 FPCC 位。
使用 fcmpo 指令时,请考虑以下事项:
- 如果其中一个操作数是停顿 NaN (QNaN) 或信号 NaN (SNaN) ,那么浮点条件代码设置为反映无序 (FU)。
- 如果其中一个操作数是SNaN,则设置浮点状态和控制寄存器的浮点无效操作异常位 VXSNAN。 此外:
- 如果禁用了 "无效操作" (即, "浮点无效操作" 异常启用位的 "浮点状态和控制寄存器" 为 0) ,那么将设置 "浮点无效操作" 异常位 VXVC (指示无效比较)。
- 如果操作数之一是QNaN,则设置浮点无效操作异常位 VXVC。
fcmpo 指令具有一种语法形式,并且始终影响浮点状态和控制寄存器中的 FT , FG , FE , FU , VXSNAN 和 VXVC 位。
参数
| 项 | 描述 |
|---|---|
| BF | 指定条件寄存器中接收四个 FPCC 位的字段。 |
| 法国 | 指定源浮点寄存器。 |
| FRB | 指定源浮点寄存器。 |
示例
以下代码将比较 FPR 4 和 FPR 6 的内容,并设置 "条件寄存器字段" 1 和 "浮点状态和控制寄存器" 以反映操作结果:
# Assume CR = 0 and FPSCR = 0.
# Assume FPR 5 contains 0xC053 4000 0000 0000.
# Assume FPR 4 contains 0x400C 0000 0000 0000.
fcmpo 6,4,5
# CR now contains 0x0000 0040.
# FPSCR now contains 0x0000 4000.