
DR
AFT
DR
AFT
DRAFT
DR
D
RAFT
DRAFT
DRA
FT DRAF
D
RAFT DRAFT DRAFT DRAFT DRAFT D
DRAFT
D
RAFT DRA
FT DRAFT DRAFT DRAFT DRA
UM10360_0
© NXP B.V. 2009. All rights reserved.
User manual
Rev. 00.06 — 5 June 2009
667 of 808
NXP Semiconductors
UM10360
Chapter 34: Appendix: Cortex-M3 User Guide
2.7 Saturating instructions
This section describes the saturating instructions,
SSAT
and
USAT
.
2.7.1 SSAT and USAT
Signed Saturate and Unsigned Saturate to any bit position, with optional shift before
saturating.
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.
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