<?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>cl_khr_fp16</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>cl_khr_fp16</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2013</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>3</manvolnum>
    </refmeta>

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

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

        <refpurpose>
            Optional half floating-point support.
        </refpurpose>
    </refnamediv>

    <refsect2 id="synopsis">
        <title>
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>

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

    <refsect1 id="description"><title>Description</title>
        <para>
          This extension adds support for half scalar and vector types as built-in types that
          can be used for arithmetic operations, conversions, etc. An application that wants
          to use <type>half</type> and <type>half<replaceable>n</replaceable></type> types will
          need to include the directive shown above.
        </para>

        <para>
          The list of built-in scalar and vector data types are extended to include the types
          in the table below.
        </para>

        <para>
          The built-in vector data types for 
          <type>half<replaceable>n</replaceable></type> are also declared as
          appropriate types in the OpenCL API (and header files) that can be used by an
          application. The following table describes the built-in vector data types for
          <type>half<replaceable>n</replaceable></type> as defined in the OpenCL C programming
          language and the corresponding data type available to the application:
        </para>

        <para>
          <informaltable frame="all"> <tgroup cols="3" align="left" colsep="1" rowsep="1">
          <colspec colname="col1" colnum="1" /> <colspec colname="col2" colnum="2" /> <colspec
          colname="col3" colnum="3" />
          <thead> <row> <entry>Type in OpenCL Language</entry> <entry>Description</entry>
          <entry>API type for application</entry> </row> </thead>
          <tbody> <row> <entry>half2</entry> <entry>2-component half-precision floating-point
          vector</entry> <entry>cl_half2</entry> </row> <row> <entry>half3</entry>
          <entry>3-component half-precision floating-point vector</entry> <entry>cl_half3</entry>
          </row> <row> <entry>half4</entry> <entry>4-component half-precision floating-point
          vector</entry> <entry>cl_half4</entry> </row>
          <row> <entry>half8</entry> <entry>8-component half-precision floating-point
          vector</entry> <entry>cl_half8</entry> </row>
          <row> <entry>half16</entry> <entry>16-component half-precision floating-point
          vector</entry> <entry>cl_half16</entry> </row>
          </tbody> </tgroup> </informaltable>
        </para>

        <para>
          The relational, equality, logical and logical unary
          <citerefentry><refentrytitle>operators</refentrytitle></citerefentry> can be used
          with <type>half</type> scalar and <type>half<replaceable>n</replaceable></type>
          vector types and shall produce a scalar <type>int</type> and vector
          <type>short<replaceable>n</replaceable></type> result respectively.
        </para>

        <para>
          The OpenCL compiler accepts an <constant>h</constant> and <constant>H</constant> suffix
          on floating point literals, indicating the literal is typed as a <type>half</type>.
        </para>

        <para>
          The macro names given in the following list must use the values specified. These constant
          expressions are suitable for use in <constant>#if</constant> preprocessing directives.
        </para>

        <para>
          The following table also describes the corresponding macro names available to the
          application.
        </para>

        <informaltable frame="none">
            <tgroup cols="3" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <colspec colname="col2" colnum="2" />
                <colspec colname="col3" colnum="3" />

                <thead>
                    <row>
                        <entry>Macro in OpenCL Language</entry>
                        <entry>value</entry>
                        <entry>Macro for application</entry>
                    </row>
                </thead>

                <tbody>
                    <row>
                      <entry><code>#define HALF_DIG</code></entry>
                      <entry><code>3</code></entry>
                      <entry><constant>HALF_DIG</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_MANT_DIG</code></entry>
                      <entry><code>11</code></entry>
                      <entry><constant>HALF_MANT_DIG</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_MAX_10_EXP</code></entry>
                      <entry><code>+4</code></entry>
                      <entry><constant>HALF_MAX_10_EXP</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_MAX_EXP</code></entry>
                      <entry><code>+16</code></entry>
                      <entry><constant>HALF_MAX_EXP</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_MIN_10_EXP</code></entry>
                      <entry><code>-4</code></entry>
                      <entry><constant>HALF_MIN_10_EXP</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_MIN_EXP</code></entry>
                      <entry><code>-13</code></entry>
                      <entry><constant>HALF_MIN_EXP</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_RADIX</code></entry>
                      <entry><code>2</code></entry>
                      <entry><constant>HALF_RADIX</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_MAX</code></entry>
                      <entry><code>0x1.ffcp15h</code></entry>
                      <entry><constant>HALF_MAX</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_MIN</code></entry>
                      <entry><code>0x1.0p-14h</code></entry>
                      <entry><constant>HALF_MIN</constant></entry>
                    </row>

                    <row>
                      <entry><code>#define HALF_EPSILON</code></entry>
                      <entry><code>0x1.0p-10h</code></entry>
                      <entry><constant>HALF_EPSILON</constant></entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>

        <para>
          The following constants are also available. They are of type <type>half</type> and
          are accurate within the precision of the <type>half</type> type.
        </para>

        <informaltable frame="all">
            <tgroup cols="2" align="left" colsep="1" rowsep="1">
                <colspec colname="col1" colnum="1" />
                <colspec colname="col2" colnum="2" />

                <thead>
                    <row>
                        <entry>Constant</entry>
                        <entry>Description</entry>
                    </row>
                </thead>

                <tbody>
                    <row><entry><code>M_E_H</code></entry>       <entry>Value of e</entry></row>
                    <row><entry><code>M_LOG2E_H</code></entry>   <entry> Value of log2 e</entry></row>
                    <row><entry><code>M_LOG10E_H</code></entry>  <entry>Value of log10 e</entry></row>
                    <row><entry><code>M_LN2_H</code></entry>     <entry>Value of ln 2</entry></row>
                    <row><entry><code>M_LN10_H</code></entry>    <entry> Value of ln 10</entry></row>
                    <row><entry><code>M_PI_H</code></entry>      <entry> Value of π</entry></row>
                    <row><entry><code>M_PI_2_H</code></entry>    <entry>Value of π / 2</entry></row>
                    <row><entry><code>M_PI_4_H</code></entry>    <entry>Value of π / 4</entry></row>
                    <row><entry><code>M_1_PI_H</code></entry>    <entry>Value of 1 / π</entry></row>
                    <row><entry><code>M_2_PI_H</code></entry>    <entry>Value of 2 / π</entry></row>
                    <row><entry><code>M_2_SQRTPI_H</code></entry><entry>Value of 2 / √π</entry></row>
                    <row><entry><code>M_SQRT2_H</code></entry>   <entry>Value of √2</entry></row>
                    <row><entry><code>M_SQRT1_2_H</code></entry> <entry>Value of 1 / √2</entry></row>
                </tbody>
            </tgroup>
        </informaltable>

        <para>
          Ann application may query the configuration information using
          the op-code <constant>CL_DEVICE_HALF_FP_CONFIG</constant> with
          <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry> for an
          OpenCL device that supports half precision floating-point.
        </para>

        <bridgehead>Conversions</bridgehead>

        <para>
            The implicit conversion rules specified in section 6.2.1 
            now include the <type>half</type> scalar and 
            <type>half<replaceable>n</replaceable></type>
            vector data types.
        </para>

        <para>
            The explicit casts described in section 6.2.2 are 
            extended to take a <type>half</type> scalar data type and a 
            <type>half<replaceable>n</replaceable></type> vector data type.
        </para>

        <para>
            The explicit conversion functions described in section 
            6.2.3 are extended to take a <type>half</type> scalar 
            data type and a <type>half<replaceable>n</replaceable></type> 
            vector data type.
        </para>

        <para>
            The as_typen() 
            function for re-interpreting types as described in section 
            6.2.4.2 is extended to allow conversion-free casts between 
            <type>short<replaceable>n</replaceable></type>, 
            <type>ushort<replaceable>n</replaceable></type> and 
            <type>half<replaceable>n</replaceable></type> 
            scalar and vector data types.
        </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="cl_khr_fp16">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>EXTENSION</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>mathFunctions</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>commonFunctions</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>geometricFunctions</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>relationalFunctions</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>vectorDataLoadandStoreFunctions</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>asyncCopyFunctions</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>imageFunctions</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>

<!-- 20-Dec-2013, rev. 19 -->
</refentry>

