<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>                            
                bitselect
            </keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>                                    
        <refentrytitle>bitselect</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</year>
                <holder>The Khronos Group Inc. 
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>2</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="bitselect">             
        <refname>bitselect</refname>

        <refpurpose>
            Each bit of result is corresponding bit of <varname>a</varname> if corresponding bit of <varname>c</varname> is 0.
        </refpurpose>
    </refnamediv>

	<refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    gentype
                    <function>                   
                        bitselect
                    </function>
                </funcdef>
				<paramdef>gentype<parameter>a</parameter></paramdef>
				<paramdef>gentype<parameter>b</parameter></paramdef>
				<paramdef>gentype<parameter>c</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>     
	</refsynopsisdiv>	

	
<!-- Optional Double and Half prototypes -->
 <refsect2 id="double">
        <title></title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
<type>double<replaceable>n</replaceable></type> <function>bitselect</function> (<type>double<replaceable>n</replaceable></type> <varname>a</varname>, <type>double<replaceable>n</replaceable></type> <varname>b</varname>,
                   <type>double<replaceable>n</replaceable></type> <varname>c</varname>)      // if double extension enabled 
</entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
<type>half<replaceable>n</replaceable></type> <function>bitselect</function> (<type>half<replaceable>n</replaceable></type> <varname>a</varname>, <type>half<replaceable>n</replaceable></type> <varname>b</varname>,
                 <type>half<replaceable>n</replaceable></type> <varname>c</varname>)      // if half extension enabled 
</entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2> 			

<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>
		Each bit of result is corresponding bit of <varname>a</varname> if corresponding bit of <varname>c</varname> is 0. Otherwise it is the corresponding bit of <varname>b</varname>.
		</para>
		
    </refsect1>

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>
		<para>
The built-in relational functions can be used with built-in scalar or vector types as
arguments and return a scalar vector integer result. The argment type <type>gentype</type> can be <type>char</type>, <type>char<varname>n</varname></type>, <type>uchar</type>, <type>uchar<varname>n</varname></type>, <type>short</type>, <type>short<varname>n</varname></type>, <type>ushort</type>, <type>ushort<varname>n</varname></type>, <type>int</type>, <type>intn</type>, <type>uint</type>, <type>uint<varname>n</varname></type>, <type>long</type>, <type>long<varname>n</varname></type>, <type>ulong</type>, <type>ulong<varname>n</varname></type>, <type>float</type>, and <type>float<varname>n</varname></type>. 
        </para> 
		<para>
		If extended with <citerefentry><refentrytitle>cl_khr_fp64</refentrytitle></citerefentry>, generic type name <type>gentype</type> may indicate <type>double</type> and <type>double{2|4|8|16}</type> as arguments and return values. If extended with <citerefentry><refentrytitle>cl_khr_fp16</refentrytitle></citerefentry>, generic type name <type>gentype</type> may indicate <type>half</type> and <type>half{2|4|8|16}</type> as arguments and return values. 
		</para>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->


<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>
                                                 
            <olink uri="relationalFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>


<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="relationalFunctions"><refentrytitle>Relational Functions</refentrytitle></citerefentry> 
        </para>
    </refsect1>



<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
		<imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
		<para />
    </refsect3>

</refentry>

