UM10360 All information provided in this document is subject to legal disclaimers. © NXP B.V. 2013. All rights reserved.
User manual Rev. 3 — 20 December 2013 699 of 841
NXP Semiconductors
UM10360
Chapter 34: Appendix: Cortex-M3 user guide
34.2.7 Saturating instructions
This section describes the saturating instructions,
SSAT
and
USAT
.
34.2.7.1 SSAT and USAT
Signed Saturate and Unsigned Saturate to any bit position, with optional shift before
saturating.
34.2.7.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 Section 34.2.3.7 “
Conditional execution”.
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.
34.2.7.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