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
161
SAM4S Series [DATASHEET]
Atmel-11100G-ATARM-SAM4S-Datasheet_27-May-14
12.6.7.1 SSAT and USAT
Signed Saturate and Unsigned Saturate to any bit position, with optional shift before saturating.
Syntax
op{condRd, #nRm {, shift #s}
where:
opis one of:
SSAT Saturates a signed value to a signed range.
USAT Saturates a signed value to an unsigned range.
condis an optional condition code, see 
.
Rdis the destination register.
nspecifies the bit position to saturate to:
n ranges from 1n ranges from 0 to 31 for USAT.
to 32 for SSAT
Rmis the register containing the value to saturate.
shift #sis an optional shift applied to Rm before saturating. It must be one of the
following:
ASR #swhere s is in the range 1 to 31.
LSL #s
where s is in the range 0 to 31.
Operation
These instructions saturate to a signed or unsigned n-bit value. 
The SSAT instruction applies the specified shift, then saturates to the signed range
-2
n
–1
≤ ≤ 2
n
–1
-1.
The USAT instruction applies the specified shift, then saturates to the unsigned range 0 ≤ ≤ 2
n
-1.
Restrictions
Do not use SP and do not use PC
.
Condition Flags
These instructions do not affect the condition code flags.
If saturation occurs, these instructions set the Q flag to 1.
Examples
SSAT
R7, #16, R7, LSL #4
; Logical shift left value in R7 by 4, then 
; saturate it as a signed 16-bit value and
; write it back to R7
USATNE
R0, #7, R5
; Conditionally saturate value in R5 as an 
; unsigned 7 bit value and write it to R0.