![ARM Cortex-M4 Generic User Manual Download Page 113](http://html.mh-extra.com/html/arm/cortex-m4/cortex-m4_generic-user-manual_2973228113.webp)
The Cortex-M4 Instruction Set
ARM DUI 0553A
Copyright © 2010 ARM. All rights reserved.
3-66
ID121610
Non-Confidential
3.5.18
UHADD16 and UHADD8
Unsigned Halving Add 16 and Unsigned Halving Add 8.
Syntax
op
{
cond
}{
Rd
,}
Rn
,
Rm
where:
op
Is any of:
UHADD16
Unsigned Halving Add 16.
UHADD8
Unsigned Halving Add 8.
cond
Is an optional condition code, see
.
Rd
Specifies the destination register.
Rn
Specifies the register holding the first operand.
Rm
Specifies 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.