【NEON 和 VFP 编程】条件代码

在 ARM 状态下,可以使用条件代码来控制 VFP 指令的执行。 此类指令是根据 APSR 中的状态标记有条件执行的,执行方式与几乎所有其他 ARM 指令完全相同。

在 ARM 状态下,除 VFP 和 NEON 公用的指令之外,不能使用条件代码来控制 NEON 指令的执行。

在 Thumb-2 处理器上的 Thumb® 状态下,使用一个 IT 指令最多可在随后的四个 NEON 或 VFP 指令上设置条件代码。

FCMP 是可用于更新状态标记的唯一 VFP 指令。 它不是直接更新 APSR 中的标记,而是更新 FPSCR 中的一个单独的标记集(FPSCR,浮点状态和控制寄存器)。

若要使用这些标记来控制条件指令(包括条件 VFP 指令),必须先使用 VMSR 指令将其复制到 APSR。

对于这些标记来说,在 FCMP 指令后的准确含义与其在 ARM 数据处理指令后的含义是不同的。这是因为:

• 浮点值总是有符号的,因此不需要无符号的条件;

• 非数字 (NaN) 值彼此之间或者与数字之间没有排序关系,因此需要附加条件来针对无序的结果。

条件代码