3.5.11. SHASX and SHSAX

Signed Halving Add and Subtract with Exchange and Signed Halving Subtract and Add with Exchange.

Syntax

op{cond} {Rd,} Rn, Rm

Where:

op

Is one of:

SHASX

Add and Subtract with Exchange and Halving.

SHSAX

Subtract and Add with Exchange and Halving.

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

The SHASX instruction:

  1. Adds the top halfword of the first operand with the bottom halfword of the second operand.

  2. Writes the halfword result of the addition to the top halfword of the destination register, shifted by one bit to the right causing a divide by two, or halving.

  3. Subtracts the top halfword of the second operand from the bottom highword of the first operand.

  4. Writes the halfword result of the division in the bottom halfword of the destination register, shifted by one bit to the right causing a divide by two, or halving.

The SHSAX instruction:

  1. Subtracts the bottom halfword of the second operand from the top highword of the first operand.

  2. Writes the halfword result of the addition to the bottom halfword of the destination register, shifted by one bit to the right causing a divide by two, or halving.

  3. Adds the bottom halfword of the first operand with the top halfword of the second operand.

  4. Writes the halfword result of the division in the top halfword of the destination register, shifted by one bit to the right causing a divide by two, or halving.

Restrictions

Do not use SP and do not use PC.

Condition flags

These instructions do not affect the condition code flags.

Examples

SHASX    R7, R4, R2      ; Adds top halfword of R4 to bottom halfword of R2 
                         ; and writes halved result to top halfword of R7.
                         ; Subtracts top halfword of R2 from bottom halfword of 
                         ; R4 and writes halved result to bottom halfword of R7.
SHSAX   R0, R3, R5       ; Subtracts bottom halfword of R5 from top halfword 
                         ; of R3 and writes halved result to top halfword of R0.
                         ; Adds top halfword of R5 to bottom halfword of R3 and 
                         ; writes halved result to bottom halfword of R0.

Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118