
        <para>
          General information about built-in integer functions:
          <!-- 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>

 <!-- 28-Oct-2015, C lang ver 2.0 rev 30 -->

