<?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" [
<!ENTITY vectorFunctionsInc SYSTEM "vectorFunctionsInc.xml">
<!ENTITY vectorHalfFunctionsInc SYSTEM "vectorHalfFunctionsInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>vloadn</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>vload<arg>n</arg></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="vloadn">
        <refname>vload<replaceable>n</replaceable></refname>

        <refpurpose>
            Read vectors from a pointer to memory.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    gentype<replaceable>n</replaceable>
                    <function>
                        vload<replaceable>n</replaceable>
                    </function>
                </funcdef>

                <paramdef>
                    <link xlink:href="scalarDataTypes.html">size_t</link>
                    <parameter>offset</parameter>
                </paramdef>

                <paramdef>const
                    gentype
                    <parameter>*p</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    gentype<replaceable>n</replaceable>
                    <function>
                        vload<replaceable>n</replaceable>
                    </function>
                </funcdef>

                <paramdef>
                    <link xlink:href="scalarDataTypes.html">size_t</link>
                    <parameter>offset</parameter>
                </paramdef>

                <paramdef>const
                    constant
                    gentype
                    <parameter>*p</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>

    </refsynopsisdiv>

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

    <refsect1 id="description"><title>Description</title>
       <para>
         Return sizeof (<type>gentype<replaceable>n</replaceable></type>) bytes of data read
         from address (<varname>p</varname> + (<varname>offset</varname> * <varname>n</varname>)).
       </para>

       <para>
         The read address computed as (<varname>p</varname> + (<varname>offset</varname> *
         <varname>n</varname>)) must be 8-bit aligned if <type>gentype</type> is <type>char</type>
         or <type>uchar</type>; 16-bit aligned if <type>gentype</type> is <type>short</type>,
         <type>ushort</type>, or <type>half</type>; 32-bit aligned if <type>gentype</type> is <type>int</type>,
         <type>uint</type>, or <type>float</type>; 64-bit aligned if <type>gentype</type>
         is <type>long</type> or <type>ulong</type>.
       </para>

       <para>
         If the <type>half</type> extension is enabled, the address computed as
         (<varname>p</varname> + (<varname>offset</varname> * <varname>n</varname>)) must be
         16-bit aligned.
       </para>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>

        <para>
          The generic type <type>gentype</type> is used to indicate the built-in data types
          <type>char</type>, <type>uchar</type>, <type>short</type>, <type>ushort</type>,
          <type>int</type>, <type>uint</type>, <type>long</type>, <type>ulong</type>,
          <type>float</type>, or <type>double</type>.
        </para>

        <para>
          The generic type name <type>gentype<replaceable>n</replaceable></type>
          represents <replaceable>n</replaceable>-element vectors of <type>gentype</type>
          elements. The suffix <replaceable>n</replaceable> is also used in the
          function names (i.e.  <function>vload<replaceable>n</replaceable></function>,
          <function>vstore<replaceable>n</replaceable></function>, etc.), where
          <replaceable>n</replaceable> = 2, 3, 4, 8, or 16.
        </para>

        &vectorFunctionsInc;

        &vectorHalfFunctionsInc;

      <para>
        <function>vload3</function> and <function>vload_half3</function> read <varname>x</varname>,
        <varname>y</varname>, <varname>z</varname> components from address (<varname>p</varname> +
        (<varname>offset</varname> * 3)) into a 3-component vector.
      </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>

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

