You copied the Doc URL to your clipboard.

__usat16 intrinsic

This intrinsic inserts a USAT16 instruction into the instruction stream generated by the compiler. It enables you to saturate two signed 16-bit values to a selected unsigned range. The Q flag is set if either operation saturates.

unsigned int __usat16(unsigned int val1, /* constant */ unsigned int val2)



holds the two 16-bit values that are to be saturated


specifies the bit position for saturation, and must be an integral constant expression.

The __usat16 intrinsic returns the saturation of the two signed 16-bit values, as non-negative values.


unsigned int saturate_halfwords(unsigned int val1, unsigned int val2)
  unsigned int res;

    res = __usax(val1,val2); /* Saturate halfwords in val1 to the unsigned 
                                range specified by the bit position in val2
                              */    return res;

See also