<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>restrictions</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="restrictions" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="restrictionsref"></a>
        <h1>Restrictions</h1>
        <p> </p>
      </div>
      <div class="refsect1">
        <a id="restrictions"></a>
        <h2></h2>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc">
              <p>The use of pointers is somewhat restricted. The following rules apply:</p>
              <div class="itemizedlist">
                <ul class="itemizedlist" style="list-style-type: opencircle; ">
                  <li class="listitem" style="list-style-type: circle">
                    <p>
                  Arguments to kernel
                  functions declared in a program that are pointers must be declared with the
                  <a class="citerefentry" href="global.html"><span class="citerefentry"><span class="refentrytitle">__global</span></span></a>,
                  <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">__constant</span></span></a>, or
                  <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">__local</span></span></a>
                  qualifier.
                </p>
                  </li>
                  <li class="listitem" style="list-style-type: circle">
                    <p>
                    A pointer declared with the
                    <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">__constant</span></span></a>
                    qualifier can only be assigned to a pointer declared with the __constant qualifier.
                </p>
                  </li>
                  <li class="listitem" style="list-style-type: circle">
                    <p>Pointers to functions are not allowed.</p>
                  </li>
                </ul>
              </div>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            An image type (
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image2d_t</span></span></a>,
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image3d_t</span></span></a>,
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image2d_array_t</span></span></a>,
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image1d_t</span></span></a>,
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image1d_buffer_t</span></span></a>, or
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image1d_array_t</span></span></a>)
            can only be used as the type of a function argument. An image function
            argument cannot be modified.  Elements of an image can only be accessed
            using the <a class="citerefentry" href="imageFunctions.html"><span class="citerefentry"><span class="refentrytitle">Built-in Image
            Functions</span></span></a>.
          </p>
              <p>
            An image type cannot be used to declare a variable, a structure or
            union field, an array of images, a pointer to an image, or the return
            type of a function. An image type cannot be used with the
            <a class="citerefentry" href="global.html"><span class="citerefentry"><span class="refentrytitle">__global</span></span></a>,
            <a class="citerefentry" href="private.html"><span class="citerefentry"><span class="refentrytitle">__private</span></span></a>,
            <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">__local</span></span></a> and
            <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">__constant</span></span></a>
            address space qualifiers.
          </p>
              <p>
            The sampler type
            (<a class="citerefentry" href="sampler_t.html"><span class="citerefentry"><span class="refentrytitle">sampler_t</span></span></a>) can only be
            used as the type of a function argument or a variable declared in the program scope
            or the outermost scope of a kernel function. The behavior of a sampler variable
            declared in a non-outermost scope of a kernel function is implementation-defined. A
            sampler argument or variable cannot be modified.
          </p>
              <p>
            The sampler type cannot be used to declare a structure or union field, an array of
            samplers, a pointer to a sampler, or the return type of a function. The sampler type
            cannot be used with the 
            <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">__local</span></span></a> and 
            <a class="citerefentry" href="global.html"><span class="citerefentry"><span class="refentrytitle">__global</span></span></a> 
            address space qualifiers.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>Bit-fields struct members are currently not supported.</p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>Variadic macros and functions with the exception of 
          <a class="citerefentry" href="printfFunction.html"><span class="citerefentry"><span class="refentrytitle">printf</span></span></a> and 
          <a class="citerefentry" href="enqueue_kernel.html"><span class="citerefentry"><span class="refentrytitle">enqueue_kernel</span></span></a> 
          are not supported.</p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            The library functions defined in the C99 standard headers <code class="code">assert.h</code>,
            <code class="code">ctype.h</code>, <code class="code">complex.h</code>, <code class="code">errno.h</code>,
            <code class="code">fenv.h</code>, <code class="code">float.h</code>, <code class="code">inttypes.h</code>,
            <code class="code">limits.h</code>, <code class="code">locale.h</code>, <code class="code">setjmp.h</code>,
            <code class="code">signal.h</code>, <code class="code">stdarg.h</code>, <code class="code">stdio.h</code>,
            <code class="code">stdlib.h</code>, <code class="code">string.h</code>, <code class="code">tgmath.h</code>,
            <code class="code">time.h</code>, <code class="code">wchar.h</code>, and <code class="code">wctype.h</code> are not
            available and cannot be included by a program.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
             The <code class="code">auto</code> and <code class="code">register</code> 
             storage-class specifiers are not supported.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>Recursion is not supported.</p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            The return type of a kernel function must be <span class="type">void</span>.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            Arguments to kernel functions in a program cannot be declared with the built-in
            scalar types <span class="type">bool</span>, <span class="type">half</span>, <span class="type">size_t</span>,
            <span class="type">ptrdiff_t</span>, <span class="type">intptr_t</span>, and <span class="type">uintptr_t</span>, or
            a struct and/or union that contain fields declared to be one of these built-in
            scalar types. The size in bytes of these types except <span class="type">half</span> are
            implementation-defined and in addition can also be different for the OpenCL device
            and the host processor making it difficult to allocate buffer objects to be passed
            as arguments to a kernel declared as pointer to these types. <span class="type">half</span> is
            not supported as <span class="type">half</span> can be used as a storage format only (unless the
            <a class="citerefentry" href="cl_khr_fp16.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_fp16</span></span></a> extension is
            supported) and is not a data type on which floating-point arithmetic can be performed.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>Whether or not irreducible control flow is illegal is implementation defined.</p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            The type qualifiers <code class="code">const</code>, <code class="code">restrict</code> 
            and <code class="code">volatile</code> as defined by the C99 
            specification are supported. These qualifiers cannot be used with 
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image2d_t</span></span></a>, 
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image3d_t</span></span></a>, 
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image2d_array_t</span></span></a>, 
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image2d_depth_t</span></span></a>,
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image2d_array_depth_t</span></span></a>, 
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image1d_t</span></span></a>, 
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image1d_buffer_t</span></span></a> and 
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">image1d_array_t</span></span></a> 
            types. Types other than pointer types shall not use the 
            <code class="code">restrict</code> qualifier.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            The event type 
            (<a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">event_t</span></span></a>) 
            cannot be used as the type of a kernel function argument. 
            The event type cannot be used to declare a program scope variable. The event type 
            cannot be used to declare a structure or union field. The event type cannot be used with the 
            <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">__local</span></span></a>, 
            <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">__constant</span></span></a> and 
            <a class="citerefentry" href="global.html"><span class="citerefentry"><span class="refentrytitle">__global</span></span></a> 
            address space qualifiers.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            The <span class="type">clk_event_t</span>, <span class="type">ndrange_t</span> and 
            <span class="type">reserve_id_t</span> types cannot be used as arguments to 
            kernel functions that get enqueued from the host. The 
            <span class="type">clk_event_t</span> and <span class="type">reserve_id_t</span> types 
            cannot be declared in program scope.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            The behavior of applying the <code class="code">sizeof</code> operator 
            to the <span class="type">queue_t</span>, <span class="type">clk_event_t</span>, 
            <span class="type">ndrange_t</span> and <span class="type">reserve_id_t</span> 
            types is implementation-defined.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            Kernels enqueued by the host must continue to have 
            their arguments that are a pointer to 
            a type declared to point to a named address space.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            A function in an OpenCL program cannot be called <code class="code">main</code>.
          </p>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <p>
            If the 
            <a class="citerefentry" href="cl_khr_initialize_memory.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_initialize_memory</span></span></a> 
            extension is enabled,
            if the context is created with 
            <code class="constant">CL CONTEXT MEMORY INITIALIZE KHR</code>, appropriate memory 
            locations as specified by the bit-field is 
            initialized with zeroes, prior to the start of execution of 
            any kernel. The driver chooses when, prior to 
            kernel execution, the initialization of local and/or
            private memory is performed. The only requirement 
            is there should be no values set from outside 
            the context, which can be read during a kernel execution.
          </p>
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p><img src="pdficon_small1.gif" />
            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.0-openclc.pdf#page=51" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="imageFunctions.html"><span class="citerefentry"><span class="refentrytitle">Image Functions</span></span></a>,
            <a class="citerefentry" href="functionQualifiers.html"><span class="citerefentry"><span class="refentrytitle">Function Qualifiers</span></span></a>,
            <a class="citerefentry" href="qualifiers.html"><span class="citerefentry"><span class="refentrytitle">Qualifiers</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2013 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.
</div>
    </div>
  </body>
</html>
