fcmpo (浮动比较有序) 指令

用途

比较两个浮点寄存器的内容。

语法

位数 VALUE
0-5 63
6-8 BF
9-10 //
11-15 法国
16-20 FRB
21-30 32
31 /
描述
fcmpo BF FRA FRB

描述

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.