The Cortex-M4 Instruction Set
ARM DUI 0553A
Copyright © 2010 ARM. All rights reserved.
3-69
ID121610
Non-Confidential
3.5.20
UHSUB16 and UHSUB8
Unsigned Halving Subtract 16 and Unsigned Halving Subtract 8.
Syntax
op
{
cond
}{
Rd
,}
Rn
,
Rm
where:
op
Is any of:
UHSUB16
Performs two unsigned 16-bit integer additions, halves the results, and
writes the results to the destination register.
UHSUB8
Performs four unsigned 8-bit integer additions, halves the results, and
writes the results to the destination register.
cond
Is an optional condition code, see
.
Rd
Specifies the destination register.
Rn
Specifies the first register holding the operand.
Rm
Specifies the second register holding the operand.
Operation
Use these instructions to add 16-bit and 8-bit data and then to halve the result before writing the
result to the destination register:
The
UHSUB16
instruction:
1.
Subtracts each halfword of the second operand from the corresponding halfword of the
first operand.
2.
Shuffles each halfword result to the right by one bit, halving the data.
3.
Writes each unsigned halfword result to the corresponding halfwords in the destination
register.
The
UHSUB8
instruction:
1.
Subtracts each byte of second operand from the corresponding byte of the first operand.
2.
Shuffles each byte result by one bit to the right, halving the data.
3.
Writes the unsigned byte results to the corresponding byte of the destination register.
Restrictions
Do not use SP and do not use PC
.
Condition flags
These instructions do not change the flags.
Examples
UHSUB16 R1, R0 ; Subtracts halfwords in R0 from corresponding halfword of
; R1 and writes halved result to corresponding halfword in
; R1
UHSUB8
R4, R0, R5 ; Subtracts bytes of R5 from corresponding byte in R0 and
; writes halved result to corresponding byte in R4.