PM0214 Rev 9 125/262
PM0214 The STM32 Cortex-M4 instruction set
261
3.7 Saturating instructions
This section describes the saturating instructions.
For signed n-bit saturation, 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, 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
saturation 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 187.
To read the state of the Q flag, use the MRS instruction, see MRS on page 186.
Table 30. Saturating instructions
Mnemonic Brief description See
SSAT Signed Saturate SSAT and USAT on page 126
SSAT16 Signed Saturate Halfword SSAT16 and USAT16 on page 127
USAT Unsigned Saturate SSAT and USAT on page 126
USAT16 Unsigned Saturate Halfword SSAT16 and USAT16 on page 127
QADD Saturating Add QADD and QSUB on page 128
QSUB Saturating Subtract QADD and QSUB on page 128
QSUB16 Saturating Subtract 16 QADD and QSUB on page 128
QASX Saturating Add and Subtract with Exchange QASX and QSAX on page 129
QSAX Saturating Subtract and Add with Exchange QASX and QSAX on page 129
QDADD Saturating Double and Add QDADD and QDSUB on page 130
QDSUB Saturating Double and Subtract QDADD and QDSUB on page 130
UQADD16 Unsigned Saturating Add 16 UQADD and UQSUB on page 132
UQADD8 Unsigned Saturating Add 8 UQADD and UQSUB on page 132
UQASX Unsigned Saturating Add and Subtract with Exchange UQASX and UQSAX on page 131
UQSAX Unsigned Saturating Subtract and Add with Exchange UQASX and UQSAX on page 131
UQSUB16 Unsigned Saturating Subtract 16 UQADD and UQSUB on page 132
UQSUB8 Unsigned Saturating Subtract 8 UQADD and UQSUB on page 132