4.5.2. QADD、QSUB、QDADD 和 QDSUB

有符号加法、减法,加倍加法,加倍减法,将结果饱和到有符号范围 –231x ≤ 231–1 内。

另请参阅并行加法和减法

语法

op{cond} {Rd}, Rm, Rn

其中:

op

QADDQSUBQDADDQDSUB 之一。

cond

是一个可选的条件代码(请参阅条件执行)。

Rd

是目标寄存器。

Rm、Rn

是存放操作数的寄存器。

不要将 r15 用作 RdRmRn

用法

QADD 指令可将 RmRn 中的值相加。

QSUB 指令可从 Rm 中的值中减去 Rn 中的值。

QDADD 指令可计算 SAT(Rm + SAT(Rn * 2))。 进行加倍和加法运算均有可能出现饱和。 如果加倍运算发生饱和,而加法运算没有出现饱和,则将设置 Q 标记,但最终结果是不饱和的。

QDSUB 指令可计算 SAT(Rm - SAT(Rn * 2))。 进行加倍和加法运算均有可能出现饱和。 如果加倍运算发生饱和,而加法运算没有出现饱和,则将设置 Q 标记,但最终结果是不饱和的。

Note

这些指令会将所有值视为有符号整数的二进制补码。

有关仅可在 ARMv6 及更高版本中可用的类似指令的信息,请参阅并行加法和减法

条件标记

如果发生饱和,则这些指令设置 Q 标记。 若要读取 Q 标记的状态,请使用 MRS 指令(请参阅MRS)。

体系结构

这些指令可用于 ARMv6 及更高版本,以及 ARMv5 的 E 变体。

这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本(ARMv7-M 架构除外)。

这些指令均无 16 位 Thumb 版本。

示例

    QADD    r0, r1, r9
    QDSUBLT r9, r0, r1
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential