PM0214 Rev 9 131/262
PM0214 The STM32 Cortex-M4 instruction set
261
; from R5, saturates to 32 bits, writes to R0.
3.7.6 UQASX and UQSAX
Saturating Add and Subtract with Exchange and Saturating Subtract and Add with
Exchange, unsigned.
Syntax
op{cond} {Rd}, Rm, Rn
Where:
• op’ 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 on page 65)
• ‘Rd’ is the destination register.
• ‘Rn, Rm’ are registers holding the first and second operands.
Operation
The UQASX instruction:
1. Adds the bottom halfword of the source operand with top halfword of 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
4. 0 ≤ x ≤ 2
16
– 1, where x equals 16, to the top halfword of the destination register.
5. Saturates the result of the subtraction and writes a 16-bit unsigned integer in the range
0
≤ x ≤ 2
16
– 1, where x equals 16, to the bottom halfword of the destination register.
The UQSAX instruction:
1. Subtracts the bottom halfword of second operand from top highword of 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 ≤ 2
16
– 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 ≤ 2
16
– 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