
        <para>
          <!-- OpenCL C spec. ver. 2.0, rev. 19, p. 81, section 6.13.3 --> Built-in integer functions take
          scalar or vector arguments. The vector versions of the integer functions operate
          component-wise. The description is per component.
        </para>

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

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

        <para>
          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.
        </para>

<!-- 24-Dec-2013, rev. 19 -->

