3.7.7. UQADD and UQSUB

Saturating Add and Saturating Subtract Unsigned.

Syntax

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.

UQSUB8

Saturating four unsigned 8-bit integer subtractions.

UQSUB16

Saturating two unsigned 16-bit integer subtractions.

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

These instructions add or subtract two or four values and then writes an unsigned saturated value in the destination register.

The UQADD16 instruction:

  • Adds the respective top and bottom halfwords of the first and second operands.

  • Saturates the result of the additions for each halfword in the destination register to the unsigned range 0 ≤ ≤ 216−1, where x is 16.

The UQADD8 instruction:

  • Adds each respective byte of the first and second operands.

  • Saturates the result of the addition for each byte in the destination register to the unsigned range 0 ≤ ≤ 28−1, where x is 8.

The UQSUB16 instruction:

  • Subtracts both halfwords of the second operand from the respective halfwords of the first operand.

  • Saturates the result of the differences in the destination register to the unsigned range 0 ≤ ≤ 216−1, where x is 16.

The UQSUB8 instructions:

  • Subtracts the respective bytes of the second operand from the respective bytes of the first operand.

  • Saturates the results of the differences for each byte in the destination register to the unsigned range 0 ≤ ≤ 28−1, where x is 8.

Restrictions

Do not use SP and do not use PC.

Condition flags

These instructions do not affect the condition code flags.

Examples

UQADD16  R7, R4, R2   ; Adds halfwords in R4 to corresponding halfword in R2, 
                      ; saturates to 16 bits, writes to corresponding halfword
                      ; of R7
UQADD8   R4, R2, R5   ; Adds bytes of R2 to corresponding byte of R5, saturates
                      ; to 8 bits, writes to corresponding bytes of R4
UQSUB16  R6, R3, R0   ; Subtracts halfwords in R0 from corresponding halfword
                      ; in R3, saturates to 16 bits, writes to corresponding
                      ; halfword in R6
UQSUB8   R1, R5, R6   ; Subtracts bytes in R6 from corresponding byte of R5, 
                      ; saturates to 8 bits, writes to corresponding byte of R1.
Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118