<!-- common stuff for global, local, constant, and private -->

    <para>
      OpenCL implements the following disjoint address spaces: <function>__global</function>,
      <function>__local</function>, <function>__constant</function>, and
      <function>__private</function> The address space qualifier may be used in variable
      declarations to specify the region of memory that is used to allocate the object. The
      C syntax for type qualifiers is extended in OpenCL to include an address space name as
      a valid type qualifier. If the type of an object is qualified by an address space name,
      the object is allocated in the specified address name; otherwise, the object is allocated
      in the generic address space.
    </para>

    <para>
      The address space names without the __prefix i.e. <function>global</function>,
      <function>local</function>, <function>constant</function> and <function>private</function>
      may be substituted for the corresponding address space names with the __prefix.
    </para>

    <para>
      The generic address space name for arguments to a function in a program, or local variables
      of a function is  <function>__private</function>. All function arguments shall be in the
      <function>__private</function> address space.
    </para>

    <para>
      <citerefentry
      href="functionQualifiers"><refentrytitle>__kernel</refentrytitle></citerefentry>
      function arguments declared to be a pointer of a type can point to one of the following
      address spaces only: <function>__global</function>, <function>__local</function> or
      <function>__constant</function>.  A pointer to address space A can only be assigned to
      a pointer to the same address space A. Casting a pointer to address space A to a pointer
      to address space B is illegal.
    </para>

    <para>
      Function arguments of type
      <type><citerefentry href="otherDataTypes"><refentrytitle>image2d_t</refentrytitle></citerefentry></type>,
      <type><citerefentry href="otherDataTypes"><refentrytitle>image3d_t</refentrytitle></citerefentry></type>,
      <type><citerefentry href="otherDataTypes"><refentrytitle>image2d_array_t</refentrytitle></citerefentry></type>,
      <type><citerefentry href="otherDataTypes"><refentrytitle>image1d_t</refentrytitle></citerefentry></type>,
      <type><citerefentry href="otherDataTypes"><refentrytitle>image1d_buffer_t</refentrytitle></citerefentry></type>, and
      <type><citerefentry href="otherDataTypes"><refentrytitle>image1d_array_t</refentrytitle></citerefentry></type>
      refer to image memory objects allocated in the <function>__global</function> address space.
    </para>

<!-- 14-Oct-2011 -->
