3.7.2. SSAT16 and USAT16

Signed Saturate and Unsigned Saturate to any bit position for two halfwords.

Syntax

op{cond} Rd, #n, Rm

Where:

op

Is one of:

SSAT16

Saturates a signed halfword value to a signed range.

USAT16

Saturates a signed halfword value to an unsigned range.

cond

Is an optional condition code. See Conditional execution.

Rd

Is the destination register.

n

Specifies the bit position to saturate to:

  • n ranges from 1 to 16 for SSAT.

  • n ranges from 0 to 15 for USAT.

Rm

Is the register containing the values to saturate.

Operation

The SSAT16 instruction:

  1. Saturates two signed 16-bit halfword values of the register with the value to saturate from selected by the bit position in n.

  2. Writes the results as two signed 16-bit halfwords to the destination register.

The USAT16 instruction:

  1. Saturates two unsigned 16-bit halfword values of the register with the value to saturate from selected by the bit position in n.

  2. Writes the results as two unsigned halfwords in the destination register.

Restrictions

Do not use SP and do not use PC.

Condition flags

These instructions do not affect the condition code flags.

If saturation occurs, these instructions set the Q flag to 1.

Examples

SSAT16    R7, #9, R2       ; Saturates the top and bottom highwords of R2  
                           ; as 9-bit values, writes to corresponding halfword
                           ; of R7.
USAT16NE  R0, #13, R5      ; Conditionally saturates the top and bottom 
                           ; halfwords of R5 as 13-bit values, writes to 
                           ; corresponding halfword of R0.
Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118