Atmel ARM-Based Evaluation Kit for SAM4S16C, 32-Bit ARM® Cortex® Microcontroller ATSAM4S-WPIR-RD ATSAM4S-WPIR-RD Data Sheet

Product codes
ATSAM4S-WPIR-RD
Page of 1231
SAM4S Series [DATASHEET]
Atmel-11100G-ATARM-SAM4S-Datasheet_27-May-14
130
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.
12.6.5.12SHSUB16 and SHSUB8
Signed Halving Subtract 16 and Signed Halving Subtract 8
Syntax
op{cond}{Rd,} RnRm
where:
opis any of:
SHSUB16 Signed Halving Subtract 16.
SHSUB8 Signed Halving Subtract 8.
condis an optional condition code, see 
.
Rdis the destination register.
Rnis the first operand register.
Rmis 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 SHSUB16 instruction: 
1. Subtracts each halfword of the second operand from the corresponding halfwords of the first operand.
2. Shuffles the result by one bit to the right, halving the data.
3. Writes the halved halfword results in the destination register.
The SHSUBB8 instruction: 
1. Subtracts each byte of the second operand from the corresponding byte of the first operand,
2. Shuffles the result by one bit to the right, halving the data,
3. Writes the corresponding signed byte results in the destination register.
Restrictions
Do not use SP and do not use PC
.
Condition Flags
These instructions do not change the flags.
Examples
SHSUB16 R1, R0  
; Subtracts halfwords in R0 from corresponding halfword
 ; of R1 and writes to corresponding halfword of R1
SHSUB8
R4, R0, R5 ; Subtracts bytes of R0 from corresponding byte in R5,
 ; and writes to corresponding byte in R4.