3.5.18. UHADD16 and UHADD8

Unsigned Halving Add 16 and Unsigned Halving Add 8.

Syntax

op{cond} {Rd,} Rn, Rm

Where:

op

Is one of:

UHADD16

Unsigned Halving Add 16.

UHADD8

Unsigned Halving Add 8.

cond

Is an optional condition code. See Conditional execution.

Rd

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

Rn

Is the register holding the first operand.

Rm

Is the register holding the second operand.

Operation

Use these instructions to add 16- and 8-bit data and then to halve the result before writing the result to the destination register.

The UHADD16 instruction:

  1. Adds each halfword from the first operand to the corresponding halfword of the second operand.

  2. Shuffles the halfword result by one bit to the right, halving the data.

  3. Writes the unsigned results to the corresponding halfword in the destination register.

The UHADD8 instruction:

  1. Adds each byte of the first operand to the corresponding byte of the second operand.

  2. Shuffles the byte result by one bit to the right, halving the data.

  3. Writes the unsigned results in the corresponding byte in the destination register.

Restrictions

Do not use SP and do not use PC.

Condition flags

These instructions do not change the flags.

Examples

UHADD16 R7, R3      ; Adds halfwords in R7 to corresponding halfword of R3 
                    ; and writes halved result to corresponding halfword in R7.
UHADD8  R4, R0, R5  ; Adds bytes of R0 to corresponding byte in R5 and writes
                    ; halved result to corresponding byte in R4.
Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118