Click an item in the table below for details about that function.

 |`x`| |`x`-`y`| without modulo overflow `x`+`y` and saturate result (`x`+`y`) >> 1. The intermediate sum does not modulo overflow (`x`+`y`+1) >> 1. The intermediate sum does not modulo overflow. `min`(`max`( `x`, `minval`), `maxval`) Number of leading 0-bits in `x` Number of trailing 0-bits in `x` `mul_hi`(`a`,`b`)+`c` (Fast integer function.) Multiply 24-bit integer then add the 32-bit result to 32-bit integer `a`*`b`+`c` and saturate the result The greater of `x` or `y` The lesser of `x` or `y` High half of the product of `x` and `y` (Fast integer function.) Multiply 24-bit integer values `a` and `b` result[`indx`]=`v`[`indx`]<< `i`[`indx`] `x` - `y` and saturate the result `result`[i] = ((gentype)`hi`[i] << 8|16|32) | `lo`[i] Returns the number of non-zero bits in `x`.

## Description

General information about built-in integer functions: Built-in integer functions take scalar or vector arguments. The vector versions of the integer functions operate component-wise. The description is per component.

We use the generic type name `gentype` to indicate that the function can take `char`, `char{2|3|4|8|16}`, `uchar`, `uchar{2|3|4|8|16}`, `short`, `short{2|3|4|8|16}`, `ushort`, `ushort{2|3|4|8|16}`, `int`, `int{2|3|4|8|16}`, `uint`, `uint{2|3|4|8|16}`, `long`, `long{2|3|4|8|16}`, `ulong`, or `ulong{2|3|4|8|16}` as the type for the arguments. We use the generic type name `ugentype` to refer to unsigned versions of `gentype`. For example, if `gentype` is `char4`, `ugentype` is `uchar4`.

We also use the generic type name `sgentype` to indicate that the function can take a scalar data type i.e. `char`, `uchar`, `short`, `ushort`, `int`, `uint`, `long`, or `ulong` as the type for the arguments. For built-in integer functions that take `gentype` and `sgentype` arguments, the `gentype` argument must be a vector or scalar version of the `sgentype` argument. For example, if `sgentype` is `uchar`, `gentype` must be `uchar` or `uchar{2|3|4|8|16}`. For vector versions, `sgentype` is implicitly widened to `gentype` as described in section 6.3.a of the OpenCL specification.

For any specific use of a function, the actual type has to be the same for all arguments and the return type unless otherwise specified.