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

    <refmeta>
        <refentrytitle>vloada_halfn</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="vloada_halfn>">
        <refname>vloada_half<replaceable>n</replaceable></refname>

        <refpurpose>
            Read a half float vector from a pointer to memory.
        </refpurpose>
    </refnamediv>

        <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    float<replaceable>n</replaceable>
                    <function>
                        vloada_half<replaceable>n</replaceable>
                    </function>
                </funcdef>
<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>offset</parameter></paramdef>
<paramdef>const <link xlink:href="global.html">__global</link> half<parameter>*p</parameter></paramdef>
</funcprototype>
        </funcsynopsis>
                 <funcsynopsis>
            <funcprototype>
                <funcdef>
                    float<replaceable>n</replaceable>
                    <function>
                        vloada_half<replaceable>n</replaceable>
                    </function>
                </funcdef>
<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>offset</parameter></paramdef>
<paramdef>const <link xlink:href="local.html">__local</link> half<parameter>*p</parameter></paramdef>
</funcprototype>
        </funcsynopsis>
            <funcsynopsis>
            <funcprototype>
                <funcdef>
                    float<replaceable>n</replaceable>
                    <function>
                        vloada_half<replaceable>n</replaceable>
                    </function>
                </funcdef>
<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>offset</parameter></paramdef>
<paramdef>const <link xlink:href="constant.html">__constant</link> half<parameter>*p</parameter></paramdef>
</funcprototype>
        </funcsynopsis>
                 <funcsynopsis>
            <funcprototype>
                <funcdef>
                    float<replaceable>n</replaceable>
                    <function>
                        vloada_half<replaceable>n</replaceable>
                    </function>
                </funcdef>
<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>offset</parameter></paramdef>
<paramdef>const <link xlink:href="private.html">__private</link> half<parameter>*p</parameter></paramdef>

</funcprototype>
        </funcsynopsis>
        </refsynopsisdiv>

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

    <refsect1 id="description"><title>Description</title>
        <para>
                Return <constant>sizeof(<type>float<replaceable>n</replaceable></type>)</constant> bytes of data read from location (<emphasis>p</emphasis> + (<varname>offset</varname> * <varname>n</varname>)).
                </para>
        <para>
The <type>half<replaceable>n</replaceable></type> values are read from location (<varname>p</varname> + (<varname>offset</varname> * <varname>n</varname>)) and then converted to single precision floating point.
The read address computed as (<varname>p</varname> + (<varname>offset</varname> * <varname>n</varname>)) must be aligned to <constant>sizeof(<type>half</type>)</constant> * number of <type>half</type> elements being read (given by <varname>n</varname>) bytes.
                </para>
    </refsect1>

<!-- ================================ NOTES
    <refsect1 id="notes"><title>Notes</title>
                <para>

        </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="vectorDataLoadandStoreFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>


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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="vectorDataLoadandStoreFunctions"><refentrytitle>Vector Data Load and Store 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>

