Some ARM and Thumb instructions perform saturating arithmetic.
The saturating instructions are:
Some of the parallel instructions are also saturating.
Saturation means that, for some value of 2n that depends on the instruction:
For a signed saturating operation, if the full result would be less than -2n, the result returned is -2n.
For an unsigned saturating operation, if the full result would be negative, the result returned is zero.
If the full result would be greater than 2n - 1, the result returned is 2n - 1.
When any of these occurs, it is called saturation. Some instructions set the Q flag when saturation occurs.
Saturating instructions do not clear the Q flag when saturation does not occur. To clear
the Q flag, use an
The Q flag can also be set by two other instructions, but these instructions do not saturate.