        <para>
            Built-in integer functions can be used to 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>.
        </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>