The STM32 Cortex-M4 instruction set PM0214
132/262 PM0214 Rev 9
; 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.
3.7.7 UQADD and UQSUB
Saturating Add and Saturating Subtract Unsigned.
Syntax
op{cond} {Rd}, Rn, Rm
op{cond} {Rd}, Rn, Rm
Where:
• op’ is one of:
UQADD8 Saturating four unsigned 8-bit integer additions.
UQADD16 Saturating two unsigned 16-bit integer additions.
UDSUB8 Saturating four unsigned 8-bit integer subtractions.
UQSUB16 Saturating two unsigned 16-bit integer subtractions.
• ‘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
These instructions add or subtract two or four values and then writes an unsigned saturated
value in the destination register.
The UQADD16 instruction:
1. Adds the respective top and bottom halfwords of the first and second operands.
2. Saturates the result of the additions for each halfword in the destination register to the
unsigned range 0
≤ x ≤ 2
16
-1, where x is 16.
The UQADD8 instruction:
1. Adds each respective byte of the first and second operands.
2. Saturates the result of the addition for each byte in the destination register to the
unsigned range 0
≤ x ≤ 2
8
-1, where x is 8.
The UQSUB16 instruction:
1. Subtracts both halfwords of the second operand from the respective halfwords of the
first operand.
2. Saturates the result of the differences in the destination register to the unsigned range
0
≤ x ≤ 2
16-
1, where x is 16.
The UQSUB8 instructions:
1. Subtracts the respective bytes of the second operand from the respective bytes of the
first operand.
2. Saturates the results of the differences for each byte in the destination register to the
unsigned range 0
≤ x ≤ 2
8
-1, where x is 8.