Documents for saturating arithmetic was added.

This commit is contained in:
Vsevolod Livinskij
2014-03-05 01:30:16 +04:00
parent c2e05e2231
commit 2e2fd394bf

View File

@@ -3615,6 +3615,41 @@ normalized exponent as a power of two in the ``pw2`` parameter.
uniform int * uniform pw2) uniform int * uniform pw2)
Saturating Arithmetic
---------------------
A saturation addition, substraction, multiplication and division of all integer
types is provided by the ``ispc`` standard library.
::
int8 saturating_add(uniform int8 a, uniform int8 b)
int8 saturating_add(varying int8 a, varying int8 b)
unsigned int8 saturating_add(uniform unsigned int8 a, uniform unsigned int8 b)
unsigned int8 saturating_add(varying unsigned int8 a, varying unsigned int8 b)
int8 saturating_sub(uniform int8 a, uniform int8 b)
int8 saturating_sub(varying int8 a, varying int8 b)
unsigned int8 saturating_sub(uniform unsigned int8 a, uniform unsigned int8 b)
unsigned int8 saturating_sub(varying unsigned int8 a, varying unsigned int8 b)
int8 saturating_mul(uniform int8 a, uniform int8 b)
int8 saturating_mul(varying int8 a, varying int8 b)
unsigned int8 saturating_mul(uniform unsigned int8 a, uniform unsigned int8 b)
unsigned int8 saturating_mul(varying unsigned int8 a, varying unsigned int8 b)
int8 saturating_div(uniform int8 a, uniform int8 b)
int8 saturating_div(varying int8 a, varying int8 b)
unsigned int8 saturating_div(uniform unsigned int8 a, uniform unsigned int8 b)
unsigned int8 saturating_div(varying unsigned int8 a,varying unsigned int8 b)
In addition to the ``int8`` variants of saturating arithmetic functions listed
above, there are versions that supports ``int16``, ``int32`` and ``int64``
values as well. Functions that have best high-speed performance are functions
that support ``varying signed/unsined int8/int16`` on Intel® SSE and Intel® AVX,
because they have hardware implementation.
Pseudo-Random Numbers Pseudo-Random Numbers
--------------------- ---------------------