3.5.20. UHSUB16 and UHSUB8

Unsigned Halving Subtract 16 and Unsigned Halving Subtract 8.

Syntax

op{cond} {Rd,} Rn, Rm

Where:

op

Is one of:

UHSUB16

Performs two unsigned 16-bit integer subtractions, halves the results, and writes the results to the destination register.

UHSUB8

Performs four unsigned 8-bit integer subtractions, halves the results, and writes the results to the destination register.

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 first operand register.

Rm

Is the second operand register.

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.
Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118