2.6.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 -2n–1 ≤ x ≤ 2n–1-1.

The USAT instruction applies the specified shift, then saturates to the unsigned range 0 ≤ x ≤ 2n-1.

For signed n-bit saturation using SSAT, this means that:

  • if the value to be saturated is less than -2n-1, the result returned is -2n-1
  • if the value to be saturated is greater than 2n-1-1, the result returned is 2n-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 2n-1, the result returned is 2n-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 2.6.10.7 MSR.

To read the state of the Q flag, use the MRS instruction, see 2.6.10.6 MRS.