Datasheet
123
11011B–ATARM–21-Feb-12
SAM3N
10.15 Saturating instructions
This section describes the saturating instructions, SSAT and USAT.
10.15.1 SSAT and USAT
Signed Saturate and Unsigned Saturate to any bit position, with optional shift before saturating.
10.15.1.1 Syntax
op{cond} Rd, #n, Rm {, shift #s}
where:
op is one of:
SSAT Saturates a signed value to a signed range.
USAT Saturates a signed value to an unsigned range.
cond is an optional condition code, see “Conditional execution” on page 84.
Rd is the destination register.
n specifies the bit position to saturate to:
n ranges from 1 to 32 for SSAT
n ranges from 0 to 31 for USAT.
Rm is the register containing the value to saturate.
shift #s is an optional shift applied to Rm before saturating. It must be one of the following:
ASR #s where s is in the range 1 to 31
LSL #s where s is in the range 0 to 31.
10.15.1.2 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
≤x ≤2
n–1
−1.
The USAT instruction applies the specified shift, then saturates to the unsigned range 0 ≤x ≤2
n
−1.
For signed n-bit saturation using SSAT, this means that:
• if the value to be saturated is less than −2
n−1
, the result returned is −2
n-1
• if the value to be saturated is greater than 2
n−1
−1, the result returned is 2
n-1
−1
• otherwise, the result returned is the same as the value to be saturated.
For unsigned n-bit saturation using USAT, this means that:
• if the value to be saturated is less than 0, the result returned is 0
• if the value to be saturated is greater than 2
n
−1, the result returned is 2
n
−1
• otherwise, the result returned is the same as the value to be saturated.
If the returned result is different from the value to be saturated, it is called saturation. If satura-
tion occurs, the instruction sets the Q flag to 1 in the APSR. Otherwise, it leaves the Q flag
unchanged. To clear the Q flag to 0, you must use the MSR instruction, see “MSR” on page 144.
To read the state of the Q flag, use the MRS instruction, see “MRS” on page 143.