3.7.6. UQASX and UQSAX

Saturating Add and Subtract with Exchange and Saturating Subtract and Add with Exchange, unsigned.

Syntax

op{cond} {Rd,} Rn, Rm

Where:

type

Is one of:

UQASX

Add and Subtract with Exchange and Saturate.

UQSAX

Subtract and Add with Exchange and Saturate.

cond

Is an optional condition code. See Conditional execution.

Rd

Is the destination register. If Rd is omitted, the destination register is Rn.

Rn, Rm

Are registers holding the first and second operands.

Operation

The UQASX instruction:

  1. Adds the bottom halfword of the source operand with the top halfword of the second operand.

  2. Subtracts the bottom halfword of the second operand from the top highword of the first operand.

  3. Saturates the results of the sum and writes a 16-bit unsigned integer in the range 0 ≤ x ≤ 216 – 1, where x equals 16, to the top halfword of the destination register.

  4. Saturates the result of the subtraction and writes a 16-bit unsigned integer in the range 0 ≤ x ≤ 216 – 1, where x equals 16, to the bottom halfword of the destination register.

The UQSAX instruction:

  1. Subtracts the bottom halfword of the second operand from the top highword of the first operand.

  2. Adds the bottom halfword of the first operand with the top halfword of the second operand.

  3. Saturates the result of the subtraction and writes a 16-bit unsigned integer in the range 0 ≤ x ≤ 216 – 1, where x equals 16, to the top halfword of the destination register.

  4. Saturates the results of the addition and writes a 16-bit unsigned integer in the range 0 ≤ x ≤ 216 – 1, where x equals 16, to the bottom halfword of the destination register.

Restrictions

Do not use SP and do not use PC.

Condition flags

These instructions do not affect the condition code flags.

Examples

UQASX   R7, R4, R2  ; Adds top halfword of R4 with bottom halfword of R2, 
                    ; saturates to 16 bits, writes to top halfword of R7
                    ; Subtracts top halfword of R2 from bottom halfword of
                    ; R4, saturates to 16 bits, writes to bottom halfword of R7
UQSAX   R0, R3, R5  ; Subtracts bottom halfword of R5 from top halfword of R3,
                    ; saturates to 16 bits, writes to top halfword of R0
                    ; Adds bottom halfword of R4 to top halfword of R5
                    ; saturates to 16 bits, writes to bottom halfword of R0.
Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118