<<<    Index    >>>
8-10
PROGRAMMING WITH THE INTEL MMX™ TECHNOLOGY
8.2.1.Saturation Arithmetic and Wraparound Mode
The MMX™ technology supports a new arithmetic capability known as saturating arithmetic.
Saturation is best defined by contrasting it with wraparound mode.
In wraparound mode, results that overflow or underflow are truncated and only the lower (least
significant) bits of the result are returned; that is, the carry is ignored. 
In saturation mode, results of an operation that overflow or underflow are clipped (saturated) to
a data-range limit for the data type (refer to Table 8-1). The result of an operation that exceeds
the range of a data-type saturates to the maximum value of the range. A result that is less than
the range of a data type saturates to the minimum value of the range. This method of handling
overflow and underflow is useful in many applications, such as color calculations. 
For example, when the result exceeds the data range limit for signed bytes, it is saturated to 7FH
(FFH for unsigned bytes). If a value is less than the data range limit, it is saturated to 80H for
signed bytes (00H for unsigned bytes). 
Saturation provides a useful feature of avoiding wraparound artifacts. In the example of color
calculations, saturation causes a color to remain pure black or pure white without allowing for
and inversion.
MMX™ instructions do not indicate overflow or underflow occurrence by generating excep-
tions or setting flags.
Table 8-1.  Data Range Limits for Saturation
Data Type
Lower Limit
Upper Limit
HexadecimalDecimalHexadecimalDecimal
Signed Byte
    80H
    -128
    7FH
     127
Signed Word
8000H
-32,768
7FFFH
32,767
Unsigned Byte
    00H
          0
    FFH
     255
Unsigned Word
0000H
          0
FFFFH
65,535
<<<    Index    >>>