OpenCL 3.0 Specifications v3.0.5 (#88)

diff --git a/index.php b/index.php
index d20e570..6d5fc37 100644
--- a/index.php
+++ b/index.php
@@ -20,72 +20,35 @@
     </a> GitHub repository. </p>
 
 
-<h6> OpenCL 3.0 Provisional </h6>
+<h6> OpenCL 3.0 Unified Specifications </h6>
 
-<p> The latest provisional version of OpenCL is OpenCL 3.0. </p>
+<p> The latest version of OpenCL is OpenCL 3.0. </p>
 
-<p> The OpenCL 3.0 Provisional specifications have been ratified under the
-    Khronos Intellectual Property framework and are being made publicly
-    available to enable review and feedback from the community. </p>
-
-<p> To provide feedback, please file an issue on the
-    <a href="https://github.com/KhronosGroup/OpenCL-Docs/issues">
-    OpenCL-Docs </a> GitHub repository. </p>
+<p> The OpenCL specifications are now unified so they describe OpenCL 3.0
+    and all previous versions of OpenCL. </p>
 
 <ul>
 <li> OpenCL API Specification
      (<a href="specs/3.0-unified/html/OpenCL_API.html">HTML</a>)
      (<a href="specs/3.0-unified/pdf/OpenCL_API.pdf">PDF</a>)
-     (April 27, 2020). </li>
+     (September 30, 2020). </li>
+<li> OpenCL C Language Specification
+     (<a href="specs/3.0-unified/html/OpenCL_C.html">HTML</a>)
+     (<a href="specs/3.0-unified/pdf/OpenCL_C.pdf">PDF</a>)
+     (September 30, 2020). </li>
 <li> OpenCL Extension Specification
      (<a href="specs/3.0-unified/html/OpenCL_Ext.html">HTML</a>)
      (<a href="specs/3.0-unified/pdf/OpenCL_Ext.pdf">PDF</a>)
-     (April 27, 2020. </li>
+     (September 30, 2020. </li>
 <li> OpenCL SPIR-V Environment Specification
      (<a href="specs/3.0-unified/html/OpenCL_Env.html">HTML</a>)
      (<a href="specs/3.0-unified/pdf/OpenCL_Env.pdf">PDF</a>)
-     (April 27, 2020). </li>
-<li> OpenCL C 3.0 Language Specification
-     (<a href="specs/3.0-unified/html/OpenCL_C.html">HTML</a>)
-     (<a href="specs/3.0-unified/pdf/OpenCL_C.pdf">PDF</a>)
-     (April 27, 2020). </li>
+     (September 30, 2020). </li>
 <li> <a href="https://www.khronos.org/files/opencl30-reference-guide.pdf">
      OpenCL 3.0 Reference Guide.</a> </li>
 </ul>
 
 
-<h6> OpenCL 2.2 </h6>
-
-<p> The latest non-provisional version of OpenCL is OpenCL 2.2. </p>
-
-<ul>
-<li> OpenCL 2.2 API Specification
-     (<a href="specs/2.2/html/OpenCL_API.html">HTML</a>)
-     (<a href="specs/2.2/pdf/OpenCL_API.pdf">PDF</a>)
-     (July 19, 2019). </li>
-<li> OpenCL Extension Specification
-     (<a href="specs/2.2/html/OpenCL_Ext.html">HTML</a>)
-     (<a href="specs/2.2/pdf/OpenCL_Ext.pdf">PDF</a>)
-     (July 19, 2019). </li>
-<li> OpenCL SPIR-V Environment Specification
-     (<a href="specs/2.2/html/OpenCL_Env.html">HTML</a>)
-     (<a href="specs/2.2/pdf/OpenCL_Env.pdf">PDF</a>)
-     (July 19, 2019). </li>
-<li> OpenCL C Language Specification
-     (<a href="specs/2.2/html/OpenCL_C.html">HTML</a>)
-     (<a href="specs/2.2/pdf/OpenCL_C.pdf">PDF</a>)
-     (July 19, 2019). </li>
-<li> OpenCL C++ Language Specification
-     (<a href="specs/2.2/html/OpenCL_Cxx.html">HTML</a>)
-     (<a href="specs/2.2/pdf/OpenCL_Cxx.pdf">PDF</a>)
-     (July 19, 2019). </li>
-<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/2.2/docs/man/html/">
-     OpenCL 2.2 Reference Pages.</a> </li>
-<li> <a href="https://www.khronos.org/files/opencl22-reference-guide.pdf">
-     OpenCL 2.2 Reference Guide.</a> </li>
-</ul>
-
-
 <h6> Related Specifications and Resources </h6>
 
 <ul>
@@ -124,6 +87,36 @@
 
 <p> Older versions of OpenCL are provided for reference. </p>
 
+<p> OpenCL 2.2. </p>
+
+<ul>
+<li> OpenCL 2.2 API Specification
+     (<a href="specs/2.2/html/OpenCL_API.html">HTML</a>)
+     (<a href="specs/2.2/pdf/OpenCL_API.pdf">PDF</a>)
+     (July 19, 2019). </li>
+<li> OpenCL Extension Specification
+     (<a href="specs/2.2/html/OpenCL_Ext.html">HTML</a>)
+     (<a href="specs/2.2/pdf/OpenCL_Ext.pdf">PDF</a>)
+     (July 19, 2019). </li>
+<li> OpenCL SPIR-V Environment Specification
+     (<a href="specs/2.2/html/OpenCL_Env.html">HTML</a>)
+     (<a href="specs/2.2/pdf/OpenCL_Env.pdf">PDF</a>)
+     (July 19, 2019). </li>
+<li> OpenCL C Language Specification
+     (<a href="specs/2.2/html/OpenCL_C.html">HTML</a>)
+     (<a href="specs/2.2/pdf/OpenCL_C.pdf">PDF</a>)
+     (July 19, 2019). </li>
+<li> OpenCL C++ Language Specification
+     (<a href="specs/2.2/html/OpenCL_Cxx.html">HTML</a>)
+     (<a href="specs/2.2/pdf/OpenCL_Cxx.pdf">PDF</a>)
+     (July 19, 2019). </li>
+<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/2.2/docs/man/html/">
+     OpenCL 2.2 Reference Pages.</a> </li>
+<li> <a href="https://www.khronos.org/files/opencl22-reference-guide.pdf">
+     OpenCL 2.2 Reference Guide.</a> </li>
+</ul>
+
+
 <p> OpenCL 2.1 </p>
 
 <ul>
diff --git a/specs/3.0-unified/html/OpenCL_API.html b/specs/3.0-unified/html/OpenCL_API.html
index 93850d5..656d7eb 100644
--- a/specs/3.0-unified/html/OpenCL_API.html
+++ b/specs/3.0-unified/html/OpenCL_API.html
@@ -841,9 +841,9 @@
 <h1>The OpenCL<sup>&#8482;</sup> Specification</h1>
 <div class="details">
 <span id="author" class="author">Khronos<sup>&#174;</sup> OpenCL Working Group</span><br>
-<span id="revnumber">version v3.0.1-Provisional,</span>
-<span id="revdate">Mon, 27 Apr 2020 04:09:39 +0000</span>
-<br><span id="revremark">from git branch: master commit: fafc202e2b6a80bd2276596227317696d76e1f63</span>
+<span id="revnumber">version v3.0.5,</span>
+<span id="revdate">Wed, 30 Sep 2020 00:00:00 +0000</span>
+<br><span id="revremark">from git branch: master commit: 4d8a36725aa8af9658ab5cb62fdbf52adb44bcca</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Table of Contents</div>
@@ -1041,6 +1041,7 @@
 <li><a href="#_3d_image_writes">3D Image Writes</a></li>
 <li><a href="#_work_group_collective_functions">Work Group Collective Functions</a></li>
 <li><a href="#_generic_address_space">Generic Address Space</a></li>
+<li><a href="#_language_features_that_were_already_optional">Language Features that Were Already Optional</a></li>
 </ul>
 </li>
 <li><a href="#_acknowledgements">Acknowledgements</a></li>
@@ -1097,7 +1098,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="_introduction">1. Introduction</h2>
+<h2 id="_introduction"><a class="anchor" href="#_introduction"></a>1. Introduction</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Modern processor architectures have embraced parallelism as an important
@@ -1193,7 +1194,7 @@
 core specification in later revisions of the OpenCL specification.</p>
 </div>
 <div class="sect2">
-<h3 id="_normative_references">1.1. Normative References</h3>
+<h3 id="_normative_references"><a class="anchor" href="#_normative_references"></a>1.1. Normative References</h3>
 <div class="paragraph">
 <p>Normative references are references to external documents or resources to
 which implementers of OpenCL must comply with all, or specified portions of,
@@ -1207,7 +1208,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_version_numbers">1.2. Version Numbers</h3>
+<h3 id="_version_numbers"><a class="anchor" href="#_version_numbers"></a>1.2. Version Numbers</h3>
 <div class="paragraph">
 <p>The OpenCL version number follows a <em>major.minor-revision</em> scheme.  When this
 version number is used within the API it generally only includes the
@@ -1230,7 +1231,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="unified-spec">1.3. Unified Specification</h3>
+<h3 id="unified-spec"><a class="anchor" href="#unified-spec"></a>1.3. Unified Specification</h3>
 <div class="paragraph">
 <p>This document specifies all versions of the OpenCL API.</p>
 </div>
@@ -1256,29 +1257,11 @@
 </li>
 </ul>
 </div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>The OpenCL 3.0 features described in this specification are provisional.
-They have been Ratified under the Khronos Intellectual Property Framework, and are being made publicly available to enable review and feedback from the community.</p>
-</div>
-<div class="paragraph">
-<p>If you have feedback please create an issue on <a href="https://github.com/KhronosGroup/OpenCL-Docs/" class="bare">https://github.com/KhronosGroup/OpenCL-Docs/</a></p>
-</div>
-</td>
-</tr>
-</table>
-</div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_glossary">2. Glossary</h2>
+<h2 id="_glossary"><a class="anchor" href="#_glossary"></a>2. Glossary</h2>
 <div class="sectionbody">
 <div class="dlist">
 <dl>
@@ -2294,7 +2277,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="_the_opencl_architecture">3. The OpenCL Architecture</h2>
+<h2 id="_the_opencl_architecture"><a class="anchor" href="#_the_opencl_architecture"></a>3. The OpenCL Architecture</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p><strong>OpenCL</strong> is an open industry standard for programming a heterogeneous
@@ -2336,7 +2319,7 @@
 </ul>
 </div>
 <div class="sect2">
-<h3 id="_platform_model">3.1. Platform Model</h3>
+<h3 id="_platform_model"><a class="anchor" href="#_platform_model"></a>3.1. Platform Model</h3>
 <div class="paragraph">
 <p>The <a href="#platform-model-image">Platform model</a> for OpenCL is defined below.
 The model consists of a <strong>host</strong> connected to one or more <strong>OpenCL devices</strong>.
@@ -2432,7 +2415,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_execution_model">3.2. Execution Model</h3>
+<h3 id="_execution_model"><a class="anchor" href="#_execution_model"></a>3.2. Execution Model</h3>
 <div class="paragraph">
 <p>The OpenCL execution model is defined in terms of two distinct units of
 execution: <strong>kernels</strong> that execute on one or more OpenCL devices and a <strong>host
@@ -2534,7 +2517,7 @@
 <li>
 <p><strong>Complete</strong>: The command and its child commands have finished execution
 and the status of the event object, if any, associated with the command
-is set to <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+is set to <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </li>
 </ol>
 </div>
@@ -2551,14 +2534,14 @@
 </div>
 <div id="profiled-states-image" class="imageblock text-center">
 <div class="content">
-<img src="data:image/jpg;base64,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wqevIf7De4t/h/f3mtazc3d9cxyyu96+Axtnc7V6LyMcdiR3r16gDzTx34g074a/DRk8OCGJ7iRoLIRvvCuxLO4OT0+Y/XFc58Cfh+ltYL4x1WPzL67ybMScmND1k/3m559PrXmPjiG7tPCHg3Tr2Ga2CtfO0cqFSC1yecH2A/OvrPT7eG0021trcAQQwokYHQKAAP0oAs0UUUAFFFFABRRRQAx445BiRFcejDNVJdE0mf8A12mWUmf79up/mKvUU02gMl/C3h6TG/QdLbHTNnGf6Uz/AIRHw1/0L2lf+Acf+FbNFPml3FZGWvhrQVIK6Jpox0xapx+lW4tPsoP9TZ28f+5Eo/kKs0UrthZAAAMAYooopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArMu9D0+81/TtYnVjfWCSpbkPgASABsjvwK064XxAsp+L3g1lWQxC2vt5AO0fIuM0Ad1RRRQAUUUUAFYN34J8MX2qHUrrQrGW8LBmlaEZYjuexP1reooAzrvQdKvr+K+utPt5rqKJoUkdASEYYZfcHJ4PrVOx8F+GtNAFlolnBgOoKRgHDjawz6EcYrdooAzbrw/pF7pttp9zp8EtpalDBEy8RlBhdvpgVpUUUAeDfF7yfHvwz0/xhpltMq2NxIjrIBuEe4oxOD03Kv4GvQvhP4pj8U+AbCYybru0QWtyCeQ6gAH8Rg/iau+E/B66J4GHhrUnivI388S7VIV1kdmxz7NivC9Pur/4GfFCa0uvNl0G86sB/rISflcf7adCPr6igD6eoqG1uoL60hu7WVJreZA8ciHIZSMgipqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArLu9fsbLxBpuiTGT7ZqCSvBhcriMAtk9utalcxq3h67vvH/h3XYniFrp0NykysTuJkUBcDHtQB09FFFABRRRQAUUUUAFFFFABRRRQByfw21y/8R+CLXU9TlWW6kmnVmVAoIWVlHA9gKPiF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" alt="profiled states">
+<img src="data:image/png;base64,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" alt="profiled states">
 </div>
 <div class="title">Figure 2. The states and transitions between states defined in the OpenCL execution model. A subset of these transitions is exposed through the <a href="#profiling-operations">profiling interface</a>.</div>
 </div>
 <div class="paragraph">
 <p>Commands communicate their status through <em>Event objects</em>.
 Successful completion is indicated by setting the event status associated
-with a command to <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.
+with a command to <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.
 Unsuccessful completion results in abnormal termination of the command which
 is indicated by setting the event status to a negative value.
 In this case, the command-queue associated with the abnormally terminated
@@ -2714,7 +2697,7 @@
 The details of this mapping are described in the following section.</p>
 </div>
 <div class="sect3">
-<h4 id="_mapping_work_items_onto_an_ndrange">3.2.1. Mapping work-items onto an NDRange</h4>
+<h4 id="_mapping_work_items_onto_an_ndrange"><a class="anchor" href="#_mapping_work_items_onto_an_ndrange"></a>3.2.1. Mapping work-items onto an NDRange</h4>
 <div class="paragraph">
 <p>The index space supported by OpenCL is called an NDRange.
 An NDRange is an N-dimensional index space, where N is one, two or three.
@@ -2805,36 +2788,33 @@
 work-group (S<sub>x</sub>,S<sub>y</sub>) and the local ID (s<sub>x</sub>, s<sub>y</sub>) inside the work-group
 such that</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>(g<sub>x</sub> , g<sub>y</sub>) = (w<sub>x</sub> S<sub>x</sub> + s<sub>x</sub> + F<sub>x</sub>, w<sub>y</sub> S<sub>y</sub> + s<sub>y</sub> + F<sub>y</sub>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>The number of work-groups can be computed as:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>(W<sub>x</sub>, W<sub>y</sub>) = (ceil(G<sub>x</sub> / S<sub>x</sub>), ceil(G<sub>y</sub> / S<sub>y</sub>))</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>Given a global ID and the work-group size, the work-group ID for a work-item
 is computed as:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>(w<sub>x</sub>, w<sub>y</sub>) = ( (g<sub>x</sub> s<sub>x</sub> F<sub>x</sub>) / S<sub>x</sub>, (g<sub>y</sub> s<sub>y</sub> F<sub>y</sub>) / S<sub>y</sub> )</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div id="index-space-image" class="imageblock text-center">
 <div class="content">
@@ -2883,7 +2863,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_execution_of_kernel_instances">3.2.2. Execution of kernel-instances</h4>
+<h4 id="_execution_of_kernel_instances"><a class="anchor" href="#_execution_of_kernel_instances"></a>3.2.2. Execution of kernel-instances</h4>
 <div class="paragraph">
 <p>The work carried out by an OpenCL program occurs through the execution of
 kernel-instances on compute devices.
@@ -2922,7 +2902,7 @@
 </li>
 <li>
 <p>Each of the events in an optional event list defined when the
-kernel-instance was enqueued are set to <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+kernel-instance was enqueued are set to <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </li>
 </ul>
 </div>
@@ -2939,7 +2919,7 @@
 the kernel-instance end their execution, updates to global memory associated
 with a command are visible globally, and the device signals successful
 completion by setting the event associated with the kernel-enqueue command
-to <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+to <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>While a command-queue is associated with only one device, a single device
@@ -3013,7 +2993,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="device-side-enqueue">3.2.3. Device-side enqueue</h4>
+<h4 id="device-side-enqueue"><a class="anchor" href="#device-side-enqueue"></a>3.2.3. Device-side enqueue</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -3051,16 +3031,16 @@
 enforce order constraints just as for the command-queue on the host.
 These events, however, are only visible to the parent kernel running on the
 device.
-When these prerequisite events take on the value <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>, the
+When these prerequisite events take on the value <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>, the
 work-groups associated with the child kernel are launched into the devices
 work pool.
 The device then schedules them for execution on the compute units of the
 device.
 Child and parent kernels execute asynchronously.
 However, a parent will not indicate that it is complete by setting its event
-to <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> until all child kernels have ended execution and have
+to <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> until all child kernels have ended execution and have
 signaled completion by setting any associated events to the value
-<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.
 Should any child kernel complete with an event status set to a negative
 value (i.e. abnormally terminate), the parent kernel will abnormally
 terminate and propagate the childs negative event value as the value of the
@@ -3071,7 +3051,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="execution-model-sync">3.2.4. Synchronization</h4>
+<h4 id="execution-model-sync"><a class="anchor" href="#execution-model-sync"></a>3.2.4. Synchronization</h4>
 <div class="paragraph">
 <p>Synchronization refers to mechanisms that constrain the order of execution
 between two or more units of execution.
@@ -3146,7 +3126,7 @@
 <ul>
 <li>
 <p><strong>Launching a command:</strong> A kernel-instance is launched onto a device after
-all events that kernel is waiting-on have been set to <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+all events that kernel is waiting-on have been set to <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </li>
 <li>
 <p><strong>Ending a command:</strong> Child kernels may be enqueued such that they wait
@@ -3161,7 +3141,7 @@
 completed.
 This is signaled to the host, a parent kernel or other kernels within
 command queues by setting the value of the event associated with a
-kernel to <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+kernel to <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </li>
 <li>
 <p><strong>Blocking Commands:</strong> A blocking command defines a synchronization point
@@ -3208,7 +3188,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_categories_of_kernels">3.2.5. Categories of Kernels</h4>
+<h4 id="_categories_of_kernels"><a class="anchor" href="#_categories_of_kernels"></a>3.2.5. Categories of Kernels</h4>
 <div class="paragraph">
 <p>The OpenCL execution model supports three types of kernels:</p>
 </div>
@@ -3252,7 +3232,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_memory_model">3.3. Memory Model</h3>
+<h3 id="_memory_model"><a class="anchor" href="#_memory_model"></a>3.3. Memory Model</h3>
 <div class="paragraph">
 <p>The OpenCL memory model describes the structure, contents, and behavior of
 the memory exposed by an OpenCL platform as an OpenCL program runs.
@@ -3303,7 +3283,7 @@
 </ul>
 </div>
 <div class="sect3">
-<h4 id="_fundamental_memory_regions">3.3.1. Fundamental Memory Regions</h4>
+<h4 id="_fundamental_memory_regions"><a class="anchor" href="#_fundamental_memory_regions"></a>3.3.1. Fundamental Memory Regions</h4>
 <div class="paragraph">
 <p>Memory in OpenCL is divided into two parts.</p>
 </div>
@@ -3448,7 +3428,7 @@
 </div>
 <div id="memory-regions-image" class="imageblock text-center">
 <div class="content">
-<img src="data:image/jpg;base64,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" alt="memory regions">
+<img src="data:image/png;base64,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" alt="memory regions">
 </div>
 <div class="title">Figure 4. The named address spaces exposed in an OpenCL Platform. Global and Constant memories are shared between the one or more devices within a context, while local and private memories are associated with a single device. Each device may include an optional cache to support efficient access to their view of the global and constant address spaces.</div>
 </div>
@@ -3462,7 +3442,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_memory_objects">3.3.2. Memory Objects</h4>
+<h4 id="_memory_objects"><a class="anchor" href="#_memory_objects"></a>3.3.2. Memory Objects</h4>
 <div class="paragraph">
 <p>The contents of global memory are <em>memory objects</em>.
 A memory object is a handle to a reference counted region of global memory.
@@ -3513,7 +3493,7 @@
 <p>Memory objects are allocated by host APIs.
 The host program can provide the runtime with a pointer to a block of
 continuous memory to hold the memory object when the object is created
-(<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>).
+(<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>).
 Alternatively, the physical memory can be managed by the OpenCL runtime and
 not be directly accessible to the host program.</p>
 </div>
@@ -3659,7 +3639,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="shared-virtual-memory">3.3.3. Shared Virtual Memory</h4>
+<h4 id="shared-virtual-memory"><a class="anchor" href="#shared-virtual-memory"></a>3.3.3. Shared Virtual Memory</h4>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -3769,7 +3749,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_memory_consistency_model_for_opencl_1_x">3.3.4. Memory Consistency Model for OpenCL 1.x</h4>
+<h4 id="_memory_consistency_model_for_opencl_1_x"><a class="anchor" href="#_memory_consistency_model_for_opencl_1_x"></a>3.3.4. Memory Consistency Model for OpenCL 1.x</h4>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -3802,7 +3782,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="memory-consistency-model">3.3.5. Memory Consistency Model for OpenCL 2.x</h4>
+<h4 id="memory-consistency-model"><a class="anchor" href="#memory-consistency-model"></a>3.3.5. Memory Consistency Model for OpenCL 2.x</h4>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -3942,23 +3922,10 @@
 <ul>
 <li>
 <p><strong>memory_scope_work_item</strong>: memory-ordering constraints only apply within
-the work-item<sup>1</sup>.</p>
-<div class="openblock">
-<div class="content">
-<div class="dlist">
-<dl>
-<dt class="hdlist1">1</dt>
-<dd>
-<p>This value for memory_scope can only be used with atomic_work_item_fence
-with flags set to CLK_IMAGE_MEM_FENCE.</p>
-</dd>
-</dl>
-</div>
-</div>
-</div>
+the work-item <sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnotedef_1" title="View footnote.">1</a>]</sup>.</p>
 </li>
 <li>
-<p><strong>memory_scope_sub_group</strong>:memory-ordering constraints only apply within
+<p><strong>memory_scope_sub_group</strong>: memory-ordering constraints only apply within
 the sub-group.</p>
 </li>
 <li>
@@ -3974,7 +3941,7 @@
 work-items executing across multiple devices and (when using SVM) the
 host.
 A release performed with <strong>memory_scope_all_svm_devices</strong> to a buffer that
-does not have the <a href="#CL_MEM_SVM_ATOMICS"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;ATOMICS</code></a> flag set will commit to at least
+does not have the <a href="#CL_MEM_SVM_ATOMICS"><code>CL_MEM_<wbr>SVM_<wbr>ATOMICS</code></a> flag set will commit to at least
 <strong>memory_scope_device</strong> visibility, with full synchronization of the
 buffer at a queue synchronization point (e.g. an OpenCL event).</p>
 </li>
@@ -4039,7 +4006,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_overview_of_atomic_and_fence_operations">3.3.6. Overview of atomic and fence operations</h4>
+<h4 id="_overview_of_atomic_and_fence_operations"><a class="anchor" href="#_overview_of_atomic_and_fence_operations"></a>3.3.6. Overview of atomic and fence operations</h4>
 <div class="paragraph">
 <p>OpenCL 2.x has a number of <em>synchronization operations</em> that are used to define
 memory order constraints in a program.
@@ -4164,7 +4131,7 @@
 <p><strong>P</strong> is <strong>memory_scope_device</strong> and <strong>A</strong> and <strong>B</strong> are executed by work-items
 on the same device when <strong>A</strong> and <strong>B</strong> apply to an SVM allocation or <strong>A</strong>
 and <strong>B</strong> are executed by work-items in the same kernel or one of its
-children when <strong>A</strong> and <strong>B</strong> apply to a cl_mem buffer.</p>
+children when <strong>A</strong> and <strong>B</strong> apply to a <code>cl_mem</code> buffer.</p>
 </li>
 <li>
 <p><strong>P</strong> is <strong>memory_scope_all_svm_devices</strong> if <strong>A</strong> and <strong>B</strong> are executed by
@@ -4175,7 +4142,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="memory-ordering-rules">3.3.7. Memory Ordering Rules</h4>
+<h4 id="memory-ordering-rules"><a class="anchor" href="#memory-ordering-rules"></a>3.3.7. Memory Ordering Rules</h4>
 <div class="paragraph">
 <p>Fundamentally, the issue in a memory model is to understand the orderings in
 time of modifications to objects in memory.
@@ -4425,7 +4392,7 @@
 This requirement is known as write-read coherence.</p>
 </div>
 <div class="sect4">
-<h5 id="_atomic_operations">Atomic Operations</h5>
+<h5 id="_atomic_operations"><a class="anchor" href="#_atomic_operations"></a>3.3.7.1. Atomic Operations</h5>
 <div class="paragraph">
 <p>This and following sections describe how different program actions in kernel
 C code and the host program contribute to the local- and
@@ -4491,7 +4458,7 @@
 operations that is consistent with the modification orders for all affected
 locations, as well as the appropriate global-happens-before and
 local-happens-before orders for those locations, such that each
-<strong>memory_order_seq</strong> operation <strong>B</strong> that loads a value from an atomic object
+<strong>memory_order_seq_cst</strong> operation <strong>B</strong> that loads a value from an atomic object
 <strong>M</strong> in global or local memory observes one of the following values:</p>
 </div>
 <div class="ulist">
@@ -4635,7 +4602,7 @@
 </li>
 <li>
 <p>The optional OpenCL 2.x SVM atomic-controlled visibility specified by
-provision of the <a href="#CL_MEM_SVM_ATOMICS"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;ATOMICS</code></a> flag must be supported by the device
+provision of the <a href="#CL_MEM_SVM_ATOMICS"><code>CL_MEM_<wbr>SVM_<wbr>ATOMICS</code></a> flag must be supported by the device
 and the flag provided to the SVM buffer on allocation.</p>
 </li>
 <li>
@@ -4653,7 +4620,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="memory-ordering-fence">Fence Operations</h5>
+<h5 id="memory-ordering-fence"><a class="anchor" href="#memory-ordering-fence"></a>3.3.7.2. Fence Operations</h5>
 <div class="paragraph">
 <p>This section describes how the OpenCL 2.x fence operations contribute to the
 local- and global-happens-before relations.</p>
@@ -4699,10 +4666,8 @@
 atomic object <strong>M</strong>, such that <strong>A</strong> is sequenced-before <strong>X</strong>, <strong>X</strong> modifies <strong>M</strong>,
 <strong>Y</strong> is sequenced-before <strong>B</strong>, and <strong>Y</strong> reads the value written by <strong>X</strong> or a
 value written by any side effect in the hypothetical release sequence <strong>X</strong>
-would head if it were a</p>
-</div>
-<div class="paragraph">
-<p>release operation, and the scopes of <strong>A</strong> and <strong>B</strong> are inclusive.
+would head if it were a release operation, and the scopes of <strong>A</strong> and <strong>B</strong> are
+inclusive.
 <a href="#iso-c11">[C11 standard, Section 7.17.4, paragraph 2, modified.]</a></p>
 </div>
 <div class="paragraph">
@@ -4732,7 +4697,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="_work_group_functions">Work-group Functions</h5>
+<h5 id="_work_group_functions"><a class="anchor" href="#_work_group_functions"></a>3.3.7.3. Work-group Functions</h5>
 <div class="paragraph">
 <p>The OpenCL kernel execution model includes collective operations across the
 work-items within a single work-group.
@@ -4803,7 +4768,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="_sub_group_functions">Sub-group Functions</h5>
+<h5 id="_sub_group_functions"><a class="anchor" href="#_sub_group_functions"></a>3.3.7.4. Sub-group Functions</h5>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -4886,7 +4851,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="_host_side_and_device_side_commands">Host-side and Device-side Commands</h5>
+<h5 id="_host_side_and_device_side_commands"><a class="anchor" href="#_host_side_and_device_side_commands"></a>3.3.7.5. Host-side and Device-side Commands</h5>
 <div class="paragraph">
 <p>This section describes how the OpenCL API functions associated with
 command-queues contribute to happens-before relations.
@@ -5010,7 +4975,7 @@
 <li>
 <p>If <strong>C</strong> is a command that waits for an event <strong>E</strong>'s completion, and API
 function call <strong>X</strong> sets the status of a user event <strong>E</strong>'s status to
-<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> (for example, from a host thread using a
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> (for example, from a host thread using a
 <a href="#clSetUserEventStatus"><strong>clSetUserEventStatus</strong></a> function), then <strong>X</strong> global-synchronizes-with <strong>C</strong>.</p>
 </li>
 <li>
@@ -5038,14 +5003,14 @@
 <div class="ulist">
 <ul>
 <li>
-<p>access to shared locations or disjoint locations in a single cl_mem
+<p>access to shared locations or disjoint locations in a single <code>cl_mem</code>
 object when using atomic operations from different kernel instances
 enqueued from the host such that one or more of the atomic operations is
 a write is implementation-defined and correct behavior is not guaranteed
 except at synchronization points.</p>
 </li>
 <li>
-<p>access to shared locations or disjoint locations in a single cl_mem
+<p>access to shared locations or disjoint locations in a single <code>cl_mem</code>
 object when using atomic operations from different kernel instances
 consisting of a parent kernel and any number of child kernels enqueued
 by that kernel is guaranteed under the memory ordering rules described
@@ -5106,7 +5071,7 @@
 may be overwritten by the map operation.</p>
 </div>
 <div class="paragraph">
-<p>Access to non-SVM cl_mem buffers and coarse-grained SVM allocations is
+<p>Access to non-SVM <code>cl_mem</code> buffers and coarse-grained SVM allocations is
 ordered at synchronization points between host commands.
 In the presence of an out-of-order command queue or a set of command queues
 mapped to the same device, multiple kernel instances may execute
@@ -5116,7 +5081,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="opencl-framework">3.4. The OpenCL Framework</h3>
+<h3 id="opencl-framework"><a class="anchor" href="#opencl-framework"></a>3.4. The OpenCL Framework</h3>
 <div class="paragraph">
 <p>The OpenCL framework allows applications to use a host and one or more
 OpenCL devices as a single heterogeneous parallel computer system.
@@ -5144,7 +5109,7 @@
 </ul>
 </div>
 <div class="sect3">
-<h4 id="_mixed_version_support">3.4.1. Mixed Version Support</h4>
+<h4 id="_mixed_version_support"><a class="anchor" href="#_mixed_version_support"></a>3.4.1. Mixed Version Support</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -5190,7 +5155,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_backwards_compatibility">3.4.2. Backwards Compatibility</h4>
+<h4 id="_backwards_compatibility"><a class="anchor" href="#_backwards_compatibility"></a>3.4.2. Backwards Compatibility</h4>
 <div class="paragraph">
 <p>Backwards compatibility is an important goal for the OpenCL standard.
 Backwards compatibility is expected such that a device will consume earlier
@@ -5236,9 +5201,22 @@
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>In order to allow future versions of OpenCL to support new types of
+devices, minor releases of OpenCL may add new profiles where some
+features that are currently required for all OpenCL devices become
+optional.
+All features that are required for an OpenCL profile will also be
+required for that profile in subsequent minor releases of OpenCL,
+thereby guaranteeing backwards compatibility for applications
+targeting specific profiles.
+It is therefore strongly recommended that applications
+<a href="#CL_DEVICE_PROFILE">query the profile</a> supported by the OpenCL device
+they are running on in order to remain robust to future changes.</p>
+</div>
 </div>
 <div class="sect3">
-<h4 id="_versioning">3.4.3. Versioning</h4>
+<h4 id="_versioning"><a class="anchor" href="#_versioning"></a>3.4.3. Versioning</h4>
 <div class="paragraph">
 <p>The OpenCL specification is regularly updated with bug fixes and clarifications.
 Occasionally new functionality is added to the core and extensions. In order to
@@ -5248,7 +5226,7 @@
 are also versioned.</p>
 </div>
 <div class="sect4">
-<h5 id="_versions">Versions</h5>
+<h5 id="_versions"><a class="anchor" href="#_versions"></a>3.4.3.1. Versions</h5>
 <div class="paragraph">
 <p>A version number comprises three logical fields:</p>
 </div>
@@ -5260,7 +5238,7 @@
 </li>
 <li>
 <p>The <em>minor</em> version indicates the addition of new functionality with backwards
-compatibility.</p>
+compatibility for any existing profiles.</p>
 </li>
 <li>
 <p>The <em>patch</em> version indicates bug fixes, clarifications and general improvements.</p>
@@ -5314,34 +5292,34 @@
 <span class="preprocessor">#define</span> CL_VERSION_PATCH_MASK ((<span class="integer">1</span> &lt;&lt; CL_VERSION_PATCH_BITS) - <span class="integer">1</span>)
 
 <span class="preprocessor">#define</span> CL_VERSION_MAJOR(version) \
-        ((version) &gt;&gt; (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS))
+  ((version) &gt;&gt; (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS))
 
 <span class="preprocessor">#define</span> CL_VERSION_MINOR(version) \
-        (((version) &gt;&gt; CL_VERSION_PATCH_BITS) &amp; CL_VERSION_MINOR_MASK)
+  (((version) &gt;&gt; CL_VERSION_PATCH_BITS) &amp; CL_VERSION_MINOR_MASK)
 
 <span class="preprocessor">#define</span> CL_VERSION_PATCH(version) ((version) &amp; CL_VERSION_PATCH_MASK)
 
 <span class="preprocessor">#define</span> CL_MAKE_VERSION(major, minor, patch) \
-    ((((major) &amp; CL_VERSION_MAJOR_MASK) &lt;&lt; (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS)) | \
-     (((minor) &amp; CL_VERSION_MINOR_MASK) &lt;&lt; CL_VERSION_PATCH_BITS) | \
-     ((patch) &amp; CL_VERSION_PATCH_MASK))</code></pre>
+  ((((major)&amp; CL_VERSION_MAJOR_MASK) &lt;&lt; \
+        (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS)) | \
+   (((minor)&amp; CL_VERSION_MINOR_MASK) &lt;&lt; \
+         CL_VERSION_PATCH_BITS) | \
+    ((patch) &amp; CL_VERSION_PATCH_MASK))</code></pre>
 </div>
 </div>
 </div>
 <div class="sect4">
-<h5 id="_version_name_pairing">Version name pairing</h5>
+<h5 id="_version_name_pairing"><a class="anchor" href="#_version_name_pairing"></a>3.4.3.2. Version name pairing</h5>
 <div class="paragraph">
 <p>It is sometimes necessary to associate a version to an entity it applies to
 (e.g. extension or built-in kernel). This is done using a dedicated
-<code>cl_name_version</code> structure, defined as follows:</p>
+<a href="#cl_name_version"><code>cl_name_<wbr>version</code></a> structure, defined as follows:</p>
 </div>
-<div class="listingblock">
+<div id="cl_name_version" class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="preprocessor">#define</span> CL_NAME_VERSION_MAX_NAME_SIZE <span class="integer">64</span>
-
-<span class="keyword">typedef</span> <span class="keyword">struct</span> _cl_name_version {
-    cl_version version;
-    <span class="predefined-type">char</span> name[CL_NAME_VERSION_MAX_NAME_SIZE];
+<pre class="CodeRay highlight"><code data-lang="c++"><span class="keyword">typedef</span> <span class="keyword">struct</span> cl_name_version {
+    cl_version    version;
+    <span class="predefined-type">char</span>          name[CL_NAME_VERSION_MAX_NAME_SIZE];
 } cl_name_version;</code></pre>
 </div>
 </div>
@@ -5356,7 +5334,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="opencl-platform-layer">4. The OpenCL Platform Layer</h2>
+<h2 id="opencl-platform-layer"><a class="anchor" href="#opencl-platform-layer"></a>4. The OpenCL Platform Layer</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the OpenCL platform layer which implements
@@ -5365,7 +5343,7 @@
 more devices.</p>
 </div>
 <div class="sect2">
-<h3 id="_querying_platform_info">4.1. Querying Platform Info</h3>
+<h3 id="_querying_platform_info"><a class="anchor" href="#_querying_platform_info"></a>4.1. Querying Platform Info</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -5382,13 +5360,13 @@
 <div class="ulist">
 <ul>
 <li>
-<p><em>num_entries</em> is the number of cl_platform_id entries that can be added to
+<p><em>num_entries</em> is the number of <code>cl_platform_<wbr>id</code> entries that can be added to
 <em>platforms</em>.
 If <em>platforms</em> is not <code>NULL</code>, the <em>num_entries</em> must be greater than zero.</p>
 </li>
 <li>
 <p><em>platforms</em> returns a list of OpenCL platforms found.
-The cl_platform_id values returned in <em>platforms</em> can be used to identify a
+The <code>cl_platform_<wbr>id</code> values returned in <em>platforms</em> can be used to identify a
 specific OpenCL platform.
 If <em>platforms</em> is <code>NULL</code>, this argument is ignored.
 The number of OpenCL platforms returned is the minimum of the value
@@ -5401,18 +5379,18 @@
 </ul>
 </div>
 <div class="paragraph">
-<p><a href="#clGetPlatformIDs"><strong>clGetPlatformIDs</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetPlatformIDs"><strong>clGetPlatformIDs</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_entries</em> is equal to zero and <em>platforms</em> is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_entries</em> is equal to zero and <em>platforms</em> is
 not <code>NULL</code> or if both <em>num_platforms</em> and <em>platforms</em> are <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -5480,15 +5458,15 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_platform_info</strong></th>
+<th class="tableblock halign-left valign-top">Platform Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_PROFILE"></a><a href="#CL_PLATFORM_PROFILE"><code>CL_&#8203;PLATFORM_&#8203;PROFILE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]<sup>1</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_PROFILE"></a><a href="#CL_PLATFORM_PROFILE"><code>CL_PLATFORM_<wbr>PROFILE</code></a> <sup class="footnote">[<a id="_footnoteref_2" class="footnote" href="#_footnotedef_2" title="View footnote.">2</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[] <sup class="footnote">[<a id="_footnoteref_3" class="footnote" href="#_footnotedef_3" title="View footnote.">3</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL profile string.
         Returns the profile name supported by the implementation.
         The profile name returned can be one of the following strings:</p>
@@ -5503,8 +5481,8 @@
         <a href="#opencl-embedded-profile">OpenCL Embedded Profile</a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_VERSION"></a><a href="#CL_PLATFORM_VERSION"><code>CL_&#8203;PLATFORM_&#8203;VERSION</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_VERSION"></a><a href="#CL_PLATFORM_VERSION"><code>CL_PLATFORM_<wbr>VERSION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL version string.
         Returns the OpenCL version supported by the implementation.
         This version string has the following format:</p>
@@ -5514,26 +5492,26 @@
         1.1, 1.2, 2.0, 2.1, 2.2 or 3.0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_NUMERIC_VERSION"></a><a href="#CL_PLATFORM_NUMERIC_VERSION"><code>CL_&#8203;PLATFORM_&#8203;NUMERIC_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_NUMERIC_VERSION"></a><a href="#CL_PLATFORM_NUMERIC_VERSION"><code>CL_PLATFORM_<wbr>NUMERIC_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_version</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_version</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the detailed (major, minor, patch) version supported by the
         platform. The major and minor version numbers returned must match
-        those returned via <a href="#CL_PLATFORM_VERSION"><code>CL_&#8203;PLATFORM_&#8203;VERSION</code></a>.</p></td>
+        those returned via <a href="#CL_PLATFORM_VERSION"><code>CL_PLATFORM_<wbr>VERSION</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_NAME"></a><a href="#CL_PLATFORM_NAME"><code>CL_&#8203;PLATFORM_&#8203;NAME</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_NAME"></a><a href="#CL_PLATFORM_NAME"><code>CL_PLATFORM_<wbr>NAME</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Platform name string.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_VENDOR"></a><a href="#CL_PLATFORM_VENDOR"><code>CL_&#8203;PLATFORM_&#8203;VENDOR</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_VENDOR"></a><a href="#CL_PLATFORM_VENDOR"><code>CL_PLATFORM_<wbr>VENDOR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Platform vendor string.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_EXTENSIONS"></a><a href="#CL_PLATFORM_EXTENSIONS"><code>CL_&#8203;PLATFORM_&#8203;EXTENSIONS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_EXTENSIONS"></a><a href="#CL_PLATFORM_EXTENSIONS"><code>CL_PLATFORM_<wbr>EXTENSIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns a space separated list of extension names (the extension
         names themselves do not contain any spaces) supported by the
         platform.
@@ -5541,60 +5519,47 @@
         platform must be reported here.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_EXTENSIONS_WITH_VERSION"></a><a href="#CL_PLATFORM_EXTENSIONS_WITH_VERSION"><code>CL_&#8203;PLATFORM_&#8203;EXTENSIONS_&#8203;WITH_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_EXTENSIONS_WITH_VERSION"></a><a href="#CL_PLATFORM_EXTENSIONS_WITH_VERSION"><code>CL_PLATFORM_<wbr>EXTENSIONS_<wbr>WITH_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_name_version[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_name_version"><code>cl_name_<wbr>version</code></a>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of description (name and version) structures that lists
         all the extensions supported by the platform. The same extension name
         must not be reported more than once. The list of extensions reported
-        must match the list reported via <a href="#CL_PLATFORM_EXTENSIONS"><code>CL_&#8203;PLATFORM_&#8203;EXTENSIONS</code></a>.</p></td>
+        must match the list reported via <a href="#CL_PLATFORM_EXTENSIONS"><code>CL_PLATFORM_<wbr>EXTENSIONS</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_HOST_TIMER_RESOLUTION"></a><a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_&#8203;PLATFORM_&#8203;HOST_&#8203;TIMER_&#8203;RESOLUTION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PLATFORM_HOST_TIMER_RESOLUTION"></a><a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_PLATFORM_<wbr>HOST_<wbr>TIMER_<wbr>RESOLUTION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the resolution of the host timer in nanoseconds as used by
         <a href="#clGetDeviceAndHostTimer"><strong>clGetDeviceAndHostTimer</strong></a>.</p>
-<p class="tableblock">        Support for Device and Host Timer Synchronization is required for
+<p class="tableblock">        Support for device and host timer synchronization is required for
         platforms supporting OpenCL 2.1 or 2.2.
-        This value must be 0 for devices that do not support Device and
-        Host Timer Synchronization.</p></td>
+        This value must be 0 for devices that do not support device and
+        host timer synchronization.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clGetPlatformInfo"><strong>clGetPlatformInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetPlatformInfo"><strong>clGetPlatformInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
-Otherwise, it returns one of the following errors<sup>2</sup>.</p>
+Otherwise, it returns one of the following
+errors <sup class="footnote">[<a id="_footnoteref_4" class="footnote" href="#_footnotedef_4" title="View footnote.">4</a>]</sup>.</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PLATFORM"><code>CL_&#8203;INVALID_&#8203;PLATFORM</code></a> if <em>platform</em> is not a valid platform.</p>
+<p><a href="#CL_INVALID_PLATFORM"><code>CL_INVALID_<wbr>PLATFORM</code></a> if <em>platform</em> is not a valid platform.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not one of the supported values or
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not one of the supported values or
 if size in bytes specified by <em>param_value_size</em> is &lt; size of return
 type as specified in the <a href="#platform-queries-table">OpenCL Platform
 Queries</a> table, and <em>param_value</em> is not a <code>NULL</code> value.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">1</dt>
-<dd>
-<p>A null terminated string is returned by OpenCL query function calls if
-the return type of the information being queried is a char[].</p>
-</dd>
-<dt class="hdlist1">2</dt>
-<dd>
-<p>The OpenCL specification does not describe the order of precedence for
-error codes returned by API calls.</p>
-</dd>
-</dl>
-</div>
 </li>
 </ul>
 </div>
@@ -5602,12 +5567,12 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="platform-querying-devices">4.2. Querying Devices</h3>
+<h3 id="platform-querying-devices"><a class="anchor" href="#platform-querying-devices"></a>4.2. Querying Devices</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>The list of devices available on a platform can be obtained using the
-function<sup>3</sup>:</p>
+function <sup class="footnote">[<a id="_footnoteref_5" class="footnote" href="#_footnotedef_5" title="View footnote.">5</a>]</sup>:</p>
 </div>
 <div id="clGetDeviceIDs" class="listingblock">
 <div class="content">
@@ -5631,16 +5596,16 @@
 The <em>device_type</em> can be used to query specific OpenCL devices or all OpenCL
 devices available.
 The valid values for <em>device_type</em> are specified in the
-<a href="#device-categories-table">Device Categories</a> table.</p>
+<a href="#device-types-table">Device Types</a> table.</p>
 </li>
 <li>
-<p><em>num_entries</em> is the number of cl_device_id entries that can be added to
+<p><em>num_entries</em> is the number of <code>cl_device_<wbr>id</code> entries that can be added to
 <em>devices</em>.
 If <em>devices</em> is not <code>NULL</code>, the <em>num_entries</em> must be greater than zero.</p>
 </li>
 <li>
 <p><em>devices</em> returns a list of OpenCL devices found.
-The cl_device_id values returned in <em>devices</em> can be used to identify a
+The <code>cl_device_<wbr>id</code> values returned in <em>devices</em> can be used to identify a
 specific OpenCL device.
 If <em>devices</em> is <code>NULL</code>, this argument is ignored.
 The number of OpenCL devices returned is the minimum of the value specified
@@ -5651,19 +5616,10 @@
 <p><em>num_devices</em> returns the number of OpenCL devices available that match
 <em>device_type</em>.
 If <em>num_devices</em> is <code>NULL</code>, this argument is ignored.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">3</dt>
-<dd>
-<p><a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a> may return all or a subset of the actual physical
-devices present in the platform and that match <em>device_type</em>.</p>
-</dd>
-</dl>
-</div>
 </li>
 </ul>
 </div>
-<table id="device-categories-table" class="tableblock frame-all grid-all stretch">
+<table id="device-types-table" class="tableblock frame-all grid-all stretch">
 <caption class="title">Table 4. List of supported device_types by <a href="#clGetDeviceIDs">clGetDeviceIDs</a></caption>
 <colgroup>
 <col style="width: 50%;">
@@ -5671,74 +5627,90 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_device_type</strong></th>
+<th class="tableblock halign-left valign-top">Device Type</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_CPU"></a><a href="#CL_DEVICE_TYPE_CPU"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CPU</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">An OpenCL device that is the host processor.
-    The host processor runs the OpenCL implementations and is a single or
-    multi-core CPU.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_CPU"></a><a href="#CL_DEVICE_TYPE_CPU"><code>CL_DEVICE_<wbr>TYPE_<wbr>CPU</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">An OpenCL device similar to a traditional CPU (Central Processing Unit).
+    The host processor that executes OpenCL host code may also be considered
+    a CPU OpenCL device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_GPU"></a><a href="#CL_DEVICE_TYPE_GPU"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;GPU</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">An OpenCL device that is a GPU.
-    By this we mean that the device can also be used to accelerate a 3D API
-    such as OpenGL or DirectX.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_GPU"></a><a href="#CL_DEVICE_TYPE_GPU"><code>CL_DEVICE_<wbr>TYPE_<wbr>GPU</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">An OpenCL device similar to a GPU (Graphics Processing Unit).
+    Many systems include a dedicated processor for graphics or rendering
+    that may be considered a GPU OpenCL device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_ACCELERATOR"></a><a href="#CL_DEVICE_TYPE_ACCELERATOR"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;ACCELERATOR</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Dedicated OpenCL accelerators (for example the IBM CELL Blade).
-    These devices communicate with the host processor using a peripheral
-    interconnect such as PCIe.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_ACCELERATOR"></a><a href="#CL_DEVICE_TYPE_ACCELERATOR"><code>CL_DEVICE_<wbr>TYPE_<wbr>ACCELERATOR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Dedicated devices that may accelerate OpenCL programs, such as FPGAs
+    (Field Programmable Gate Arrays), DSPs (Digital Signal Processors), or
+    AI (Artificial Intelligence) processors.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_CUSTOM"></a><a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_CUSTOM"></a><a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Dedicated accelerators that do not support programs written in an OpenCL
-    kernel language,</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Specialized devices that implement some of the OpenCL runtime APIs but
+    do not support all required OpenCL functionality.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_DEFAULT"></a><a href="#CL_DEVICE_TYPE_DEFAULT"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;DEFAULT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The default OpenCL device in the system.
-    The default device cannot be a <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a> device.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_DEFAULT"></a><a href="#CL_DEVICE_TYPE_DEFAULT"><code>CL_DEVICE_<wbr>TYPE_<wbr>DEFAULT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The default OpenCL device in the platform.
+    The default OpenCL device must not be a <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a> device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_ALL"></a><a href="#CL_DEVICE_TYPE_ALL"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;ALL</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">All OpenCL devices available in the system except
-    <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a> devices..</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE_ALL"></a><a href="#CL_DEVICE_TYPE_ALL"><code>CL_DEVICE_<wbr>TYPE_<wbr>ALL</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">All OpenCL devices available in the platform, except for
+    <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a> devices.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p>The device type is purely informational and has no semantic meaning.</p>
+</div>
+<div class="paragraph">
+<p>Some devices may be more than one type.
+For example, a <a href="#CL_DEVICE_TYPE_CPU"><code>CL_DEVICE_<wbr>TYPE_<wbr>CPU</code></a> device may also be a
+<a href="#CL_DEVICE_TYPE_GPU"><code>CL_DEVICE_<wbr>TYPE_<wbr>GPU</code></a> device, or a <a href="#CL_DEVICE_TYPE_ACCELERATOR"><code>CL_DEVICE_<wbr>TYPE_<wbr>ACCELERATOR</code></a> device
+may also be some other, more descriptive device type.
+<a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a> devices must not be combined with any other
+device types.</p>
+</div>
+<div class="paragraph">
+<p>One device in the platform should be a <a href="#CL_DEVICE_TYPE_DEFAULT"><code>CL_DEVICE_<wbr>TYPE_<wbr>DEFAULT</code></a> device.
+The default device should also be a more specific device type, such
+as <a href="#CL_DEVICE_TYPE_CPU"><code>CL_DEVICE_<wbr>TYPE_<wbr>CPU</code></a> or <a href="#CL_DEVICE_TYPE_GPU"><code>CL_DEVICE_<wbr>TYPE_<wbr>GPU</code></a>.</p>
+</div>
+<div class="paragraph">
+<p><a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PLATFORM"><code>CL_&#8203;INVALID_&#8203;PLATFORM</code></a> if <em>platform</em> is not a valid platform.</p>
+<p><a href="#CL_INVALID_PLATFORM"><code>CL_INVALID_<wbr>PLATFORM</code></a> if <em>platform</em> is not a valid platform.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE_TYPE"><code>CL_&#8203;INVALID_&#8203;DEVICE_&#8203;TYPE</code></a> if <em>device_type</em> is not a valid value.</p>
+<p><a href="#CL_INVALID_DEVICE_TYPE"><code>CL_INVALID_<wbr>DEVICE_<wbr>TYPE</code></a> if <em>device_type</em> is not a valid value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_entries</em> is equal to zero and <em>devices</em> is not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_entries</em> is equal to zero and <em>devices</em> is not
 <code>NULL</code> or if both <em>num_devices</em> and <em>devices</em> are <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_NOT_FOUND"><code>CL_&#8203;DEVICE_&#8203;NOT_&#8203;FOUND</code></a> if no OpenCL devices that matched <em>device_type</em> were
+<p><a href="#CL_DEVICE_NOT_FOUND"><code>CL_DEVICE_<wbr>NOT_<wbr>FOUND</code></a> if no OpenCL devices that matched <em>device_type</em> were
 found.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -5809,19 +5781,19 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_DEVICE_GLOBAL_MEM_CACHE_SIZE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;MEM_&#8203;CACHE_&#8203;SIZE</code></a></p>
+<p><a href="#CL_DEVICE_GLOBAL_MEM_CACHE_SIZE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>MEM_<wbr>CACHE_<wbr>SIZE</code></a></p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_BUILT_IN_KERNELS"><code>CL_&#8203;DEVICE_&#8203;BUILT_&#8203;IN_&#8203;KERNELS</code></a></p>
+<p><a href="#CL_DEVICE_BUILT_IN_KERNELS"><code>CL_DEVICE_<wbr>BUILT_<wbr>IN_<wbr>KERNELS</code></a></p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_PARENT_DEVICE"><code>CL_&#8203;DEVICE_&#8203;PARENT_&#8203;DEVICE</code></a></p>
+<p><a href="#CL_DEVICE_PARENT_DEVICE"><code>CL_DEVICE_<wbr>PARENT_<wbr>DEVICE</code></a></p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_PARTITION_TYPE"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;TYPE</code></a></p>
+<p><a href="#CL_DEVICE_PARTITION_TYPE"><code>CL_DEVICE_<wbr>PARTITION_<wbr>TYPE</code></a></p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_REFERENCE_COUNT"><code>CL_&#8203;DEVICE_&#8203;REFERENCE_&#8203;COUNT</code></a></p>
+<p><a href="#CL_DEVICE_REFERENCE_COUNT"><code>CL_DEVICE_<wbr>REFERENCE_<wbr>COUNT</code></a></p>
 </li>
 </ul>
 </div>
@@ -5834,111 +5806,109 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_device_info</strong></th>
+<th class="tableblock halign-left valign-top">Device Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE"></a><a href="#CL_DEVICE_TYPE"><code>CL_&#8203;DEVICE_&#8203;TYPE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_type</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL device type.
-        Currently supported values are:</p>
-<p class="tableblock">        <a href="#CL_DEVICE_TYPE_CPU"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CPU</code></a>, <a href="#CL_DEVICE_TYPE_GPU"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;GPU</code></a>, <a href="#CL_DEVICE_TYPE_ACCELERATOR"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;ACCELERATOR</code></a>,
-        <a href="#CL_DEVICE_TYPE_DEFAULT"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;DEFAULT</code></a>, a combination of the above types, or
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_TYPE"></a><a href="#CL_DEVICE_TYPE"><code>CL_DEVICE_<wbr>TYPE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>type</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The type or types of the OpenCL device.</p>
+<p class="tableblock">        Please see the <a href="#device-types-table">Device Types</a> table
+        for supported device types and device type combinations.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_VENDOR_ID"></a><a href="#CL_DEVICE_VENDOR_ID"><code>CL_&#8203;DEVICE_&#8203;VENDOR_&#8203;ID</code></a><sup>4</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_VENDOR_ID"></a><a href="#CL_DEVICE_VENDOR_ID"><code>CL_DEVICE_<wbr>VENDOR_<wbr>ID</code></a> <sup class="footnote">[<a id="_footnoteref_6" class="footnote" href="#_footnotedef_6" title="View footnote.">6</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A unique device vendor identifier.</p>
 <p class="tableblock">        If the vendor has a PCI vendor ID, the low 16 bits must contain that PCI
         vendor ID, and the remaining bits must be set to zero. Otherwise, the
         value returned must be a valid Khronos vendor ID represented by type
-        <code>cl_khronos_vendor_id</code>. Khronos vendor IDs are allocated starting at
+        <code>cl_khronos_<wbr>vendor_<wbr>id</code>. Khronos vendor IDs are allocated starting at
         0x10000, to distinguish them from the PCI vendor ID namespace.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_COMPUTE_UNITS"></a><a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;COMPUTE_&#8203;UNITS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_COMPUTE_UNITS"></a><a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_DEVICE_<wbr>MAX_<wbr>COMPUTE_<wbr>UNITS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The number of parallel compute units on the OpenCL device.
         A work-group executes on a single compute unit.
         The minimum value is 1.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"></a><a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;DIMENSIONS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"></a><a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>DIMENSIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum dimensions that specify the global and local work-item IDs
         used by the data parallel execution model. (Refer to
         <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>).
         The minimum value is 3 for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WORK_ITEM_SIZES"></a><a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;SIZES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t []</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WORK_ITEM_SIZES"></a><a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>SIZES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of work-items that can be specified in each dimension
         of the work-group to <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>.</p>
-<p class="tableblock">        Returns <em>n</em> size_t entries, where <em>n</em> is the value returned by the
-        query for <a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;DIMENSIONS</code></a>.</p>
+<p class="tableblock">        Returns <em>n</em> <code>size_t</code> entries, where <em>n</em> is the value returned by the
+        query for <a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>DIMENSIONS</code></a>.</p>
 <p class="tableblock">        The minimum value is (1, 1, 1) for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WORK_GROUP_SIZE"></a><a href="#CL_DEVICE_MAX_WORK_GROUP_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WORK_GROUP_SIZE"></a><a href="#CL_DEVICE_MAX_WORK_GROUP_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of work-items in a work-group that a device is
         capable of executing on a single compute unit, for any given
         kernel-instance running on the device. (Refer also to
-        <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> and <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_&#8203;KERNEL_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> ).
+        <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> and <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_KERNEL_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> ).
         The minimum value is 1.
         The returned value is an upper limit and will not necessarily
         maximize performance.
         This maximum may be larger than supported by a specific kernel
-        (refer to the <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_&#8203;KERNEL_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> query of <a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a>).</p></td>
+        (refer to the <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_KERNEL_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> query of <a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a>).</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;CHAR</code></a>  <br>
-  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;SHORT</code></a> <br>
-  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;INT</code></a>   <br>
-  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;LONG</code></a>  <br>
-  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;FLOAT</code></a> <br>
-  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;DOUBLE</code></a><br>
-  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;HALF</code></a></p>
-<p class="tableblock">  <a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;HALF</code></a> is <a href="#unified-spec">missing before</a>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>CHAR</code></a>  <br>
+  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>SHORT</code></a> <br>
+  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>INT</code></a>   <br>
+  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>LONG</code></a>  <br>
+  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>FLOAT</code></a> <br>
+  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>DOUBLE</code></a><br>
+  <a id="CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"></a><a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>HALF</code></a></p>
+<p class="tableblock">  <a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>HALF</code></a> is <a href="#unified-spec">missing before</a>
   version 1.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Preferred native vector width size for built-in scalar types that
         can be put into vectors.
         The vector width is defined as the number of scalar elements that
         can be stored in the vector.</p>
 <p class="tableblock">        If double precision is not supported,
-        <a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;DOUBLE</code></a> must return 0.</p>
+        <a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>DOUBLE</code></a> must return 0.</p>
 <p class="tableblock">        If the <strong>cl_khr_fp16</strong> extension is not supported,
-        <a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;VECTOR_&#8203;WIDTH_&#8203;HALF</code></a> must return 0.</p></td>
+        <a href="#CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>VECTOR_<wbr>WIDTH_<wbr>HALF</code></a> must return 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;CHAR</code></a>  <br>
-  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;SHORT</code></a> <br>
-  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_INT"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_INT"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;INT</code></a>   <br>
-  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;LONG</code></a>  <br>
-  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;FLOAT</code></a> <br>
-  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;DOUBLE</code></a><br>
-  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;HALF</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>CHAR</code></a>  <br>
+  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>SHORT</code></a> <br>
+  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_INT"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_INT"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>INT</code></a>   <br>
+  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>LONG</code></a>  <br>
+  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>FLOAT</code></a> <br>
+  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>DOUBLE</code></a><br>
+  <a id="CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"></a><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>HALF</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the native ISA vector width.
         The vector width is defined as the number of scalar elements that
         can be stored in the vector.</p>
 <p class="tableblock">        If double precision is not supported,
-        <a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;DOUBLE</code></a> must return 0.</p>
+        <a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>DOUBLE</code></a> must return 0.</p>
 <p class="tableblock">        If the <strong>cl_khr_fp16</strong> extension is not supported,
-        <a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;HALF</code></a> must return 0.</p></td>
+        <a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>HALF</code></a> must return 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_CLOCK_FREQUENCY"></a><a href="#CL_DEVICE_MAX_CLOCK_FREQUENCY"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CLOCK_&#8203;FREQUENCY</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_CLOCK_FREQUENCY"></a><a href="#CL_DEVICE_MAX_CLOCK_FREQUENCY"><code>CL_DEVICE_<wbr>MAX_<wbr>CLOCK_<wbr>FREQUENCY</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Clock frequency of the device in MHz.
         The meaning of this value is implementation-defined.
         For devices with multiple clock domains, the clock frequency for any
@@ -5950,323 +5920,324 @@
         Note: This definition is <a href="#unified-spec">deprecated by</a> version 2.2.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ADDRESS_BITS"></a><a href="#CL_DEVICE_ADDRESS_BITS"><code>CL_&#8203;DEVICE_&#8203;ADDRESS_&#8203;BITS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ADDRESS_BITS"></a><a href="#CL_DEVICE_ADDRESS_BITS"><code>CL_DEVICE_<wbr>ADDRESS_<wbr>BITS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The default compute device address space size of the global address
         space specified as an unsigned integer value in bits.
         Currently supported values are 32 or 64 bits.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_MEM_ALLOC_SIZE"></a><a href="#CL_DEVICE_MAX_MEM_ALLOC_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;MEM_&#8203;ALLOC_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_MEM_ALLOC_SIZE"></a><a href="#CL_DEVICE_MAX_MEM_ALLOC_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>MEM_<wbr>ALLOC_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max size of memory object allocation in bytes.
         The minimum value is max(min(1024 × 1024 × 1024, 1/4<sup>th</sup>
-        of <a href="#CL_DEVICE_GLOBAL_MEM_SIZE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;MEM_&#8203;SIZE</code></a>), 32 × 1024 × 1024) for
-        devices that are not of type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        of <a href="#CL_DEVICE_GLOBAL_MEM_SIZE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>MEM_<wbr>SIZE</code></a>), 32 × 1024 × 1024) for
+        devices that are not of type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_SUPPORT"></a><a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if images are supported by the OpenCL device and <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_SUPPORT"></a><a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if images are supported by the OpenCL device and <a href="#CL_FALSE"><code>CL_FALSE</code></a>
         otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_READ_IMAGE_ARGS"></a><a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;IMAGE_&#8203;ARGS</code></a><sup>5</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_READ_IMAGE_ARGS"></a><a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>IMAGE_<wbr>ARGS</code></a> <sup class="footnote">[<a id="_footnoteref_7" class="footnote" href="#_footnotedef_7" title="View footnote.">7</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the
         read_only qualifier.
-        The minimum value is 128 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the
+        The minimum value is 128 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the
         value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WRITE_IMAGE_ARGS"></a><a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_WRITE_IMAGE_ARGS"></a><a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the
         write_only qualifier.
-        The minimum value is 64 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the
+        The minimum value is 64 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the
         value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"></a><a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a><sup>6</sup></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"></a><a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the
         write_only or read_write qualifier.</p>
-<p class="tableblock">        Support for Read-Write Image arguments is required for an OpenCL 2.0, 2.1,
-        or 2.2 device if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>.</p>
-<p class="tableblock">        The minimum value is 64 if the device supports Read-Write Images arguments,
-        and must be 0 for devices that do not support Read-Write Images.</p></td>
+<p class="tableblock">        Support for read-write image arguments is required for an OpenCL 2.0, 2.1,
+        or 2.2 device if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>.</p>
+<p class="tableblock">        The minimum value is 64 if the device supports read-write images arguments,
+        and must be 0 for devices that do not support read-write images.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IL_VERSION"></a><a href="#CL_DEVICE_IL_VERSION"><code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IL_VERSION"></a><a href="#CL_DEVICE_IL_VERSION"><code>CL_DEVICE_<wbr>IL_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.
 Also see extension <strong>cl_khr_il_program</strong>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The intermediate languages that can be supported by
         <a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a> for this device.
         Returns a space-separated list of IL version strings of the form
         &lt;IL_Prefix&gt;_&lt;Major_Version&gt;.&lt;Minor_Version&gt;.</p>
 <p class="tableblock">        For an OpenCL 2.1 or 2.2 device, SPIR-V is a required IL prefix.</p>
-<p class="tableblock">        If the device does not support Intermediate Language Programs, the
+<p class="tableblock">        If the device does not support intermediate language programs, the
         value must be <code>""</code> (an empty string).</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ILS_WITH_VERSION"></a><a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;ILS_&#8203;WITH_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ILS_WITH_VERSION"></a><a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_DEVICE_<wbr>ILS_<wbr>WITH_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.
 Also see extension <strong>cl_khr_il_program</strong>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_name_version[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_name_version"><code>cl_name_<wbr>version</code></a>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of descriptions (name and version) for all supported
-        Intermediate Languages. Intermediate Languages with the same name may be
+        intermediate languages. Intermediate languages with the same name may be
         reported more than once but each name and major/minor version
         combination may only be reported once. The list of intermediate
         languages reported must match the list reported via
-        <a href="#CL_DEVICE_IL_VERSION"><code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION</code></a>.</p>
+        <a href="#CL_DEVICE_IL_VERSION"><code>CL_DEVICE_<wbr>IL_<wbr>VERSION</code></a>.</p>
 <p class="tableblock">        For an OpenCL 2.1 or 2.2 device, at least one version of SPIR-V must
         be reported.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE2D_MAX_WIDTH"></a><a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;WIDTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE2D_MAX_WIDTH"></a><a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>WIDTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max width of 2D image or 1D image not created from a buffer object
         in pixels.</p>
-<p class="tableblock">        The minimum value is 16384 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 16384 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE2D_MAX_HEIGHT"></a><a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;HEIGHT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE2D_MAX_HEIGHT"></a><a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>HEIGHT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max height of 2D image in pixels.</p>
-<p class="tableblock">        The minimum value is 16384 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 16384 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE3D_MAX_WIDTH"></a><a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE3D_MAX_WIDTH"></a><a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max width of 3D image in pixels.</p>
-<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE3D_MAX_HEIGHT"></a><a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE3D_MAX_HEIGHT"></a><a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max height of 3D image in pixels.</p>
-<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE3D_MAX_DEPTH"></a><a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE3D_MAX_DEPTH"></a><a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max depth of 3D image in pixels.</p>
-<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"></a><a href="#CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;MAX_&#8203;BUFFER_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"></a><a href="#CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"><code>CL_DEVICE_<wbr>IMAGE_<wbr>MAX_<wbr>BUFFER_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of pixels for a 1D image created from a buffer object.</p>
-<p class="tableblock">        The minimum value is 65536 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 65536 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"></a><a href="#CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;MAX_&#8203;ARRAY_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"></a><a href="#CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"><code>CL_DEVICE_<wbr>IMAGE_<wbr>MAX_<wbr>ARRAY_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of images in a 1D or 2D image array.</p>
-<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_SAMPLERS"></a><a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;SAMPLERS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_SAMPLERS"></a><a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_DEVICE_<wbr>MAX_<wbr>SAMPLERS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of samplers that can be used in a kernel.</p>
-<p class="tableblock">        The minimum value is 16 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 16 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_PITCH_ALIGNMENT"></a><a href="#CL_DEVICE_IMAGE_PITCH_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;PITCH_&#8203;ALIGNMENT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_PITCH_ALIGNMENT"></a><a href="#CL_DEVICE_IMAGE_PITCH_ALIGNMENT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>PITCH_<wbr>ALIGNMENT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The row pitch alignment size in pixels for 2D Images Created From a
-        Buffer.
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The row pitch alignment size in pixels for 2D images created from a
+        buffer.
         The value returned must be a power of 2.</p>
-<p class="tableblock">        Support for 2D Images Created From a Buffer is required for an OpenCL 2.0, 2.1,
-        or 2.2 device if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>.</p>
-<p class="tableblock">        This value must be 0 for devices that do not support 2D Images Created from a Buffer.</p></td>
+<p class="tableblock">        Support for 2D images created from a buffer is required for an OpenCL 2.0, 2.1,
+        or 2.2 device if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>.</p>
+<p class="tableblock">        This value must be 0 for devices that do not support 2D images created from a buffer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"></a><a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;BASE_&#8203;ADDRESS_&#8203;ALIGNMENT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"></a><a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>BASE_<wbr>ADDRESS_<wbr>ALIGNMENT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This query specifies the minimum alignment in pixels of the host_ptr
-        specified to <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> when a 2D Image
-        is Created From a Buffer which was created using <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>.
+        specified to <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> when a 2D image
+        is created from a buffer which was created using <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>.
         The value returned must be a power of 2.</p>
-<p class="tableblock">        Support for 2D Images Created From a Buffer is required for an OpenCL 2.0, 2.1,
-        or 2.2 device if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>.</p>
-<p class="tableblock">        This value must be 0 for devices that do not support 2D Images Created from a Buffer.</p></td>
+<p class="tableblock">        Support for 2D images created from a buffer is required for an OpenCL 2.0, 2.1,
+        or 2.2 device if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>.</p>
+<p class="tableblock">        This value must be 0 for devices that do not support 2D images created from a buffer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_PIPE_ARGS"></a><a href="#CL_DEVICE_MAX_PIPE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;PIPE_&#8203;ARGS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_PIPE_ARGS"></a><a href="#CL_DEVICE_MAX_PIPE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>PIPE_<wbr>ARGS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of pipe objects that can be passed as arguments
         to a kernel.
-        The minimum value is 16 for devices supporting Pipes, and must be
-        0 for devices that do not support Pipes.</p></td>
+        The minimum value is 16 for devices supporting pipes, and must be
+        0 for devices that do not support pipes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS"></a><a href="#CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;MAX_&#8203;ACTIVE_&#8203;RESERVATIONS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS"></a><a href="#CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS"><code>CL_DEVICE_<wbr>PIPE_<wbr>MAX_<wbr>ACTIVE_<wbr>RESERVATIONS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of reservations that can be active for a pipe per
         work-item in a kernel.
         A work-group reservation is counted as one reservation per
         work-item.
-        The minimum value is 1 for devices supporting Pipes, and must be
-        0 for devices that do not support Pipes.</p></td>
+        The minimum value is 1 for devices supporting pipes, and must be
+        0 for devices that do not support pipes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PIPE_MAX_PACKET_SIZE"></a><a href="#CL_DEVICE_PIPE_MAX_PACKET_SIZE"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;MAX_&#8203;PACKET_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PIPE_MAX_PACKET_SIZE"></a><a href="#CL_DEVICE_PIPE_MAX_PACKET_SIZE"><code>CL_DEVICE_<wbr>PIPE_<wbr>MAX_<wbr>PACKET_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum size of pipe packet in bytes.</p>
-<p class="tableblock">        Support for Pipes is required for an OpenCL 2.0, 2.1, or 2.2 device.
-        The minimum value is 1024 bytes if the device supports Pipes, and must be
-        0 for devices that do not support Pipes.</p></td>
+<p class="tableblock">        Support for pipes is required for an OpenCL 2.0, 2.1, or 2.2 device.
+        The minimum value is 1024 bytes if the device supports pipes, and must be
+        0 for devices that do not support pipes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_PARAMETER_SIZE"></a><a href="#CL_DEVICE_MAX_PARAMETER_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;PARAMETER_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_PARAMETER_SIZE"></a><a href="#CL_DEVICE_MAX_PARAMETER_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>PARAMETER_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max size in bytes of all arguments that can be passed to a kernel.</p>
 <p class="tableblock">        The minimum value is 1024 for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.
         For this minimum value, only a maximum of 128 arguments can be
         passed to a kernel</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MEM_BASE_ADDR_ALIGN"></a><a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MEM_BASE_ADDR_ALIGN"></a><a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Alignment requirement (in bits) for sub-buffer offsets.
         The minimum value is the size (in bits) of the largest OpenCL
         built-in data type supported by the device (long16 in FULL profile,
         long16 or int16 in EMBEDDED profile) for devices that are not of
-        type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE"></a><a href="#CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE"><code>CL_&#8203;DEVICE_&#8203;MIN_&#8203;DATA_&#8203;TYPE_&#8203;ALIGN_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE"></a><a href="#CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE"><code>CL_DEVICE_<wbr>MIN_<wbr>DATA_<wbr>TYPE_<wbr>ALIGN_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Deprecated by</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The minimum value is the size (in bytes) of the largest OpenCL data
         type supported by the device (<code>long16</code> in FULL profile, <code>long16</code> or
         <code>int16</code> in EMBEDDED profile).</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_SINGLE_FP_CONFIG"></a><a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;SINGLE_&#8203;FP_&#8203;CONFIG</code></a><sup>7</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_fp_config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_SINGLE_FP_CONFIG"></a><a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_DEVICE_<wbr>SINGLE_<wbr>FP_<wbr>CONFIG</code></a> <sup class="footnote" id="_footnote_native-rounding-modes">[<a id="_footnoteref_8" class="footnote" href="#_footnotedef_8" title="View footnote.">8</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>fp_<wbr>config</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes single precision floating-point capability of the device.
         This is a bit-field that describes one or more of the following
         values:</p>
-<p class="tableblock">        <a id="CL_FP_DENORM"></a><a href="#CL_FP_DENORM"><code>CL_&#8203;FP_&#8203;DENORM</code></a> - denorms are supported</p>
-<p class="tableblock">        <a id="CL_FP_INF_NAN"></a><a href="#CL_FP_INF_NAN"><code>CL_&#8203;FP_&#8203;INF_&#8203;NAN</code></a> - INF and quiet NaNs are supported.</p>
-<p class="tableblock">        <a id="CL_FP_ROUND_TO_NEAREST"></a><a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a>-- round to nearest even rounding mode
-        supported</p>
-<p class="tableblock">        <a id="CL_FP_ROUND_TO_ZERO"></a><a href="#CL_FP_ROUND_TO_ZERO"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;ZERO</code></a> - round to zero rounding mode supported</p>
-<p class="tableblock">        <a id="CL_FP_ROUND_TO_INF"></a><a href="#CL_FP_ROUND_TO_INF"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;INF</code></a> - round to positive and negative infinity
-        rounding modes supported</p>
-<p class="tableblock">        <a id="CL_FP_FMA"></a><a href="#CL_FP_FMA"><code>CL_&#8203;FP_&#8203;FMA</code></a> - IEEE754-2008 fused multiply-add is supported.</p>
-<p class="tableblock">        <a id="CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"></a><a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_&#8203;FP_&#8203;CORRECTLY_&#8203;ROUNDED_&#8203;DIVIDE_&#8203;SQRT</code></a> - divide and sqrt are correctly
-        rounded as defined by the IEEE754 specification.</p>
-<p class="tableblock">        <a id="CL_FP_SOFT_FLOAT"></a><a href="#CL_FP_SOFT_FLOAT"><code>CL_&#8203;FP_&#8203;SOFT_&#8203;FLOAT</code></a> - Basic floating-point operations (such as
-        addition, subtraction, multiplication) are implemented in software.</p>
+<p class="tableblock">        <a id="CL_FP_DENORM"></a><a href="#CL_FP_DENORM"><code>CL_FP_<wbr>DENORM</code></a> - denorms are supported<br>
+        <a id="CL_FP_INF_NAN"></a><a href="#CL_FP_INF_NAN"><code>CL_FP_<wbr>INF_<wbr>NAN</code></a> - INF and quiet NaNs are supported<br>
+        <a id="CL_FP_ROUND_TO_NEAREST"></a><a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a>-- round to nearest even rounding mode
+        supported<br>
+        <a id="CL_FP_ROUND_TO_ZERO"></a><a href="#CL_FP_ROUND_TO_ZERO"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>ZERO</code></a> - round to zero rounding mode supported<br>
+        <a id="CL_FP_ROUND_TO_INF"></a><a href="#CL_FP_ROUND_TO_INF"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>INF</code></a> - round to positive and negative infinity
+        rounding modes supported<br>
+        <a id="CL_FP_FMA"></a><a href="#CL_FP_FMA"><code>CL_FP_<wbr>FMA</code></a> - IEEE754-2008 fused multiply-add is supported<br>
+        <a id="CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"></a><a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_FP_<wbr>CORRECTLY_<wbr>ROUNDED_<wbr>DIVIDE_<wbr>SQRT</code></a> - divide and sqrt are correctly
+        rounded as defined by the IEEE754 specification<br>
+        <a id="CL_FP_SOFT_FLOAT"></a><a href="#CL_FP_SOFT_FLOAT"><code>CL_FP_<wbr>SOFT_<wbr>FLOAT</code></a> - Basic floating-point operations (such as
+        addition, subtraction, multiplication) are implemented in software</p>
 <p class="tableblock">        For the full profile, the mandated minimum floating-point capability
-        for devices that are not of type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a> is:
-        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a> | <a href="#CL_FP_INF_NAN"><code>CL_&#8203;FP_&#8203;INF_&#8203;NAN</code></a>.</p>
+        for devices that are not of type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a> is:</p>
+<p class="tableblock">        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a> |<br>
+        <a href="#CL_FP_INF_NAN"><code>CL_FP_<wbr>INF_<wbr>NAN</code></a>.</p>
 <p class="tableblock">        For the embedded profile, see the
         <a href="#embedded-profile-single-fp-config-requirements">dedicated table</a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_DOUBLE_FP_CONFIG"></a><a href="#CL_DEVICE_DOUBLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;DOUBLE_&#8203;FP_&#8203;CONFIG</code></a><sup>8</sup></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_DOUBLE_FP_CONFIG"></a><a href="#CL_DEVICE_DOUBLE_FP_CONFIG"><code>CL_DEVICE_<wbr>DOUBLE_<wbr>FP_<wbr>CONFIG</code></a> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_8" title="View footnote.">8</a>]</sup></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_fp_config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>fp_<wbr>config</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes double precision floating-point capability of the OpenCL
         device.
         This is a bit-field that describes one or more of the following
         values:</p>
-<p class="tableblock">        <a href="#CL_FP_DENORM"><code>CL_&#8203;FP_&#8203;DENORM</code></a> - denorms are supported</p>
-<p class="tableblock">        <a href="#CL_FP_INF_NAN"><code>CL_&#8203;FP_&#8203;INF_&#8203;NAN</code></a> - INF and NaNs are supported.</p>
-<p class="tableblock">        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a> - round to nearest even rounding mode
-        supported.</p>
-<p class="tableblock">        <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;ZERO</code></a> - round to zero rounding mode supported.</p>
-<p class="tableblock">        <a href="#CL_FP_ROUND_TO_INF"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;INF</code></a> - round to positive and negative infinity
-        rounding modes supported.</p>
-<p class="tableblock">        <a href="#CL_FP_FMA"><code>CL_&#8203;FP_&#8203;FMA</code></a> - IEEE754-2008 fused multiply-add is supported.</p>
-<p class="tableblock">        <a href="#CL_FP_SOFT_FLOAT"><code>CL_&#8203;FP_&#8203;SOFT_&#8203;FLOAT</code></a> - Basic floating-point operations (such as
-        addition, subtraction, multiplication) are implemented in software.</p>
+<p class="tableblock">        <a href="#CL_FP_DENORM"><code>CL_FP_<wbr>DENORM</code></a> - denorms are supported<br>
+        <a href="#CL_FP_INF_NAN"><code>CL_FP_<wbr>INF_<wbr>NAN</code></a> - INF and NaNs are supported<br>
+        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a> - round to nearest even rounding mode
+        supported<br>
+        <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>ZERO</code></a> - round to zero rounding mode supported<br>
+        <a href="#CL_FP_ROUND_TO_INF"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>INF</code></a> - round to positive and negative infinity
+        rounding modes supported<br>
+        <a href="#CL_FP_FMA"><code>CL_FP_<wbr>FMA</code></a> - IEEE754-2008 fused multiply-add is supported<br>
+        <a href="#CL_FP_SOFT_FLOAT"><code>CL_FP_<wbr>SOFT_<wbr>FLOAT</code></a> - Basic floating-point operations (such as
+        addition, subtraction, multiplication) are implemented in software</p>
 <p class="tableblock">        Double precision is an optional feature so the mandated minimum
         double precision floating-point capability is 0.</p>
 <p class="tableblock">        If double precision is supported by the device, then the minimum
-        double precision floating-point capability must be:<br>
-        <a href="#CL_FP_FMA"><code>CL_&#8203;FP_&#8203;FMA</code></a> |<br>
-        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a> |<br>
-        <a href="#CL_FP_INF_NAN"><code>CL_&#8203;FP_&#8203;INF_&#8203;NAN</code></a> |<br>
-        <a href="#CL_FP_DENORM"><code>CL_&#8203;FP_&#8203;DENORM</code></a>.</p></td>
+        double precision floating-point capability is:</p>
+<p class="tableblock">        <a href="#CL_FP_FMA"><code>CL_FP_<wbr>FMA</code></a> |<br>
+        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a> |<br>
+        <a href="#CL_FP_INF_NAN"><code>CL_FP_<wbr>INF_<wbr>NAN</code></a> |<br>
+        <a href="#CL_FP_DENORM"><code>CL_FP_<wbr>DENORM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_CACHE_TYPE"></a><a href="#CL_DEVICE_GLOBAL_MEM_CACHE_TYPE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;MEM_&#8203;CACHE_&#8203;TYPE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_mem_cache_type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_CACHE_TYPE"></a><a href="#CL_DEVICE_GLOBAL_MEM_CACHE_TYPE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>MEM_<wbr>CACHE_<wbr>TYPE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>mem_<wbr>cache_<wbr>type</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Type of global memory cache supported.
-        Valid values are: <a href="#CL_NONE"><code>CL_&#8203;NONE</code></a>, <a id="CL_READ_ONLY_CACHE"></a><a href="#CL_READ_ONLY_CACHE"><code>CL_&#8203;READ_&#8203;ONLY_&#8203;CACHE</code></a>, and
-        <a id="CL_READ_WRITE_CACHE"></a><a href="#CL_READ_WRITE_CACHE"><code>CL_&#8203;READ_&#8203;WRITE_&#8203;CACHE</code></a>.</p></td>
+        Valid values are: <a href="#CL_NONE"><code>CL_NONE</code></a>, <a id="CL_READ_ONLY_CACHE"></a><a href="#CL_READ_ONLY_CACHE"><code>CL_READ_<wbr>ONLY_<wbr>CACHE</code></a>, and
+        <a id="CL_READ_WRITE_CACHE"></a><a href="#CL_READ_WRITE_CACHE"><code>CL_READ_<wbr>WRITE_<wbr>CACHE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE"></a><a href="#CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;MEM_&#8203;CACHELINE_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE"></a><a href="#CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>MEM_<wbr>CACHELINE_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Size of global memory cache line in bytes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_CACHE_SIZE"></a><a href="#CL_DEVICE_GLOBAL_MEM_CACHE_SIZE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;MEM_&#8203;CACHE_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_CACHE_SIZE"></a><a href="#CL_DEVICE_GLOBAL_MEM_CACHE_SIZE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>MEM_<wbr>CACHE_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Size of global memory cache in bytes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_SIZE"></a><a href="#CL_DEVICE_GLOBAL_MEM_SIZE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;MEM_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_MEM_SIZE"></a><a href="#CL_DEVICE_GLOBAL_MEM_SIZE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>MEM_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Size of global device memory in bytes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"></a><a href="#CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CONSTANT_&#8203;BUFFER_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"></a><a href="#CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>CONSTANT_<wbr>BUFFER_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max size in bytes of a constant buffer allocation.
         The minimum value is 64 KB for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_CONSTANT_ARGS"></a><a href="#CL_DEVICE_MAX_CONSTANT_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CONSTANT_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_CONSTANT_ARGS"></a><a href="#CL_DEVICE_MAX_CONSTANT_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>CONSTANT_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of arguments declared with the <code>__constant</code> qualifier
         in a kernel.
         The minimum value is 8 for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE"></a><a href="#CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;GLOBAL_&#8203;VARIABLE_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE"></a><a href="#CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>GLOBAL_<wbr>VARIABLE_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of bytes of storage that may be allocated for any
         single variable in program scope or inside a function in an OpenCL
         kernel language declared in the global address space.</p>
-<p class="tableblock">        Support for Program Scope Global Variables is required for an OpenCL 2.0,
+<p class="tableblock">        Support for program scope global variables is required for an OpenCL 2.0,
         2.1, or 2.2 device.
-        The minimum value is 64 KB if the device supports Program Scope Global
-        Variables, and must be 0 for devices that do not support Program Scope
-        Global Variables.</p></td>
+        The minimum value is 64 KB if the device supports program scope global
+        variables, and must be 0 for devices that do not support program scope
+        global variables.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE"></a><a href="#CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;VARIABLE_&#8203;PREFERRED_&#8203;TOTAL_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE"></a><a href="#CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>VARIABLE_<wbr>PREFERRED_<wbr>TOTAL_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum preferred total size, in bytes, of all program variables in
         the global address space.
         This is a performance hint.
@@ -6276,200 +6247,200 @@
         The minimum value is 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_LOCAL_MEM_TYPE"></a><a href="#CL_DEVICE_LOCAL_MEM_TYPE"><code>CL_&#8203;DEVICE_&#8203;LOCAL_&#8203;MEM_&#8203;TYPE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_local_mem_type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_LOCAL_MEM_TYPE"></a><a href="#CL_DEVICE_LOCAL_MEM_TYPE"><code>CL_DEVICE_<wbr>LOCAL_<wbr>MEM_<wbr>TYPE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>local_<wbr>mem_<wbr>type</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Type of local memory supported.
-        This can be set to <a id="CL_LOCAL"></a><a href="#CL_LOCAL"><code>CL_&#8203;LOCAL</code></a> implying dedicated local memory storage
-        such as SRAM , or <a id="CL_GLOBAL"></a><a href="#CL_GLOBAL"><code>CL_&#8203;GLOBAL</code></a>.</p>
-<p class="tableblock">        For custom devices, <a href="#CL_NONE"><code>CL_&#8203;NONE</code></a> can also be returned indicating no local
+        This can be set to <a id="CL_LOCAL"></a><a href="#CL_LOCAL"><code>CL_LOCAL</code></a> implying dedicated local memory storage
+        such as SRAM , or <a id="CL_GLOBAL"></a><a href="#CL_GLOBAL"><code>CL_GLOBAL</code></a>.</p>
+<p class="tableblock">        For custom devices, <a href="#CL_NONE"><code>CL_NONE</code></a> can also be returned indicating no local
         memory support.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_LOCAL_MEM_SIZE"></a><a href="#CL_DEVICE_LOCAL_MEM_SIZE"><code>CL_&#8203;DEVICE_&#8203;LOCAL_&#8203;MEM_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_LOCAL_MEM_SIZE"></a><a href="#CL_DEVICE_LOCAL_MEM_SIZE"><code>CL_DEVICE_<wbr>LOCAL_<wbr>MEM_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Size of local memory region in bytes.
         The minimum value is 32 KB for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ERROR_CORRECTION_SUPPORT"></a><a href="#CL_DEVICE_ERROR_CORRECTION_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;ERROR_&#8203;CORRECTION_&#8203;SUPPORT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device implements error correction for all
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ERROR_CORRECTION_SUPPORT"></a><a href="#CL_DEVICE_ERROR_CORRECTION_SUPPORT"><code>CL_DEVICE_<wbr>ERROR_<wbr>CORRECTION_<wbr>SUPPORT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the device implements error correction for all
         accesses to compute device memory (global and constant).
-        Is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if the device does not implement such error correction.</p></td>
+        Is <a href="#CL_FALSE"><code>CL_FALSE</code></a> if the device does not implement such error correction.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_HOST_UNIFIED_MEMORY"></a><a href="#CL_DEVICE_HOST_UNIFIED_MEMORY"><code>CL_&#8203;DEVICE_&#8203;HOST_&#8203;UNIFIED_&#8203;MEMORY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_HOST_UNIFIED_MEMORY"></a><a href="#CL_DEVICE_HOST_UNIFIED_MEMORY"><code>CL_DEVICE_<wbr>HOST_<wbr>UNIFIED_<wbr>MEMORY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1 and <a href="#unified-spec">deprecated by</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device and the host have a unified memory subsystem
-        and is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the device and the host have a unified memory subsystem
+        and is <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PROFILING_TIMER_RESOLUTION"></a><a href="#CL_DEVICE_PROFILING_TIMER_RESOLUTION"><code>CL_&#8203;DEVICE_&#8203;PROFILING_&#8203;TIMER_&#8203;RESOLUTION</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PROFILING_TIMER_RESOLUTION"></a><a href="#CL_DEVICE_PROFILING_TIMER_RESOLUTION"><code>CL_DEVICE_<wbr>PROFILING_<wbr>TIMER_<wbr>RESOLUTION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the resolution of device timer.
         This is measured in nanoseconds.
         Refer to <a href="#profiling-operations">Profiling Operations</a> for details.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ENDIAN_LITTLE"></a><a href="#CL_DEVICE_ENDIAN_LITTLE"><code>CL_&#8203;DEVICE_&#8203;ENDIAN_&#8203;LITTLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the OpenCL device is a little endian device and
-        <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ENDIAN_LITTLE"></a><a href="#CL_DEVICE_ENDIAN_LITTLE"><code>CL_DEVICE_<wbr>ENDIAN_<wbr>LITTLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the OpenCL device is a little endian device and
+        <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_AVAILABLE"></a><a href="#CL_DEVICE_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;AVAILABLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device is available and <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_AVAILABLE"></a><a href="#CL_DEVICE_AVAILABLE"><code>CL_DEVICE_<wbr>AVAILABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the device is available and <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise.
         A device is considered to be available if the device can be expected
         to successfully execute commands enqueued to the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_COMPILER_AVAILABLE"></a><a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if the implementation does not have a compiler available
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_COMPILER_AVAILABLE"></a><a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_FALSE</code></a> if the implementation does not have a compiler available
         to compile the program source.</p>
-<p class="tableblock">        Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the compiler is available.
-        This can be <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> for the embedded platform profile only.</p></td>
+<p class="tableblock">        Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the compiler is available.
+        This can be <a href="#CL_FALSE"><code>CL_FALSE</code></a> for the embedded platform profile only.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_LINKER_AVAILABLE"></a><a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;LINKER_&#8203;AVAILABLE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_LINKER_AVAILABLE"></a><a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_DEVICE_<wbr>LINKER_<wbr>AVAILABLE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if the implementation does not have a linker available.
-        Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the linker is available.</p>
-<p class="tableblock">        This can be <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> for the embedded platform profile only.</p>
-<p class="tableblock">        This must be <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_FALSE</code></a> if the implementation does not have a linker available.
+        Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the linker is available.</p>
+<p class="tableblock">        This can be <a href="#CL_FALSE"><code>CL_FALSE</code></a> for the embedded platform profile only.</p>
+<p class="tableblock">        This must be <a href="#CL_TRUE"><code>CL_TRUE</code></a> if <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_EXECUTION_CAPABILITIES"></a><a href="#CL_DEVICE_EXECUTION_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;EXECUTION_&#8203;CAPABILITIES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_exec_capabilities</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_EXECUTION_CAPABILITIES"></a><a href="#CL_DEVICE_EXECUTION_CAPABILITIES"><code>CL_DEVICE_<wbr>EXECUTION_<wbr>CAPABILITIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>exec_<wbr>capabilities</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the execution capabilities of the device.
         This is a bit-field that describes one or more of the following
         values:</p>
-<p class="tableblock">        <a id="CL_EXEC_KERNEL"></a><a href="#CL_EXEC_KERNEL"><code>CL_&#8203;EXEC_&#8203;KERNEL</code></a> - The OpenCL device can execute OpenCL kernels.</p>
-<p class="tableblock">        <a id="CL_EXEC_NATIVE_KERNEL"></a><a href="#CL_EXEC_NATIVE_KERNEL"><code>CL_&#8203;EXEC_&#8203;NATIVE_&#8203;KERNEL</code></a> - The OpenCL device can execute native
+<p class="tableblock">        <a id="CL_EXEC_KERNEL"></a><a href="#CL_EXEC_KERNEL"><code>CL_EXEC_<wbr>KERNEL</code></a> - The OpenCL device can execute OpenCL kernels.<br>
+        <a id="CL_EXEC_NATIVE_KERNEL"></a><a href="#CL_EXEC_NATIVE_KERNEL"><code>CL_EXEC_<wbr>NATIVE_<wbr>KERNEL</code></a> - The OpenCL device can execute native
         kernels.</p>
-<p class="tableblock">        The mandated minimum capability is: <a href="#CL_EXEC_KERNEL"><code>CL_&#8203;EXEC_&#8203;KERNEL</code></a>.</p></td>
+<p class="tableblock">        The mandated minimum capability is: <a href="#CL_EXEC_KERNEL"><code>CL_EXEC_<wbr>KERNEL</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_PROPERTIES"></a><a href="#CL_DEVICE_QUEUE_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;PROPERTIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_PROPERTIES"></a><a href="#CL_DEVICE_QUEUE_PROPERTIES"><code>CL_DEVICE_<wbr>QUEUE_<wbr>PROPERTIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Deprecated by</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue_properties</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">See description of <a href="#CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;HOST_&#8203;PROPERTIES</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>queue_<wbr>properties</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">See description of <a href="#CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>HOST_<wbr>PROPERTIES</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"></a><a href="#CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;HOST_&#8203;PROPERTIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"></a><a href="#CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>HOST_<wbr>PROPERTIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue_properties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>queue_<wbr>properties</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the on host command-queue properties supported by the
         device.
         This is a bit-field that describes one or more of the following
         values:</p>
-<p class="tableblock">        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a><br>
-        <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a></p>
+<p class="tableblock">        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a><br>
+        <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a></p>
 <p class="tableblock">        These properties are described in the <a href="#queue-properties-table">Queue Properties</a> table.</p>
-<p class="tableblock">        The mandated minimum capability is: <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a>.</p></td>
+<p class="tableblock">        The mandated minimum capability is: <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES"></a><a href="#CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;PROPERTIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES"></a><a href="#CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>PROPERTIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue_properties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>queue_<wbr>properties</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the on device command-queue properties supported by the
         device.
         This is a bit-field that describes one or more of the following
         values:</p>
-<p class="tableblock">        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a><br>
-        <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a></p>
+<p class="tableblock">        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a><br>
+        <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a></p>
 <p class="tableblock">        These properties are described in the <a href="#queue-properties-table">Queue Properties</a> table.</p>
-<p class="tableblock">        Support for On-Device Queues is required for an OpenCL 2.0, 2.1, or 2.2 device.
-        When On-Device Queues are supported, the mandated minimum capability is:</p>
-<p class="tableblock">        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a> |<br>
-        <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a>.</p>
-<p class="tableblock">        Must be 0 for devices that do not support On-Device Queues.</p></td>
+<p class="tableblock">        Support for on-device queues is required for an OpenCL 2.0, 2.1, or 2.2 device.
+        When on-device queues are supported, the mandated minimum capability is:</p>
+<p class="tableblock">        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a> |<br>
+        <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a>.</p>
+<p class="tableblock">        Must be 0 for devices that do not support on-device queues.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"></a><a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;PREFERRED_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"></a><a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>PREFERRED_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The preferred size of the device queue, in bytes.
         Applications should use this size for the device queue to ensure
         good performance.</p>
-<p class="tableblock">        The minimum value is 16 KB for devices supporting On-Device Queues,
-        and must be 0 for devices that do not support On-Device Queues.</p></td>
+<p class="tableblock">        The minimum value is 16 KB for devices supporting on-device queues,
+        and must be 0 for devices that do not support on-device queues.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"></a><a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;MAX_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"></a><a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>MAX_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum size of the device queue in bytes.</p>
 <p class="tableblock">        The minimum value is 256 KB for the full profile and 64 KB for the
-        embedded profile for devices supporting On-Device Queues,
-        and must be 0 for devices that do not support On-Device Queues.</p></td>
+        embedded profile for devices supporting on-device queues,
+        and must be 0 for devices that do not support on-device queues.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_ON_DEVICE_QUEUES"></a><a href="#CL_DEVICE_MAX_ON_DEVICE_QUEUES"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;ON_&#8203;DEVICE_&#8203;QUEUES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_ON_DEVICE_QUEUES"></a><a href="#CL_DEVICE_MAX_ON_DEVICE_QUEUES"><code>CL_DEVICE_<wbr>MAX_<wbr>ON_<wbr>DEVICE_<wbr>QUEUES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of device queues that can be created for this
         device in a single context.</p>
-<p class="tableblock">        The minimum value is 1 for devices supporting On-Device Queues,
-        and must be 0 for devices that do not support On-Device Queues.</p></td>
+<p class="tableblock">        The minimum value is 1 for devices supporting on-device queues,
+        and must be 0 for devices that do not support on-device queues.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_ON_DEVICE_EVENTS"></a><a href="#CL_DEVICE_MAX_ON_DEVICE_EVENTS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;ON_&#8203;DEVICE_&#8203;EVENTS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_ON_DEVICE_EVENTS"></a><a href="#CL_DEVICE_MAX_ON_DEVICE_EVENTS"><code>CL_DEVICE_<wbr>MAX_<wbr>ON_<wbr>DEVICE_<wbr>EVENTS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of events in use by a device queue.
         These refer to events returned by the <code>enqueue_</code> built-in functions
         to a device queue or user events returned by the <code>create_user_event</code>
         built-in function that have not been released.</p>
-<p class="tableblock">        The minimum value is 1024 for devices supporting On-Device Queues,
-        and must be 0 for devices that do not support On-Device Queues.</p></td>
+<p class="tableblock">        The minimum value is 1024 for devices supporting on-device queues,
+        and must be 0 for devices that do not support on-device queues.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_BUILT_IN_KERNELS"></a><a href="#CL_DEVICE_BUILT_IN_KERNELS"><code>CL_&#8203;DEVICE_&#8203;BUILT_&#8203;IN_&#8203;KERNELS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_BUILT_IN_KERNELS"></a><a href="#CL_DEVICE_BUILT_IN_KERNELS"><code>CL_DEVICE_<wbr>BUILT_<wbr>IN_<wbr>KERNELS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A semi-colon separated list of built-in kernels supported by the
         device.
         An empty string is returned if no built-in kernels are supported by
         the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION"></a><a href="#CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;BUILT_&#8203;IN_&#8203;KERNELS_&#8203;WITH_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION"></a><a href="#CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION"><code>CL_DEVICE_<wbr>BUILT_<wbr>IN_<wbr>KERNELS_<wbr>WITH_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_name_version[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_name_version"><code>cl_name_<wbr>version</code></a>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of descriptions for the built-in kernels supported by
         the device. Each built-in kernel may only be reported once. The list of
         reported kernels must match the list returned via
-        <a href="#CL_DEVICE_BUILT_IN_KERNELS"><code>CL_&#8203;DEVICE_&#8203;BUILT_&#8203;IN_&#8203;KERNELS</code></a>.</p></td>
+        <a href="#CL_DEVICE_BUILT_IN_KERNELS"><code>CL_DEVICE_<wbr>BUILT_<wbr>IN_<wbr>KERNELS</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PLATFORM"></a><a href="#CL_DEVICE_PLATFORM"><code>CL_&#8203;DEVICE_&#8203;PLATFORM</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_platform_id</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PLATFORM"></a><a href="#CL_DEVICE_PLATFORM"><code>CL_DEVICE_<wbr>PLATFORM</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_platform_<wbr>id</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The platform associated with this device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NAME"></a><a href="#CL_DEVICE_NAME"><code>CL_&#8203;DEVICE_&#8203;NAME</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NAME"></a><a href="#CL_DEVICE_NAME"><code>CL_DEVICE_<wbr>NAME</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Device name string.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_VENDOR"></a><a href="#CL_DEVICE_VENDOR"><code>CL_&#8203;DEVICE_&#8203;VENDOR</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_VENDOR"></a><a href="#CL_DEVICE_VENDOR"><code>CL_DEVICE_<wbr>VENDOR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Vendor name string.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DRIVER_VERSION"></a><a href="#CL_DRIVER_VERSION"><code>CL_&#8203;DRIVER_&#8203;VERSION</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DRIVER_VERSION"></a><a href="#CL_DRIVER_VERSION"><code>CL_DRIVER_<wbr>VERSION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL software driver version string.
         Follows a vendor-specific format.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PROFILE"></a><a href="#CL_DEVICE_PROFILE"><code>CL_&#8203;DEVICE_&#8203;PROFILE</code></a><sup>9</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PROFILE"></a><a href="#CL_DEVICE_PROFILE"><code>CL_DEVICE_<wbr>PROFILE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL profile string.
         Returns the profile name supported by the device.
         The profile name returned can be one of the following strings:</p>
@@ -6480,8 +6451,8 @@
         profile.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_VERSION"></a><a href="#CL_DEVICE_VERSION"><code>CL_&#8203;DEVICE_&#8203;VERSION</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_VERSION"></a><a href="#CL_DEVICE_VERSION"><code>CL_DEVICE_<wbr>VERSION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL version string.
         Returns the OpenCL version supported by the device. This version
         string has the following format:</p>
@@ -6491,17 +6462,17 @@
         1.1, 1.2, 2.0, 2.1, 2.2, or 3.0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NUMERIC_VERSION"></a><a href="#CL_DEVICE_NUMERIC_VERSION"><code>CL_&#8203;DEVICE_&#8203;NUMERIC_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NUMERIC_VERSION"></a><a href="#CL_DEVICE_NUMERIC_VERSION"><code>CL_DEVICE_<wbr>NUMERIC_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_version</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_version</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the detailed (major, minor, patch) version supported by the
         device. The major and minor version numbers returned must match
-        those returned via <a href="#CL_DEVICE_VERSION"><code>CL_&#8203;DEVICE_&#8203;VERSION</code></a>.</p></td>
+        those returned via <a href="#CL_DEVICE_VERSION"><code>CL_DEVICE_<wbr>VERSION</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_OPENCL_C_VERSION"></a><a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_OPENCL_C_VERSION"></a><a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1 and <a href="#unified-spec">deprecated by</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the highest fully backwards compatible OpenCL C version
         supported by the compiler for the device.
         For devices supporting compilation from OpenCL C source, this will
@@ -6521,23 +6492,23 @@
 <p class="tableblock">        Support for either OpenCL C 1.0 or OpenCL C 1.1 is required for
         an OpenCL 1.0 device.</p>
 <p class="tableblock">        For devices that do not support compilation from OpenCL C source,
-        such as when <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, this
+        such as when <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>, this
         query may return an empty string.</p>
-<p class="tableblock">        This query has been superseded by the <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a>
+<p class="tableblock">        This query has been superseded by the <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a>
         query, which returns a set of OpenCL C versions supported by a
         device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_OPENCL_C_ALL_VERSIONS"></a><a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_OPENCL_C_ALL_VERSIONS"></a><a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_name_version[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_name_version"><code>cl_name_<wbr>version</code></a>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of name, version descriptions listing all the versions
         of OpenCL C supported by the compiler for the device.
         In each returned description structure, the name field is required to be
         "OpenCL C". The list may include both newer non-backwards compatible
         OpenCL C versions, such as OpenCL C 3.0, and older OpenCL C versions
         with mandatory backwards compatibility.
-        The version returned by <a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a> is required to be
+        The version returned by <a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a> is required to be
         present in the list.</p>
 <p class="tableblock">        For devices that support compilation from OpenCL C source:</p>
 <p class="tableblock">        Because OpenCL 3.0 is backwards compatible with OpenCL C 1.2,
@@ -6555,18 +6526,21 @@
         this query may return an empty array.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_OPENCL_C_FEATURES"></a><a href="#CL_DEVICE_OPENCL_C_FEATURES"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;FEATURES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_OPENCL_C_FEATURES"></a><a href="#CL_DEVICE_OPENCL_C_FEATURES"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>FEATURES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_name_version[]</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of optional OpenCL C features supported by the compiler
-        for the device alongside the OpenCL C version for which they are
-        supported.</p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_name_version"><code>cl_name_<wbr>version</code></a>[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of optional OpenCL C features supported by the
+        compiler for the device alongside the OpenCL C version that introduced
+        the feature macro.
+        For example, if a compiler supports an OpenCL C 3.0 feature, the
+        returned name will be the full name of the OpenCL C feature macro, and
+        the returned version will be 3.0.0.</p>
 <p class="tableblock">        For devices that do not support compilation from OpenCL C source,
         this query may return an empty array.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_EXTENSIONS"></a><a href="#CL_DEVICE_EXTENSIONS"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_EXTENSIONS"></a><a href="#CL_DEVICE_EXTENSIONS"><code>CL_DEVICE_<wbr>EXTENSIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns a space separated list of extension names (the extension
         names themselves do not contain any spaces) supported by the device.
         The list of extension names may include Khronos approved extension
@@ -6579,12 +6553,13 @@
         <strong>cl_khr_local_int32_base_atomics</strong><br>
         <strong>cl_khr_local_int32_extended_atomics</strong></p>
 <p class="tableblock">        Additionally, the following Khronos extension names must be returned
-        by all devices that support OpenCL 1.2:</p>
-<p class="tableblock">        <strong>cl_khr_fp64</strong> (if double precision is supported)</p>
+        by all devices that support OpenCL 1.2 when and only when the optional
+        feature is supported:</p>
+<p class="tableblock">        <strong>cl_khr_fp64</strong></p>
 <p class="tableblock">        Additionally, the following Khronos extension names must be returned
         by all devices that support OpenCL 2.0, OpenCL 2.1, or OpenCL 2.2.
-        Note that these Khronos extension names are <strong>not</strong> required for
-        devices supporting OpenCL 3.0:</p>
+        For devices that support OpenCL 3.0, these extension names must only
+        be returned when and only when the optional feature is supported:</p>
 <p class="tableblock">        <strong>cl_khr_3d_image_writes</strong><br>
         <strong>cl_khr_depth_images</strong><br>
         <strong>cl_khr_image2d_from_buffer</strong></p>
@@ -6592,98 +6567,98 @@
         provided documentation for a detailed description of these extensions.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_EXTENSIONS_WITH_VERSION"></a><a href="#CL_DEVICE_EXTENSIONS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS_&#8203;WITH_&#8203;VERSION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_EXTENSIONS_WITH_VERSION"></a><a href="#CL_DEVICE_EXTENSIONS_WITH_VERSION"><code>CL_DEVICE_<wbr>EXTENSIONS_<wbr>WITH_<wbr>VERSION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_name_version[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_name_version"><code>cl_name_<wbr>version</code></a>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of description (name and version) structures. The same
         extension name must not be reported more than once. The list of
         extensions reported must match the list reported via
-        <a href="#CL_DEVICE_EXTENSIONS"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS</code></a>.</p>
-<p class="tableblock">        See <a id="CL_DEVICE_EXTENSIONS"></a><a href="#CL_DEVICE_EXTENSIONS"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS</code></a> for a list of extensions that are
+        <a href="#CL_DEVICE_EXTENSIONS"><code>CL_DEVICE_<wbr>EXTENSIONS</code></a>.</p>
+<p class="tableblock">        See <a id="CL_DEVICE_EXTENSIONS"></a><a href="#CL_DEVICE_EXTENSIONS"><code>CL_DEVICE_<wbr>EXTENSIONS</code></a> for a list of extensions that are
         required to be reported for a given OpenCL version.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PRINTF_BUFFER_SIZE"></a><a href="#CL_DEVICE_PRINTF_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;PRINTF_&#8203;BUFFER_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PRINTF_BUFFER_SIZE"></a><a href="#CL_DEVICE_PRINTF_BUFFER_SIZE"><code>CL_DEVICE_<wbr>PRINTF_<wbr>BUFFER_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum size in bytes of the internal buffer that holds the output
         of printf calls from a kernel.
         The minimum value for the FULL profile is 1 MB.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_INTEROP_USER_SYNC"></a><a href="#CL_DEVICE_PREFERRED_INTEROP_USER_SYNC"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;INTEROP_&#8203;USER_&#8203;SYNC</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_INTEROP_USER_SYNC"></a><a href="#CL_DEVICE_PREFERRED_INTEROP_USER_SYNC"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>INTEROP_<wbr>USER_<wbr>SYNC</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the devices preference is for the user to be
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the devices preference is for the user to be
         responsible for synchronization, when sharing memory objects between
-        OpenCL and other APIs such as DirectX, <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if the device /
+        OpenCL and other APIs such as DirectX, <a href="#CL_FALSE"><code>CL_FALSE</code></a> if the device /
         implementation has a performant path for performing synchronization
         of memory object shared between OpenCL and other APIs such as
         DirectX.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARENT_DEVICE"></a><a href="#CL_DEVICE_PARENT_DEVICE"><code>CL_&#8203;DEVICE_&#8203;PARENT_&#8203;DEVICE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARENT_DEVICE"></a><a href="#CL_DEVICE_PARENT_DEVICE"><code>CL_DEVICE_<wbr>PARENT_<wbr>DEVICE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_id</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the cl_device_id of the parent device to which this
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>id</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the <code>cl_device_<wbr>id</code> of the parent device to which this
         sub-device belongs.
         If <em>device</em> is a root-level device, a <code>NULL</code> value is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_MAX_SUB_DEVICES"></a><a href="#CL_DEVICE_PARTITION_MAX_SUB_DEVICES"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;MAX_&#8203;SUB_&#8203;DEVICES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_MAX_SUB_DEVICES"></a><a href="#CL_DEVICE_PARTITION_MAX_SUB_DEVICES"><code>CL_DEVICE_<wbr>PARTITION_<wbr>MAX_<wbr>SUB_<wbr>DEVICES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the maximum number of sub-devices that can be created when a
         device is partitioned.</p>
-<p class="tableblock">        The value returned cannot exceed <a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;COMPUTE_&#8203;UNITS</code></a>.</p></td>
+<p class="tableblock">        The value returned cannot exceed <a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_DEVICE_<wbr>MAX_<wbr>COMPUTE_<wbr>UNITS</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_PROPERTIES"></a><a href="#CL_DEVICE_PARTITION_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;PROPERTIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_PROPERTIES"></a><a href="#CL_DEVICE_PARTITION_PROPERTIES"><code>CL_DEVICE_<wbr>PARTITION_<wbr>PROPERTIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_partition_ property[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>partition_<wbr>property</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the list of partition types supported by <em>device</em>.
-        This is an array of cl_device_partition_property values drawn from
+        This is an array of <code>cl_device_<wbr>partition_<wbr>property</code> values drawn from
         the following list:</p>
-<p class="tableblock">        <a href="#CL_DEVICE_PARTITION_EQUALLY"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;EQUALLY</code></a><br>
-        <a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;COUNTS</code></a><br>
-        <a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;AFFINITY_&#8203;DOMAIN</code></a></p>
+<p class="tableblock">        <a href="#CL_DEVICE_PARTITION_EQUALLY"><code>CL_DEVICE_<wbr>PARTITION_<wbr>EQUALLY</code></a><br>
+        <a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>COUNTS</code></a><br>
+        <a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>AFFINITY_<wbr>DOMAIN</code></a></p>
 <p class="tableblock">        If the device cannot be partitioned (i.e. there is no partitioning
         scheme supported by the device that will return at least two
         subdevices), a value of 0 will be returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_AFFINITY_DOMAIN"></a><a href="#CL_DEVICE_PARTITION_AFFINITY_DOMAIN"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;AFFINITY_&#8203;DOMAIN</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_AFFINITY_DOMAIN"></a><a href="#CL_DEVICE_PARTITION_AFFINITY_DOMAIN"><code>CL_DEVICE_<wbr>PARTITION_<wbr>AFFINITY_<wbr>DOMAIN</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_affinity_ domain</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>affinity_<wbr>domain</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the list of supported affinity domains for partitioning the
-        device using <a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;AFFINITY_&#8203;DOMAIN</code></a>.
+        device using <a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>AFFINITY_<wbr>DOMAIN</code></a>.
         This is a bit-field that describes one or more of the following
         values:</p>
-<p class="tableblock">        <a id="CL_DEVICE_AFFINITY_DOMAIN_NUMA"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_NUMA"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;NUMA</code></a><br>
-        <a id="CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L4_&#8203;CACHE</code></a><br>
-        <a id="CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L3_&#8203;CACHE</code></a><br>
-        <a id="CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L2_&#8203;CACHE</code></a><br>
-        <a id="CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L1_&#8203;CACHE</code></a><br>
-        <a id="CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;NEXT_&#8203;PARTITIONABLE</code></a></p>
+<p class="tableblock">        <a id="CL_DEVICE_AFFINITY_DOMAIN_NUMA"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_NUMA"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>NUMA</code></a><br>
+        <a id="CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L4_<wbr>CACHE</code></a><br>
+        <a id="CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L3_<wbr>CACHE</code></a><br>
+        <a id="CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L2_<wbr>CACHE</code></a><br>
+        <a id="CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L1_<wbr>CACHE</code></a><br>
+        <a id="CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"></a><a href="#CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>NEXT_<wbr>PARTITIONABLE</code></a></p>
 <p class="tableblock">        If the device does not support any affinity domains, a value of 0
         will be returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_TYPE"></a><a href="#CL_DEVICE_PARTITION_TYPE"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;TYPE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_TYPE"></a><a href="#CL_DEVICE_PARTITION_TYPE"><code>CL_DEVICE_<wbr>PARTITION_<wbr>TYPE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_partition_property[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>partition_<wbr>property</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the properties argument specified in <a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a> if
         device is a sub-device.
         In the case where the properties argument to <a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a> is
-        <a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;AFFINITY_&#8203;DOMAIN</code></a>,
-        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;NEXT_&#8203;PARTITIONABLE</code></a>, the affinity domain
+        <a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>AFFINITY_<wbr>DOMAIN</code></a>,
+        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>NEXT_<wbr>PARTITIONABLE</code></a>, the affinity domain
         used to perform the partition will be returned.
         This can be one of the following values:</p>
-<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NUMA"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;NUMA</code></a><br>
-        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L4_&#8203;CACHE</code></a><br>
-        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L3_&#8203;CACHE</code></a><br>
-        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L2_&#8203;CACHE</code></a><br>
-        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L1_&#8203;CACHE</code></a></p>
+<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NUMA"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>NUMA</code></a><br>
+        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L4_<wbr>CACHE</code></a><br>
+        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L3_<wbr>CACHE</code></a><br>
+        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L2_<wbr>CACHE</code></a><br>
+        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L1_<wbr>CACHE</code></a></p>
 <p class="tableblock">        Otherwise the implementation may either return a
         <em>param_value_size_ret</em> of 0 i.e. there is no partition type
         associated with device or can return a property value of 0 (where 0
@@ -6691,244 +6666,187 @@
         <em>param_value</em> points to.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_REFERENCE_COUNT"></a><a href="#CL_DEVICE_REFERENCE_COUNT"><code>CL_&#8203;DEVICE_&#8203;REFERENCE_&#8203;COUNT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_REFERENCE_COUNT"></a><a href="#CL_DEVICE_REFERENCE_COUNT"><code>CL_DEVICE_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_9" class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the <em>device</em> reference count.
         If the device is a root-level device, a reference count of one is
         returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_SVM_CAPABILITIES"></a><a href="#CL_DEVICE_SVM_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;CAPABILITIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_SVM_CAPABILITIES"></a><a href="#CL_DEVICE_SVM_CAPABILITIES"><code>CL_DEVICE_<wbr>SVM_<wbr>CAPABILITIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_svm_capabilities</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>svm_<wbr>capabilities</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the various shared virtual memory (SVM) memory
         allocation types the device supports.
         This is a bit-field that describes a combination of the following
         values:</p>
-<p class="tableblock">        <a id="CL_DEVICE_SVM_COARSE_GRAIN_BUFFER"></a><a href="#CL_DEVICE_SVM_COARSE_GRAIN_BUFFER"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;COARSE_&#8203;GRAIN_&#8203;BUFFER</code></a> - Support for coarse-grain buffer
+<p class="tableblock">        <a id="CL_DEVICE_SVM_COARSE_GRAIN_BUFFER"></a><a href="#CL_DEVICE_SVM_COARSE_GRAIN_BUFFER"><code>CL_DEVICE_<wbr>SVM_<wbr>COARSE_<wbr>GRAIN_<wbr>BUFFER</code></a> - Support for coarse-grain buffer
         sharing using <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a>.
         Memory consistency is guaranteed at synchronization points and the
         host must use calls to <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and
-        <a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a>.</p>
-<p class="tableblock">        <a id="CL_DEVICE_SVM_FINE_GRAIN_BUFFER"></a><a href="#CL_DEVICE_SVM_FINE_GRAIN_BUFFER"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;BUFFER</code></a> - Support for fine-grain buffer
+        <a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a>.<br>
+        <a id="CL_DEVICE_SVM_FINE_GRAIN_BUFFER"></a><a href="#CL_DEVICE_SVM_FINE_GRAIN_BUFFER"><code>CL_DEVICE_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>BUFFER</code></a> - Support for fine-grain buffer
         sharing using <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a>.
         Memory consistency is guaranteed at synchronization points without
-        need for <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and <a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a>.</p>
-<p class="tableblock">        <a id="CL_DEVICE_SVM_FINE_GRAIN_SYSTEM"></a><a href="#CL_DEVICE_SVM_FINE_GRAIN_SYSTEM"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;SYSTEM</code></a> - Support for sharing the host&#8217;s
+        need for <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and <a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a>.<br>
+        <a id="CL_DEVICE_SVM_FINE_GRAIN_SYSTEM"></a><a href="#CL_DEVICE_SVM_FINE_GRAIN_SYSTEM"><code>CL_DEVICE_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>SYSTEM</code></a> - Support for sharing the host&#8217;s
         entire virtual memory including memory allocated using <strong>malloc</strong>.
-        Memory consistency is guaranteed at synchronization points.</p>
-<p class="tableblock">        <a id="CL_DEVICE_SVM_ATOMICS"></a><a href="#CL_DEVICE_SVM_ATOMICS"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;ATOMICS</code></a> - Support for the OpenCL 2.0 atomic
+        Memory consistency is guaranteed at synchronization points.<br>
+        <a id="CL_DEVICE_SVM_ATOMICS"></a><a href="#CL_DEVICE_SVM_ATOMICS"><code>CL_DEVICE_<wbr>SVM_<wbr>ATOMICS</code></a> - Support for the OpenCL 2.0 atomic
         operations that provide memory consistency across the host and all
         OpenCL devices supporting fine-grain SVM allocations.</p>
 <p class="tableblock">        The mandated minimum capability for an OpenCL 2.0, 2.1, or 2.2 device is
-        <a href="#CL_DEVICE_SVM_COARSE_GRAIN_BUFFER"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;COARSE_&#8203;GRAIN_&#8203;BUFFER</code></a>.</p>
+        <a href="#CL_DEVICE_SVM_COARSE_GRAIN_BUFFER"><code>CL_DEVICE_<wbr>SVM_<wbr>COARSE_<wbr>GRAIN_<wbr>BUFFER</code></a>.</p>
 <p class="tableblock">        For other device versions there is no mandated minimum capability.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT"></a><a href="#CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;PLATFORM_&#8203;ATOMIC_&#8203;ALIGNMENT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT"></a><a href="#CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>PLATFORM_<wbr>ATOMIC_<wbr>ALIGNMENT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the value representing the preferred alignment in bytes for
         OpenCL 2.0 fine-grained SVM atomic types.
         This query can return 0 which indicates that the preferred alignment
         is aligned to the natural size of the type.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT"></a><a href="#CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;GLOBAL_&#8203;ATOMIC_&#8203;ALIGNMENT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT"></a><a href="#CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>GLOBAL_<wbr>ATOMIC_<wbr>ALIGNMENT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the value representing the preferred alignment in bytes for
         OpenCL 2.0 atomic types to global memory.
         This query can return 0 which indicates that the preferred alignment
         is aligned to the natural size of the type.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT"></a><a href="#CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;LOCAL_&#8203;ATOMIC_&#8203;ALIGNMENT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT"></a><a href="#CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>LOCAL_<wbr>ATOMIC_<wbr>ALIGNMENT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the value representing the preferred alignment in bytes for
         OpenCL 2.0 atomic types to local memory.
         This query can return 0 which indicates that the preferred alignment
         is aligned to the natural size of the type.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_NUM_SUB_GROUPS"></a><a href="#CL_DEVICE_MAX_NUM_SUB_GROUPS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_MAX_NUM_SUB_GROUPS"></a><a href="#CL_DEVICE_MAX_NUM_SUB_GROUPS"><code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of sub-groups in a work-group that a device is
         capable of executing on a single compute unit, for any given
         kernel-instance running on the device.</p>
-<p class="tableblock">        The minimum value is 1 if the device supports Subgroups, and must be
-        0 for devices that do not support Subgroups.
-        Support for Subgroups is required for an OpenCL 2.1 or 2.2 device.</p>
+<p class="tableblock">        The minimum value is 1 if the device supports subgroups, and must be
+        0 for devices that do not support subgroups.
+        Support for subgroups is required for an OpenCL 2.1 or 2.2 device.</p>
 <p class="tableblock">        (Refer also to <a href="#clGetKernelSubGroupInfo"><strong>clGetKernelSubGroupInfo</strong></a>.)</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"></a><a href="#CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"><code>CL_&#8203;DEVICE_&#8203;SUB_&#8203;GROUP_&#8203;INDEPENDENT_&#8203;FORWARD_&#8203;PROGRESS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"></a><a href="#CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"><code>CL_DEVICE_<wbr>SUB_<wbr>GROUP_<wbr>INDEPENDENT_<wbr>FORWARD_<wbr>PROGRESS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if this device supports independent forward progress of
-        sub-groups, <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.</p>
-<p class="tableblock">        This query must return <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> for devices that support the
-        <strong>cl_khr_subgroups</strong> extension, and must return <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> for
-        devices that do not support Subgroups.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if this device supports independent forward progress of
+        sub-groups, <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise.</p>
+<p class="tableblock">        This query must return <a href="#CL_TRUE"><code>CL_TRUE</code></a> for devices that support the
+        <strong>cl_khr_subgroups</strong> extension, and must return <a href="#CL_FALSE"><code>CL_FALSE</code></a> for
+        devices that do not support subgroups.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"></a><a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"></a><a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_atomic_capabilities</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>atomic_<wbr>capabilities</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the various memory orders and scopes that the device supports for atomic memory operations.
         This is a bit-field that describes a combination of the following
         values:</p>
-<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_ORDER_RELAXED"></a><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code></a> - Support for relaxed memory ordering.
-        E.g the use of <code>memory_order_relaxed</code> in OpenCL C.</p>
-<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_ORDER_ACQ_REL"></a><a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;ACQ_&#8203;REL</code></a> - Support for acquire and release memory orderings.
-        E.g the use of <code>memory_order_acquire</code>, <code>memory_order_release</code>, or <code>memory_order_acq_rel</code> in OpenCL C.</p>
-<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_ORDER_SEQ_CST"></a><a href="#CL_DEVICE_ATOMIC_ORDER_SEQ_CST"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;SEQ_&#8203;CST</code></a> - Support for sequentially consistent memory ordering.
-        E.g the use of <code>memory_order_seq_cst</code> in OpenCL C.</p>
-<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;ITEM</code></a> - Support for memory ordering constraints that apply to a single work item.
-        E.g the use of <code>memory_scope_work_item</code> in OpenCL C.
-        Note that this flag does not provide meaning for atomic memory operations, but only for atomic fence operations in certain circumstances, refer to the Memory Scope section of the OpenCL C specification.</p>
-<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code></a> - Support for memory ordering constraints that apply to all work items in a work-group.
-        E.g the use of <code>memory_scope_work_group</code> in OpenCL C.</p>
-<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_SCOPE_DEVICE"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_DEVICE"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;DEVICE</code></a> - Support for memory ordering constraints that apply to all work-items of a kernel(s) simultaneously executing on a device.
-        E.g the use of <code>memory_scope_device</code> in OpenCL C.</p>
-<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;ALL_&#8203;DEVICES</code></a> - Support for memory ordering constraints that apply to all work-items of a kernel(s) executing across all devices that can share SVM memory with each other and the host process.
-        E.g the use of <code>memory_scope_all_svm_devices</code> in OpenCL C.</p>
+<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_ORDER_RELAXED"></a><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code></a> - Support for the <strong>relaxed</strong> memory order.<br>
+        <a id="CL_DEVICE_ATOMIC_ORDER_ACQ_REL"></a><a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>ACQ_<wbr>REL</code></a> - Support for the <strong>acquire</strong>, <strong>release</strong>, and <strong>acquire-release</strong> memory orders.<br>
+        <a id="CL_DEVICE_ATOMIC_ORDER_SEQ_CST"></a><a href="#CL_DEVICE_ATOMIC_ORDER_SEQ_CST"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>SEQ_<wbr>CST</code></a> - Support for the <strong>sequentially consistent</strong> memory order.</p>
+<p class="tableblock">        Because atomic memory orders are hierarchical, a device that supports a strong memory order must also support all weaker memory orders.</p>
+<p class="tableblock">        <a id="CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>ITEM</code></a> <sup class="footnote">[<a id="_footnoteref_10" class="footnote" href="#_footnotedef_10" title="View footnote.">10</a>]</sup> - Support for memory ordering constraints that apply to a single work item.<br>
+        <a id="CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code></a> - Support for memory ordering constraints that apply to all work-items in a work-group.<br>
+        <a id="CL_DEVICE_ATOMIC_SCOPE_DEVICE"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_DEVICE"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>DEVICE</code></a> - Support for memory ordering constraints that apply to all work-items executing on the device.<br>
+        <a id="CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"></a><a href="#CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>ALL_<wbr>DEVICES</code></a> - Support for memory ordering constraints that apply to all work-items executing across all devices that can share SVM memory with each other and the host process.</p>
+<p class="tableblock">        Because atomic scopes are hierarchical, a device that supports a wide scope must also support all narrower scopes, except for the work-item scope, which is a special case.</p>
 <p class="tableblock">        The mandated minimum capability is:</p>
-<p class="tableblock">        <a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code></a> |<br>
-        <a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code></a></p></td>
+<p class="tableblock">        <a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code></a> |<br>
+        <a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"></a><a href="#CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"></a><a href="#CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_atomic_capabilities</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>atomic_<wbr>capabilities</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the various memory orders and scopes that the device supports for atomic fence operations.
-        This is a bit-field that has the same set of possible values as described for <a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code></a>.</p>
+        This is a bit-field that has the same set of possible values as described for <a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code></a>.</p>
 <p class="tableblock">        The mandated minimum capability is:</p>
-<p class="tableblock">        <a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code></a> |<br>
-        <a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;ACQ_&#8203;REL</code></a> |<br>
-        <a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code></a></p></td>
+<p class="tableblock">        <a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code></a> |<br>
+        <a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>ACQ_<wbr>REL</code></a> |<br>
+        <a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"></a><a href="#CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;NON_&#8203;UNIFORM_&#8203;WORK_&#8203;GROUP_&#8203;SUPPORT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"></a><a href="#CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"><code>CL_DEVICE_<wbr>NON_<wbr>UNIFORM_<wbr>WORK_<wbr>GROUP_<wbr>SUPPORT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device supports non-uniform work groups, and <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the device supports non-uniform work groups, and <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"></a><a href="#CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;WORK_&#8203;GROUP_&#8203;COLLECTIVE_&#8203;FUNCTIONS_&#8203;SUPPORT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"></a><a href="#CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"><code>CL_DEVICE_<wbr>WORK_<wbr>GROUP_<wbr>COLLECTIVE_<wbr>FUNCTIONS_<wbr>SUPPORT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device supports work group collective functions e.g. <code>work_group_broadcast</code>, <code>work_group_reduce</code>, and <code>work_group_scan</code>, and <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the device supports work group collective functions e.g. <code>work_group_broadcast</code>, <code>work_group_reduce</code>, and <code>work_group_scan</code>, and <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"></a><a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;GENERIC_&#8203;ADDRESS_&#8203;SPACE_&#8203;SUPPORT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"></a><a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_DEVICE_<wbr>GENERIC_<wbr>ADDRESS_<wbr>SPACE_<wbr>SUPPORT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device supports the generic address space and its associated built-in functions, and <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the device supports the generic address space and its associated built-in functions, and <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_DEVICE_ENQUEUE_SUPPORT"></a><a href="#CL_DEVICE_DEVICE_ENQUEUE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;DEVICE_&#8203;ENQUEUE_&#8203;SUPPORT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES"></a><a href="#CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES"><code>CL_DEVICE_<wbr>DEVICE_<wbr>ENQUEUE_<wbr>CAPABILITIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device supports device-side enqueue and on-device queues, and <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.</p>
-<p class="tableblock">      Devices that return <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> for <a href="#CL_DEVICE_DEVICE_ENQUEUE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;DEVICE_&#8203;ENQUEUE_&#8203;SUPPORT</code></a> must also return <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> for <a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;GENERIC_&#8203;ADDRESS_&#8203;SPACE_&#8203;SUPPORT</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>device_<wbr>enqueue_<wbr>capabilities</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Describes device-side enqueue capabilities of the device.
+        This is a bit-field that describes one or more of the following
+        values:</p>
+<p class="tableblock">        <a id="CL_DEVICE_QUEUE_SUPPORTED"></a><a href="#CL_DEVICE_QUEUE_SUPPORTED"><code>CL_DEVICE_<wbr>QUEUE_<wbr>SUPPORTED</code></a> - Device supports device-side enqueue and on-device queues.<br>
+        <a id="CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT"></a><a href="#CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT"><code>CL_DEVICE_<wbr>QUEUE_<wbr>REPLACEABLE_<wbr>DEFAULT</code></a> - Device supports a replaceable default on-device queue.</p>
+<p class="tableblock">        If <a href="#CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT"><code>CL_DEVICE_<wbr>QUEUE_<wbr>REPLACEABLE_<wbr>DEFAULT</code></a> is set, <a href="#CL_DEVICE_QUEUE_SUPPORTED"><code>CL_DEVICE_<wbr>QUEUE_<wbr>SUPPORTED</code></a> must also be set.</p>
+<p class="tableblock">        Devices that set <a href="#CL_DEVICE_QUEUE_SUPPORTED"><code>CL_DEVICE_<wbr>QUEUE_<wbr>SUPPORTED</code></a> for <a href="#CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES"><code>CL_DEVICE_<wbr>DEVICE_<wbr>ENQUEUE_<wbr>CAPABILITIES</code></a> must also return <a href="#CL_TRUE"><code>CL_TRUE</code></a> for <a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_DEVICE_<wbr>GENERIC_<wbr>ADDRESS_<wbr>SPACE_<wbr>SUPPORT</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PIPE_SUPPORT"></a><a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;SUPPORT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PIPE_SUPPORT"></a><a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_DEVICE_<wbr>PIPE_<wbr>SUPPORT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the device supports Pipes, and <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> otherwise.</p>
-<p class="tableblock">      Devices that return <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> for <a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;SUPPORT</code></a> must also return <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> for <a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;GENERIC_&#8203;ADDRESS_&#8203;SPACE_&#8203;SUPPORT</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the device supports pipes, and <a href="#CL_FALSE"><code>CL_FALSE</code></a> otherwise.</p>
+<p class="tableblock">      Devices that return <a href="#CL_TRUE"><code>CL_TRUE</code></a> for <a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_DEVICE_<wbr>PIPE_<wbr>SUPPORT</code></a> must also return <a href="#CL_TRUE"><code>CL_TRUE</code></a> for <a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_DEVICE_<wbr>GENERIC_<wbr>ADDRESS_<wbr>SPACE_<wbr>SUPPORT</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"></a><a href="#CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;WORK_&#8203;GROUP_&#8203;SIZE_&#8203;MULTIPLE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"></a><a href="#CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>WORK_<wbr>GROUP_<wbr>SIZE_<wbr>MULTIPLE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the preferred multiple of work-group size for the given device.
         This is a performance hint intended as a guide when specifying the local work size argument to <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>.</p>
-<p class="tableblock">        (Refer also to <a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a> where <a href="#CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_&#8203;KERNEL_&#8203;PREFERRED_&#8203;WORK_&#8203;GROUP_&#8203;SIZE_&#8203;MULTIPLE</code></a>
-        can return a different value to <a href="#CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;WORK_&#8203;GROUP_&#8203;SIZE_&#8203;MULTIPLE</code></a> which may be more optimal.)</p></td>
+<p class="tableblock">        (Refer also to <a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a> where <a href="#CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_KERNEL_<wbr>PREFERRED_<wbr>WORK_<wbr>GROUP_<wbr>SIZE_<wbr>MULTIPLE</code></a>
+        can return a different value to <a href="#CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>WORK_<wbr>GROUP_<wbr>SIZE_<wbr>MULTIPLE</code></a> which may be more optimal.)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED"></a><a href="#CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED"><code>CL_DEVICE_<wbr>LATEST_<wbr>CONFORMANCE_<wbr>VERSION_<wbr>PASSED</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the latest version of the conformance test suite that this device
+        has fully passed in accordance with the official conformance process.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">4</dt>
-<dd>
-<p>OpenCL adopters must report a valid vendor ID for their implementation.
-If there is no valid PCI vendor ID defined for the physical device,
-implementations must obtain a Khronos vendor ID. This is a unique
-identifier greater than the largest PCI vendor ID(0x10000) and is
-representable by a <code>cl_uint</code>. Khronos vendor IDs are synchronized across
-APIs by utilizing Vulkan&#8217;s vk.xml as the central Khronos vendor ID registry.
-An ID must be reserved here prior to use in OpenCL, regardless of whether a
-vendor implements Vulkan. Only once the ID has been allotted may it be
-exposed to OpenCL by proposing a merge request against cl.xml, in the master
-branch of the OpenCL-Docs project. The merge must define a new enumerant by
-adding an <code>&lt;enum&gt;</code> tag to the <code>cl_khronos_vendor_id</code> <code>&lt;enums&gt;</code> tag, with the
-<code>&lt;value&gt;</code> attribute set as the acquired Khronos vendor ID. The <code>&lt;name&gt;</code>
-attribute must identify the vendor/adopter, and be of the form
-<code>CL_KHRONOS_VENDOR_ID_&lt;vendor&gt;</code>.</p>
-</dd>
-<dt class="hdlist1">5</dt>
-<dd>
-<p>A kernel that uses an image argument with the write_only or read_write
-image qualifier may result in additional read_only images resources being
-created internally by an implementation.
-The internally created read_only image resources will count against the max
-supported read image arguments given by <a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;IMAGE_&#8203;ARGS</code></a>.
-Enqueuing a kernel that requires more images than the implementation can
-support will result in a <a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> error being returned.</p>
-</dd>
-<dt class="hdlist1">6</dt>
-<dd>
-<p>NOTE: <a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a> is only there for backward
-compatibility.
-<a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a> should be used instead.</p>
-</dd>
-<dt class="hdlist1">7</dt>
-<dd>
-<p>The optional rounding modes should be included as a device capability
-only if it is supported natively.
-All explicit conversion functions with specific rounding modes must
-still operate correctly.</p>
-</dd>
-<dt class="hdlist1">8</dt>
-<dd>
-<p>The optional rounding modes should be included as a device capability
-only if it is supported natively.
-All explicit conversion functions with specific rounding modes must
-still operate correctly.</p>
-</dd>
-<dt class="hdlist1">9</dt>
-<dd>
-<p>The platform profile returns the profile that is implemented by the
-OpenCL framework.
-If the platform profile returned is FULL_PROFILE, the OpenCL framework
-will support devices that are FULL_PROFILE and may also support devices
-that are EMBEDDED_PROFILE.
-The compiler must be available for all devices i.e.
-<a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>.
-If the platform profile returned is EMBEDDED_PROFILE, then devices that
-are only EMBEDDED_PROFILE are supported.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
-<p><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device.</p>
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not one of the supported values or
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not one of the supported values or
 if size in bytes specified by <em>param_value_size</em> is &lt; size of return
 type as specified in the <a href="#device-queries-table">Device Queries</a> table
 and <em>param_value</em> is not a <code>NULL</code> value or if <em>param_name</em> is a value
@@ -6936,11 +6854,11 @@
 supported by the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -6981,7 +6899,7 @@
 <p><em>device_timestamp</em> will be updated with the value of the device timer in
 nanoseconds.
 The resolution of the timer is the same as the device profiling timer
-returned by <a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a> and the <a href="#CL_DEVICE_PROFILING_TIMER_RESOLUTION"><code>CL_&#8203;DEVICE_&#8203;PROFILING_&#8203;TIMER_&#8203;RESOLUTION</code></a>
+returned by <a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a> and the <a href="#CL_DEVICE_PROFILING_TIMER_RESOLUTION"><code>CL_DEVICE_<wbr>PROFILING_<wbr>TIMER_<wbr>RESOLUTION</code></a>
 query.</p>
 </li>
 <li>
@@ -6989,7 +6907,7 @@
 nanoseconds at the closest possible point in time to that at which
 <em>device_timer</em> was returned.
 The resolution of the timer may be queried via <a href="#clGetPlatformInfo"><strong>clGetPlatformInfo</strong></a> and the
-flag <a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_&#8203;PLATFORM_&#8203;HOST_&#8203;TIMER_&#8203;RESOLUTION</code></a>.</p>
+flag <a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_PLATFORM_<wbr>HOST_<wbr>TIMER_<wbr>RESOLUTION</code></a>.</p>
 </li>
 </ul>
 </div>
@@ -7007,27 +6925,28 @@
 the same timebase.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clGetDeviceAndHostTimer"><strong>clGetDeviceAndHostTimer</strong></a> will return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> with a time value in
+<p><a href="#clGetDeviceAndHostTimer"><strong>clGetDeviceAndHostTimer</strong></a> will return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> with a time value in
 <em>host_timestamp</em> if provided.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device.</p>
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the platform associated with <em>device</em> does not support Device and Host Timer Synchronization.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the platform associated with <em>device</em> does not
+support device and host timer synchronization.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>host_timestamp</em> or <em>device_timestamp</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>host_timestamp</em> or <em>device_timestamp</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7067,7 +6986,7 @@
 <p><em>host_timestamp</em> will be updated with the value of the current timer in
 nanoseconds.
 The resolution of the timer may be queried via <a href="#clGetPlatformInfo"><strong>clGetPlatformInfo</strong></a> and the
-flag <a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_&#8203;PLATFORM_&#8203;HOST_&#8203;TIMER_&#8203;RESOLUTION</code></a>.</p>
+flag <a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_PLATFORM_<wbr>HOST_<wbr>TIMER_<wbr>RESOLUTION</code></a>.</p>
 </li>
 </ul>
 </div>
@@ -7087,27 +7006,28 @@
 the same timebase.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clGetHostTimer"><strong>clGetHostTimer</strong></a> will return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> with a time value in
+<p><a href="#clGetHostTimer"><strong>clGetHostTimer</strong></a> will return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> with a time value in
 <em>host_timestamp</em> if provided.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device.</p>
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the platform associated with <em>device</em> does not support Device and Host Timer Synchronization.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the platform associated with <em>device</em> does not
+support device and host timer synchronization.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>host_timestamp</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>host_timestamp</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7116,7 +7036,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_partitioning_a_device">4.3. Partitioning a Device</h3>
+<h3 id="_partitioning_a_device"><a class="anchor" href="#_partitioning_a_device"></a>4.3. Partitioning a Device</h3>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -7174,7 +7094,7 @@
 </li>
 <li>
 <p><em>num_devices</em> is the size of memory pointed to by <em>out_devices</em> specified as
-the number of cl_device_id entries.</p>
+the number of <code>cl_device_<wbr>id</code> entries.</p>
 </li>
 <li>
 <p><em>out_devices</em> is the buffer where the OpenCL sub-devices will be returned.
@@ -7210,71 +7130,71 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_device_partition_property enum</strong></th>
-<th class="tableblock halign-left valign-top">Partition value</th>
+<th class="tableblock halign-left valign-top">Partition Property</th>
+<th class="tableblock halign-left valign-top">Partition Value</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_EQUALLY"></a><a href="#CL_DEVICE_PARTITION_EQUALLY"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;EQUALLY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_EQUALLY"></a><a href="#CL_DEVICE_PARTITION_EQUALLY"><code>CL_DEVICE_<wbr>PARTITION_<wbr>EQUALLY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Split the aggregate device into as many smaller aggregate devices as
         can be created, each containing <em>n</em> compute units.
         The value <em>n</em> is passed as the value accompanying this property.
         If <em>n</em> does not divide evenly into
-        <a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;COMPUTE_&#8203;UNITS</code></a>, then the remaining compute
+        <a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_DEVICE_<wbr>MAX_<wbr>COMPUTE_<wbr>UNITS</code></a>, then the remaining compute
         units are not used.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_BY_COUNTS"></a><a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;COUNTS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_BY_COUNTS"></a><a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>COUNTS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This property is followed by a list of compute unit counts
-        terminated with 0 or <a id="CL_DEVICE_PARTITION_BY_COUNTS_LIST_END"></a><a href="#CL_DEVICE_PARTITION_BY_COUNTS_LIST_END"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;COUNTS_&#8203;LIST_&#8203;END</code></a>.
+        terminated with 0 or <a id="CL_DEVICE_PARTITION_BY_COUNTS_LIST_END"></a><a href="#CL_DEVICE_PARTITION_BY_COUNTS_LIST_END"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>COUNTS_<wbr>LIST_<wbr>END</code></a>.
         For each non-zero count <em>m</em> in the list, a sub-device is created
         with <em>m</em> compute units in it.</p>
 <p class="tableblock">        The number of non-zero count entries in the list may not exceed
-        <a href="#CL_DEVICE_PARTITION_MAX_SUB_DEVICES"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;MAX_&#8203;SUB_&#8203;DEVICES</code></a>.</p>
+        <a href="#CL_DEVICE_PARTITION_MAX_SUB_DEVICES"><code>CL_DEVICE_<wbr>PARTITION_<wbr>MAX_<wbr>SUB_<wbr>DEVICES</code></a>.</p>
 <p class="tableblock">        The total number of compute units specified may not exceed
-        <a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;COMPUTE_&#8203;UNITS</code></a>.</p></td>
+        <a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_DEVICE_<wbr>MAX_<wbr>COMPUTE_<wbr>UNITS</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"></a><a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;AFFINITY_&#8203;DOMAIN</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"></a><a href="#CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>AFFINITY_<wbr>DOMAIN</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_affinity_ domain</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>affinity_<wbr>domain</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Split the device into smaller aggregate devices containing one or
         more compute units that all share part of a cache hierarchy.
         The value accompanying this property may be drawn from the following
         list:</p>
-<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NUMA"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;NUMA</code></a> - Split the device into sub-devices
+<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NUMA"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>NUMA</code></a> - Split the device into sub-devices
         comprised of compute units that share a NUMA node.</p>
-<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L4_&#8203;CACHE</code></a> - Split the device into
+<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L4_<wbr>CACHE</code></a> - Split the device into
         sub-devices comprised of compute units that share a level 4 data
         cache.</p>
-<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L3_&#8203;CACHE</code></a> - Split the device into
+<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L3_<wbr>CACHE</code></a> - Split the device into
         sub-devices comprised of compute units that share a level 3 data
         cache.</p>
-<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L2_&#8203;CACHE</code></a> - Split the device into
+<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L2_<wbr>CACHE</code></a> - Split the device into
         sub-devices comprised of compute units that share a level 2 data
         cache.</p>
-<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;L1_&#8203;CACHE</code></a> - Split the device into
+<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>L1_<wbr>CACHE</code></a> - Split the device into
         sub-devices comprised of compute units that share a level 1 data
         cache.</p>
-<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"><code>CL_&#8203;DEVICE_&#8203;AFFINITY_&#8203;DOMAIN_&#8203;NEXT_&#8203;PARTITIONABLE</code></a> - Split the device
+<p class="tableblock">        <a href="#CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE"><code>CL_DEVICE_<wbr>AFFINITY_<wbr>DOMAIN_<wbr>NEXT_<wbr>PARTITIONABLE</code></a> - Split the device
         along the next partitionable affinity domain.
         The implementation shall find the first level along which the device
         or sub-device may be further subdivided in the order NUMA, L4, L3,
         L2, L1, and partition the device into sub-devices comprised of
         compute units that share memory subsystems at this level.</p>
 <p class="tableblock">        The user may determine what happened by calling
-        <a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>(<a href="#CL_DEVICE_PARTITION_TYPE"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;TYPE</code></a>) on the sub-devices.</p></td>
+        <a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>(<a href="#CL_DEVICE_PARTITION_TYPE"><code>CL_DEVICE_<wbr>PARTITION_<wbr>TYPE</code></a>) on the sub-devices.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the partition is created
+<p><a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the partition is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -7282,37 +7202,37 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>in_device</em> is not a valid device.</p>
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>in_device</em> is not a valid device.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>properties</em> are not valid or if
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>properties</em> are not valid or if
 values specified in <em>properties</em> are valid but not supported by the
 device.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>out_devices</em> is not <code>NULL</code> and <em>num_devices</em> is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>out_devices</em> is not <code>NULL</code> and <em>num_devices</em> is
 less than the number of sub-devices created by the partition scheme.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_PARTITION_FAILED"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;FAILED</code></a> if the partition name is supported by the
+<p><a href="#CL_DEVICE_PARTITION_FAILED"><code>CL_DEVICE_<wbr>PARTITION_<wbr>FAILED</code></a> if the partition name is supported by the
 implementation but in_device could not be further partitioned.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE_PARTITION_COUNT"><code>CL_&#8203;INVALID_&#8203;DEVICE_&#8203;PARTITION_&#8203;COUNT</code></a> if the partition name specified in
-<em>properties</em> is <a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;COUNTS</code></a> and the number of
-sub-devices requested exceeds <a href="#CL_DEVICE_PARTITION_MAX_SUB_DEVICES"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;MAX_&#8203;SUB_&#8203;DEVICES</code></a> or the
+<p><a href="#CL_INVALID_DEVICE_PARTITION_COUNT"><code>CL_INVALID_<wbr>DEVICE_<wbr>PARTITION_<wbr>COUNT</code></a> if the partition name specified in
+<em>properties</em> is <a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>COUNTS</code></a> and the number of
+sub-devices requested exceeds <a href="#CL_DEVICE_PARTITION_MAX_SUB_DEVICES"><code>CL_DEVICE_<wbr>PARTITION_<wbr>MAX_<wbr>SUB_<wbr>DEVICES</code></a> or the
 total number of compute units requested exceeds
-<a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;COMPUTE_&#8203;UNITS</code></a> for <em>in_device</em>, or the number of
+<a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_DEVICE_<wbr>MAX_<wbr>COMPUTE_<wbr>UNITS</code></a> for <em>in_device</em>, or the number of
 compute units requested for one or more sub-devices is less than zero or
 the number of sub-devices requested exceeds
-<a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;COMPUTE_&#8203;UNITS</code></a> for <em>in_device</em>.</p>
+<a href="#CL_DEVICE_MAX_COMPUTE_UNITS"><code>CL_DEVICE_<wbr>MAX_<wbr>COMPUTE_<wbr>UNITS</code></a> for <em>in_device</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7387,25 +7307,25 @@
 <div class="paragraph">
 <p><a href="#clRetainDevice"><strong>clRetainDevice</strong></a> increments the <em>device</em> reference count if <em>device</em> is a
 valid sub-device created by a call to <a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a>.
-If <em>device</em> is a root level device i.e. a cl_device_id returned by
+If <em>device</em> is a root level device i.e. a <code>cl_device_<wbr>id</code> returned by
 <a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a>, the <em>device</em> reference count remains unchanged.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainDevice"><strong>clRetainDevice</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed successfully
+<p><a href="#clRetainDevice"><strong>clRetainDevice</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed successfully
 or the device is a root-level device.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device.</p>
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7445,25 +7365,25 @@
 <div class="paragraph">
 <p><a href="#clReleaseDevice"><strong>clReleaseDevice</strong></a> decrements the <em>device</em> reference count if device is a
 valid sub-device created by a call to <a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a>.
-If <em>device</em> is a root level device i.e. a cl_device_id returned by
+If <em>device</em> is a root level device i.e. a <code>cl_device_<wbr>id</code> returned by
 <a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a>, the <em>device</em> reference count remains unchanged.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseDevice"><strong>clReleaseDevice</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseDevice"><strong>clReleaseDevice</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device.</p>
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7479,7 +7399,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_contexts">4.4. Contexts</h3>
+<h3 id="_contexts"><a class="anchor" href="#_contexts"></a>4.4. Contexts</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -7513,17 +7433,9 @@
 <p><em>num_devices</em> is the number of devices specified in the <em>devices</em> argument.</p>
 </li>
 <li>
-<p><em>devices</em> is a pointer to a list of unique devices<sup>9</sup> returned by
+<p><em>devices</em> is a pointer to a list of unique devices returned by
 <a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a> or sub-devices created by <a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a> for a
-platform.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">9</dt>
-<dd>
-<p>Duplicate devices specified in <em>devices</em> are ignored.</p>
-</dd>
-</dl>
-</div>
+platform. <sup class="footnote">[<a id="_footnoteref_11" class="footnote" href="#_footnotedef_11" title="View footnote.">11</a>]</sup></p>
 </li>
 <li>
 <p><em>pfn_notify</em> is a callback function that can be registered by the
@@ -7580,28 +7492,28 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_context_properties enum</strong></th>
-<th class="tableblock halign-left valign-top">Property value</th>
+<th class="tableblock halign-left valign-top">Context Property</th>
+<th class="tableblock halign-left valign-top">Property Value</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_PLATFORM"></a><a href="#CL_CONTEXT_PLATFORM"><code>CL_&#8203;CONTEXT_&#8203;PLATFORM</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_platform_id</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_PLATFORM"></a><a href="#CL_CONTEXT_PLATFORM"><code>CL_CONTEXT_<wbr>PLATFORM</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_platform_<wbr>id</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the platform to use.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_INTEROP_USER_SYNC"></a><a href="#CL_CONTEXT_INTEROP_USER_SYNC"><code>CL_&#8203;CONTEXT_&#8203;INTEROP_&#8203;USER_&#8203;SYNC</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_INTEROP_USER_SYNC"></a><a href="#CL_CONTEXT_INTEROP_USER_SYNC"><code>CL_CONTEXT_<wbr>INTEROP_<wbr>USER_<wbr>SYNC</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Specifies whether the user is responsible for synchronization
         between OpenCL and other APIs.
         Please refer to the specific sections in the OpenCL Extension
         Specification that describe sharing with other APIs for restrictions
         on using this flag.</p>
-<p class="tableblock">        If <a href="#CL_CONTEXT_INTEROP_USER_SYNC"><code>CL_&#8203;CONTEXT_&#8203;INTEROP_&#8203;USER_&#8203;SYNC</code></a> is not specified, a default of
-        <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> is assumed.</p></td>
+<p class="tableblock">        If <a href="#CL_CONTEXT_INTEROP_USER_SYNC"><code>CL_CONTEXT_<wbr>INTEROP_<wbr>USER_<wbr>SYNC</code></a> is not specified, a default of
+        <a href="#CL_FALSE"><code>CL_FALSE</code></a> is assumed.</p></td>
 </tr>
 </tbody>
 </table>
@@ -7622,47 +7534,47 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateContext"><strong>clCreateContext</strong></a> returns a valid non-zero context and <em>errcode_ret</em> is set
-to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the context is created successfully.
+to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the context is created successfully.
 Otherwise, it returns a <code>NULL</code> value with the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PLATFORM"><code>CL_&#8203;INVALID_&#8203;PLATFORM</code></a> if <em>properties</em> is <code>NULL</code> and no platform could be
+<p><a href="#CL_INVALID_PLATFORM"><code>CL_INVALID_<wbr>PLATFORM</code></a> if <em>properties</em> is <code>NULL</code> and no platform could be
 selected or if platform value specified in <em>properties</em> is not a valid
 platform.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROPERTY"><code>CL_&#8203;INVALID_&#8203;PROPERTY</code></a> if context property name in <em>properties</em> is not a
+<p><a href="#CL_INVALID_PROPERTY"><code>CL_INVALID_<wbr>PROPERTY</code></a> if context property name in <em>properties</em> is not a
 supported property name, if the value specified for a supported property
 name is not valid, or if the same property name is specified more than
 once.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>devices</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>devices</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_devices</em> is equal to zero.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_devices</em> is equal to zero.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if any device in <em>devices</em> is not a valid device.</p>
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if any device in <em>devices</em> is not a valid device.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_NOT_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;NOT_&#8203;AVAILABLE</code></a> if a device in <em>devices</em> is currently not
+<p><a href="#CL_DEVICE_NOT_AVAILABLE"><code>CL_DEVICE_<wbr>NOT_<wbr>AVAILABLE</code></a> if a device in <em>devices</em> is currently not
 available even though the device was returned by <a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7694,8 +7606,8 @@
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>To create an OpenCL context from a specific device type<sup>10</sup>, call the
-function:</p>
+<p>To create an OpenCL context from a specific device
+type <sup class="footnote">[<a id="_footnoteref_12" class="footnote" href="#_footnotedef_12" title="View footnote.">12</a>]</sup>, call the function:</p>
 </div>
 <div id="clCreateContextFromType" class="listingblock">
 <div class="content">
@@ -7721,7 +7633,7 @@
 </li>
 <li>
 <p><em>device_type</em> is a bit-field that identifies the type of device and is
-described in the <a href="#device-categories-table">Device Categories</a> table.</p>
+described in the <a href="#device-types-table">Device Types</a> table.</p>
 </li>
 <li>
 <p><em>pfn_notify</em> and <em>user_data</em> are described in <a href="#clCreateContext"><strong>clCreateContext</strong></a>.</p>
@@ -7738,56 +7650,47 @@
 The context does not reference any sub-devices that may have been created
 from these devices.</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">10</dt>
-<dd>
-<p><a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a> may return all or a subset of the actual
-physical devices present in the platform and that match device_type.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
 <p><a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a> returns a valid non-zero context and <em>errcode_ret</em>
-is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the context is created successfully.
+is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the context is created successfully.
 Otherwise, it returns a <code>NULL</code> value with the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PLATFORM"><code>CL_&#8203;INVALID_&#8203;PLATFORM</code></a> if <em>properties</em> is <code>NULL</code> and no platform could be
+<p><a href="#CL_INVALID_PLATFORM"><code>CL_INVALID_<wbr>PLATFORM</code></a> if <em>properties</em> is <code>NULL</code> and no platform could be
 selected or if platform value specified in <em>properties</em> is not a valid
 platform.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROPERTY"><code>CL_&#8203;INVALID_&#8203;PROPERTY</code></a> if context property name in <em>properties</em> is not a
+<p><a href="#CL_INVALID_PROPERTY"><code>CL_INVALID_<wbr>PROPERTY</code></a> if context property name in <em>properties</em> is not a
 supported property name, if the value specified for a supported property
 name is not valid, or if the same property name is specified more than
 once.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE_TYPE"><code>CL_&#8203;INVALID_&#8203;DEVICE_&#8203;TYPE</code></a> if <em>device_type</em> is not a valid value.</p>
+<p><a href="#CL_INVALID_DEVICE_TYPE"><code>CL_INVALID_<wbr>DEVICE_<wbr>TYPE</code></a> if <em>device_type</em> is not a valid value.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_NOT_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;NOT_&#8203;AVAILABLE</code></a> if no devices that match <em>device_type</em> and
+<p><a href="#CL_DEVICE_NOT_AVAILABLE"><code>CL_DEVICE_<wbr>NOT_<wbr>AVAILABLE</code></a> if no devices that match <em>device_type</em> and
 property values specified in <em>properties</em> are currently available.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_NOT_FOUND"><code>CL_&#8203;DEVICE_&#8203;NOT_&#8203;FOUND</code></a> if no devices that match <em>device_type</em> and property
+<p><a href="#CL_DEVICE_NOT_FOUND"><code>CL_DEVICE_<wbr>NOT_<wbr>FOUND</code></a> if no devices that match <em>device_type</em> and property
 values specified in <em>properties</em> were found.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7825,21 +7728,21 @@
 the problem of a context being used by a library no longer being valid.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainContext"><strong>clRetainContext</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clRetainContext"><strong>clRetainContext</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid OpenCL context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid OpenCL context.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7873,21 +7776,21 @@
 the object or by calling <a href="#clRetainContext"><strong>clRetainContext</strong></a> causes undefined behavior.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseContext"><strong>clReleaseContext</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseContext"><strong>clReleaseContext</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid OpenCL context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid OpenCL context.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -7950,79 +7853,162 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_context_info</strong></th>
+<th class="tableblock halign-left valign-top">Context Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Information returned in param_value</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_REFERENCE_COUNT"></a><a href="#CL_CONTEXT_REFERENCE_COUNT"><code>CL_&#8203;CONTEXT_&#8203;REFERENCE_&#8203;COUNT</code></a><sup>11</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_REFERENCE_COUNT"></a><a href="#CL_CONTEXT_REFERENCE_COUNT"><code>CL_CONTEXT_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_13" class="footnote" href="#_footnotedef_13" title="View footnote.">13</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the <em>context</em> reference count.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_NUM_DEVICES"></a><a href="#CL_CONTEXT_NUM_DEVICES"><code>CL_&#8203;CONTEXT_&#8203;NUM_&#8203;DEVICES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_NUM_DEVICES"></a><a href="#CL_CONTEXT_NUM_DEVICES"><code>CL_CONTEXT_<wbr>NUM_<wbr>DEVICES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the number of devices in <em>context</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_DEVICES"></a><a href="#CL_CONTEXT_DEVICES"><code>CL_&#8203;CONTEXT_&#8203;DEVICES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_id[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_DEVICES"></a><a href="#CL_CONTEXT_DEVICES"><code>CL_CONTEXT_<wbr>DEVICES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>id</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the list of devices and sub-devices in <em>context</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_PROPERTIES"></a><a href="#CL_CONTEXT_PROPERTIES"><code>CL_&#8203;CONTEXT_&#8203;PROPERTIES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context_properties[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CONTEXT_PROPERTIES"></a><a href="#CL_CONTEXT_PROPERTIES"><code>CL_CONTEXT_<wbr>PROPERTIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_context_<wbr>properties</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the properties argument specified in <a href="#clCreateContext"><strong>clCreateContext</strong></a> or
         <a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a>.</p>
 <p class="tableblock">        If the <em>properties</em> argument specified in <a href="#clCreateContext"><strong>clCreateContext</strong></a> or
-        <a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a> used to create <em>context</em> is not <code>NULL</code>, the
-        implementation must return the values specified in the properties
-        argument.</p>
+        <a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a> used to create <em>context</em> was not <code>NULL</code>,
+        the implementation must return the values specified in the
+        properties argument in the same order and without including
+        additional properties.</p>
 <p class="tableblock">        If the <em>properties</em> argument specified in <a href="#clCreateContext"><strong>clCreateContext</strong></a> or
-        <a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a> used to create <em>context</em> is <code>NULL</code>, the
-        implementation may return either a <em>param_value_size_ret</em> of 0
-        i.e. there is no context property value to be returned or can return
-        a context property value of 0 (where 0 is used to terminate the
-        context properties list) in the memory that <em>param_value</em> points
-        to.</p></td>
+        <a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a> used to create <em>context</em> was <code>NULL</code>, the
+        implementation must return <em>param_value_size_ret</em> equal to 0,
+        indicating that there are no properties to be returned.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">11</dt>
-<dd>
-<p>The reference count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for identifying memory leaks.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
-<p><a href="#clGetContextInfo"><strong>clGetContextInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetContextInfo"><strong>clGetContextInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not one of the supported values or
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not one of the supported values or
 if size in bytes specified by <em>param_value_size</em> is &lt; size of return
 type as specified in the <a href="#context-info-table">Context Attributes</a>
 table and <em>param_value</em> is not a <code>NULL</code> value.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
+required by the OpenCL implementation on the host.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>To register a callback function with a context that is called when
+the context is destroyed, call the function</p>
+</div>
+<div id="clSetContextDestructorCallback" class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="c++">cl_int clSetContextDestructorCallback(
+    cl_context context,
+    <span class="directive">void</span> (CL_CALLBACK* pfn_notify)(cl_context context, <span class="directive">void</span>* user_data),
+    <span class="directive">void</span>* user_data);</code></pre>
+</div>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<a href="#clSetContextDestructorCallback"><strong>clSetContextDestructorCallback</strong></a> is <a href="#unified-spec">missing before</a> version 3.0.
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><em>context</em> specifies the OpenCL context to register the callback to.</p>
+</li>
+<li>
+<p><em>pfn_notify</em> is the callback function to register.
+This callback function may be called asynchronously by the OpenCL
+implementation.
+It is the application&#8217;s responsibility to ensure that the callback function
+is thread-safe.
+The parameters to this callback function are:</p>
+<div class="ulist">
+<ul>
+<li>
+<p><em>context</em> is the OpenCL context being deleted.
+When the callback function is called by the implementation, this context
+is no longer valid.
+<em>context</em> is only provided for reference purposes.</p>
+</li>
+<li>
+<p><em>user_data</em> is a pointer to user-supplied data.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p><em>user_data</em> will be passed as the <em>user_data</em> argument when <em>pfn_notify</em> is
+called.
+<em>user_data</em> can be <code>NULL</code>.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Each call to <a href="#clSetContextDestructorCallback"><strong>clSetContextDestructorCallback</strong></a> registers the specified
+callback function on a destructor callback stack associated with <em>context</em>.
+The registered callback functions are called in the reverse order in
+which they were registered.
+If a context callback function was specified when <em>context</em> was created,
+it will not be called after any context destructor callback is called.
+Therefore, the context destructor callback provides a mechanism for an
+application to safely re-use or free any <em>user_data</em> specified for the
+context callback function when <em>context</em> was created.</p>
+</div>
+<div class="paragraph">
+<p><a href="#clSetContextDestructorCallback"><strong>clSetContextDestructorCallback</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is
+executed successfully.
+Otherwise, it returns one of the following errors:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+</li>
+<li>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code>.</p>
+</li>
+<li>
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
+by the OpenCL implementation on the device.</p>
+</li>
+<li>
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -8033,7 +8019,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="opencl-runtime">5. The OpenCL Runtime</h2>
+<h2 id="opencl-runtime"><a class="anchor" href="#opencl-runtime"></a>5. The OpenCL Runtime</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>In this section we describe the API calls that manage OpenCL objects such as
@@ -8043,7 +8029,7 @@
 object.</p>
 </div>
 <div class="sect2">
-<h3 id="_command_queues">5.1. Command Queues</h3>
+<h3 id="_command_queues"><a class="anchor" href="#_command_queues"></a>5.1. Command Queues</h3>
 <div class="paragraph">
 <p>OpenCL objects such as memory, program and kernel objects are created using
 a context.
@@ -8110,6 +8096,10 @@
 <em>properties</em> can be <code>NULL</code> in which case the default values for supported
 command-queue properties will be used.</p>
 </li>
+<li>
+<p><em>errcode_ret</em> will return an appropriate error code.
+If <em>errcode_ret</em> is <code>NULL</code>, no error code is returned.</p>
+</li>
 </ul>
 </div>
 <table id="queue-properties-table" class="tableblock frame-all grid-all stretch">
@@ -8121,82 +8111,58 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>Queue Properties</strong></th>
+<th class="tableblock halign-left valign-top">Queue Property</th>
 <th class="tableblock halign-left valign-top">Property Value</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_PROPERTIES"></a><a href="#CL_QUEUE_PROPERTIES"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bitfield</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_PROPERTIES"></a><a href="#CL_QUEUE_PROPERTIES"><code>CL_QUEUE_<wbr>PROPERTIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>queue_<wbr>properties</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This is a bitfield and can be set to a combination of the following
         values:</p>
-<p class="tableblock">        <a id="CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"></a><a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a> - Determines whether the
+<p class="tableblock">        <a id="CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"></a><a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a> - Determines whether the
         commands queued in the command-queue are executed in-order or
         out-of-order.
         If set, the commands in the command-queue are executed out-of-order.
         Otherwise, commands are executed in-order.</p>
-<p class="tableblock">        <a id="CL_QUEUE_PROFILING_ENABLE"></a><a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a> - Enable or disable profiling of commands
+<p class="tableblock">        <a id="CL_QUEUE_PROFILING_ENABLE"></a><a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a> - Enable or disable profiling of commands
         in the command-queue.
         If set, the profiling of commands is enabled.
         Otherwise profiling of commands is disabled.</p>
-<p class="tableblock">        <a id="CL_QUEUE_ON_DEVICE"></a><a href="#CL_QUEUE_ON_DEVICE"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE</code></a> - Indicates that this is a device queue.
-        If <a href="#CL_QUEUE_ON_DEVICE"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE</code></a> is set,
-        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a><sup>1</sup> must also be set.
+<p class="tableblock">        <a id="CL_QUEUE_ON_DEVICE"></a><a href="#CL_QUEUE_ON_DEVICE"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE</code></a> - Indicates that this is a device queue.
+        If <a href="#CL_QUEUE_ON_DEVICE"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE</code></a> is set,
+        <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a>
+        <sup class="footnote">[<a id="_footnoteref_14" class="footnote" href="#_footnotedef_14" title="View footnote.">14</a>]</sup>
+        must also be set.
 <a href="#unified-spec">Missing before</a> version 2.0.</p>
-<p class="tableblock">        <a id="CL_QUEUE_ON_DEVICE_DEFAULT"></a><a href="#CL_QUEUE_ON_DEVICE_DEFAULT"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;DEFAULT</code></a><sup>2</sup> - indicates that this is the default
-        device queue.
-        This can only be used with <a href="#CL_QUEUE_ON_DEVICE"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE</code></a>.
+<p class="tableblock">        <a id="CL_QUEUE_ON_DEVICE_DEFAULT"></a><a href="#CL_QUEUE_ON_DEVICE_DEFAULT"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>DEFAULT</code></a>
+        <sup class="footnote">[<a id="_footnoteref_15" class="footnote" href="#_footnotedef_15" title="View footnote.">15</a>]</sup> -
+        indicates that this is the default device queue.
+        This can only be used with <a href="#CL_QUEUE_ON_DEVICE"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE</code></a>.
 <a href="#unified-spec">Missing before</a> version 2.0.</p>
-<p class="tableblock">        If <a href="#CL_QUEUE_PROPERTIES"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES</code></a> is not specified an in-order host command
+<p class="tableblock">        If <a href="#CL_QUEUE_PROPERTIES"><code>CL_QUEUE_<wbr>PROPERTIES</code></a> is not specified an in-order host command
         queue is created for the specified device</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_SIZE"></a><a href="#CL_QUEUE_SIZE"><code>CL_&#8203;QUEUE_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_SIZE"></a><a href="#CL_QUEUE_SIZE"><code>CL_QUEUE_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the size of the device queue in bytes.</p>
-<p class="tableblock">        This can only be specified if <a href="#CL_QUEUE_ON_DEVICE"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE</code></a> is set in
-        <a href="#CL_QUEUE_PROPERTIES"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES</code></a>.
-        This must be a value ≤ <a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;MAX_&#8203;SIZE</code></a>.</p>
+<p class="tableblock">        This can only be specified if <a href="#CL_QUEUE_ON_DEVICE"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE</code></a> is set in
+        <a href="#CL_QUEUE_PROPERTIES"><code>CL_QUEUE_<wbr>PROPERTIES</code></a>.
+        This must be a value ≤ <a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>MAX_<wbr>SIZE</code></a>.</p>
 <p class="tableblock">        For best performance, this should be ≤
-        <a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;PREFERRED_&#8203;SIZE</code></a>.</p>
-<p class="tableblock">        If <a href="#CL_QUEUE_SIZE"><code>CL_&#8203;QUEUE_&#8203;SIZE</code></a> is not specified, the device queue is created with
-        <a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;PREFERRED_&#8203;SIZE</code></a> as the size of the queue.</p></td>
+        <a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>PREFERRED_<wbr>SIZE</code></a>.</p>
+<p class="tableblock">        If <a href="#CL_QUEUE_SIZE"><code>CL_QUEUE_<wbr>SIZE</code></a> is not specified, the device queue is created with
+        <a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>PREFERRED_<wbr>SIZE</code></a> as the size of the queue.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">1</dt>
-<dd>
-<p>Only out-of-order device queues are supported.</p>
-</dd>
-<dt class="hdlist1">2</dt>
-<dd>
-<p>The application must create the default device queue if any kernels
-containing calls to get_default_queue are enqueued.
-There can only be one default device queue for each device within a
-context.
-<a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a> with <a href="#CL_QUEUE_PROPERTIES"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES</code></a> set to
-<a href="#CL_QUEUE_ON_DEVICE"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE</code></a> or <a href="#CL_QUEUE_ON_DEVICE_DEFAULT"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;DEFAULT</code></a> will return the default
-device queue that has already been created and increment its retain
-count by 1.</p>
-<div class="ulist">
-<ul>
-<li>
-<p><em>errcode_ret</em> will return an appropriate error code.
-If <em>errcode_ret</em> is <code>NULL</code>, no error code is returned.</p>
-</li>
-</ul>
-</div>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
 <p><a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a> returns a valid non-zero command-queue
-and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the command-queue is created
+and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the command-queue is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -8204,25 +8170,25 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device or is not associated
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device or is not associated
 with <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>properties</em> are not valid.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>properties</em> are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_&#8203;INVALID_&#8203;QUEUE_&#8203;PROPERTIES</code></a> if values specified in <em>properties</em> are
+<p><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_INVALID_<wbr>QUEUE_<wbr>PROPERTIES</code></a> if values specified in <em>properties</em> are
 valid but are not supported by the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -8293,14 +8259,14 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Determines whether the commands queued in the command-queue are executed
     in-order or out-of-order.
     If set, the commands in the command-queue are executed out-of-order.
     Otherwise, commands are executed in-order.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Enable or disable profiling of commands in the command-queue.
     If set, the profiling of commands is enabled.
     Otherwise profiling of commands is disabled.</p></td>
@@ -8317,32 +8283,32 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateCommandQueue"><strong>clCreateCommandQueue</strong></a> returns a valid non-zero command-queue and <em>errcode_ret</em>
-is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the command-queue is created successfully.
+is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the command-queue is created successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device or is not associated
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device or is not associated
 with <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>properties</em> are not valid.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>properties</em> are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_&#8203;INVALID_&#8203;QUEUE_&#8203;PROPERTIES</code></a> if values specified in <em>properties</em> are
+<p><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_INVALID_<wbr>QUEUE_<wbr>PROPERTIES</code></a> if values specified in <em>properties</em> are
 valid but are not supported by the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -8391,35 +8357,35 @@
 <div class="paragraph">
 <p><a href="#clSetDefaultDeviceCommandQueue"><strong>clSetDefaultDeviceCommandQueue</strong></a> may be used to replace a default device
 command queue created with <a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a> and the
-<a href="#CL_QUEUE_ON_DEVICE_DEFAULT"><code>CL_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;DEFAULT</code></a> flag.</p>
+<a href="#CL_QUEUE_ON_DEVICE_DEFAULT"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>DEFAULT</code></a> flag.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clSetDefaultDeviceCommandQueue"><strong>clSetDefaultDeviceCommandQueue</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is
+<p><a href="#clSetDefaultDeviceCommandQueue"><strong>clSetDefaultDeviceCommandQueue</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is
 executed successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not a valid device or is not associated
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not a valid device or is not associated
 with <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>device</em> does not support On-Device Queues.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>device</em> does not support a replaceable default on-device queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid command-queue
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid command-queue
 for <em>device</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -8459,22 +8425,22 @@
 being valid.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainCommandQueue"><strong>clRetainCommandQueue</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clRetainCommandQueue"><strong>clRetainCommandQueue</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -8514,22 +8480,22 @@
 the object or by calling <a href="#clRetainCommandQueue"><strong>clRetainCommandQueue</strong></a> causes undefined behavior.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseCommandQueue"><strong>clReleaseCommandQueue</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseCommandQueue"><strong>clReleaseCommandQueue</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -8592,101 +8558,92 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_command_queue_info</strong></th>
+<th class="tableblock halign-left valign-top">Queue Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Information returned in param_value</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_CONTEXT"></a><a href="#CL_QUEUE_CONTEXT"><code>CL_&#8203;QUEUE_&#8203;CONTEXT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_CONTEXT"></a><a href="#CL_QUEUE_CONTEXT"><code>CL_QUEUE_<wbr>CONTEXT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_context</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the context specified when the command-queue is created.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_DEVICE"></a><a href="#CL_QUEUE_DEVICE"><code>CL_&#8203;QUEUE_&#8203;DEVICE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_id</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_DEVICE"></a><a href="#CL_QUEUE_DEVICE"><code>CL_QUEUE_<wbr>DEVICE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>id</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the device specified when the command-queue is created.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_REFERENCE_COUNT"></a><a href="#CL_QUEUE_REFERENCE_COUNT"><code>CL_&#8203;QUEUE_&#8203;REFERENCE_&#8203;COUNT</code></a><sup>3</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_REFERENCE_COUNT"></a><a href="#CL_QUEUE_REFERENCE_COUNT"><code>CL_QUEUE_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_16" class="footnote" href="#_footnotedef_16" title="View footnote.">16</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the command-queue reference count.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_PROPERTIES"></a><a href="#CL_QUEUE_PROPERTIES"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue_properties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_PROPERTIES"></a><a href="#CL_QUEUE_PROPERTIES"><code>CL_QUEUE_<wbr>PROPERTIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>queue_<wbr>properties</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the currently specified properties for the command-queue.
         These properties are specified by the value associated with the
-        <a href="#CL_QUEUE_PROPERTIES"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES</code></a> passed in <em>properties</em> argument in
+        <a href="#CL_QUEUE_PROPERTIES"><code>CL_QUEUE_<wbr>PROPERTIES</code></a> passed in <em>properties</em> argument in
         <a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a>, or the value of the <em>properties</em>
         argument in <a href="#clCreateCommandQueue"><strong>clCreateCommandQueue</strong></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_PROPERTIES_ARRAY"></a><a href="#CL_QUEUE_PROPERTIES_ARRAY"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES_&#8203;ARRAY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_PROPERTIES_ARRAY"></a><a href="#CL_QUEUE_PROPERTIES_ARRAY"><code>CL_QUEUE_<wbr>PROPERTIES_<wbr>ARRAY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_queue_properties[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_queue_<wbr>properties</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the properties argument specified in
         <a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a>.</p>
 <p class="tableblock">        If the <em>properties</em> argument specified in
-        <a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a> used to create <em>command_queue</em> was
-        not <code>NULL</code>, the implementation must return the values specified in the
-        properties argument.</p>
+        <a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a> used to create <em>command_queue</em>
+        was not <code>NULL</code>, the implementation must return the values specified in
+        the properties argument in the same order and without including
+        additional properties.</p>
 <p class="tableblock">        If <em>command_queue</em> was created using <a href="#clCreateCommandQueue"><strong>clCreateCommandQueue</strong></a>, or if the
         <em>properties</em> argument specified in clCreateCommandQueueWithProperties}
-        was <code>NULL</code>, the implementation may return either a
-        <em>param_value_size_ret</em> of 0 (i.e. there is are no properties to be
-        returned), or the implementation may return a property value of 0
-        (where 0 is used to terminate the properties list).</p></td>
+        was <code>NULL</code>, the implementation must return <em>param_value_size_ret</em>
+        equal to 0, indicating that there are no properties to be returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_SIZE"></a><a href="#CL_QUEUE_SIZE"><code>CL_&#8203;QUEUE_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_SIZE"></a><a href="#CL_QUEUE_SIZE"><code>CL_QUEUE_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Return the currently specified size for the device command-queue.
-        This query is only supported for device command queues.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return the size of the device command-queue.
+        To be considered valid for this query, <em>command_queue</em> must be a
+        device command-queue.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_DEVICE_DEFAULT"></a><a href="#CL_QUEUE_DEVICE_DEFAULT"><code>CL_&#8203;QUEUE_&#8203;DEVICE_&#8203;DEFAULT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_QUEUE_DEVICE_DEFAULT"></a><a href="#CL_QUEUE_DEVICE_DEFAULT"><code>CL_QUEUE_<wbr>DEVICE_<wbr>DEFAULT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>queue</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the current default command queue for the underlying device.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">3</dt>
-<dd>
-<p>The reference count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for identifying memory leaks.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
-<p><a href="#clGetCommandQueueInfo"><strong>clGetCommandQueueInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetCommandQueueInfo"><strong>clGetCommandQueueInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid
-command-queue.</p>
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid
+command-queue, or if <em>command_queue</em> is not a valid command-queue
+for <em>param_name</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not one of the supported values or
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not one of the supported values or
 if size in bytes specified by <em>param_value_size</em> is &lt; size of return
 type as specified in the <a href="#command-queue-param-table">Command Queue
 Parameter</a> table, and <em>param_value</em> is not a <code>NULL</code> value.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -8735,7 +8692,7 @@
 </li>
 <li>
 <p><em>enable</em> determines whether the values specified by <em>properties</em> are
-enabled (if <em>enable</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>) or disabled (if <em>enable</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>)
+enabled (if <em>enable</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>) or disabled (if <em>enable</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>)
 for the command-queue.</p>
 </li>
 <li>
@@ -8753,7 +8710,7 @@
 </td>
 <td class="content">
 <div class="paragraph">
-<p>Changing the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a> command-queue property
+<p>Changing the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a> command-queue property
 will cause the OpenCL implementation to block until all previously queued
 commands in <em>command_queue</em> have completed.  This can be an expensive operation
 and therefore changes to this property should only be done when absolutely
@@ -8764,20 +8721,20 @@
 </table>
 </div>
 <div class="paragraph">
-<p><a href="#clSetCommandQueueProperty"><strong>clSetCommandQueueProperty</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clSetCommandQueueProperty"><strong>clSetCommandQueueProperty</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid command-queue.</p>
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>properties</em> are not valid.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>properties</em> are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_&#8203;INVALID_&#8203;QUEUE_&#8203;PROPERTIES</code></a> if values specified in <em>properties</em> are
+<p><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_INVALID_<wbr>QUEUE_<wbr>PROPERTIES</code></a> if values specified in <em>properties</em> are
 valid but are not supported by the device.</p>
 </li>
 </ul>
@@ -8786,14 +8743,14 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_buffer_objects">5.2. Buffer Objects</h3>
+<h3 id="_buffer_objects"><a class="anchor" href="#_buffer_objects"></a>5.2. Buffer Objects</h3>
 <div class="paragraph">
 <p>A <em>buffer</em> object stores a one-dimensional collection of elements.
 Elements of a <em>buffer</em> object can be a scalar data type (such as an int,
 float), vector data type, or a user-defined structure.</p>
 </div>
 <div class="sect3">
-<h4 id="_creating_buffer_objects">5.2.1. Creating Buffer Objects</h4>
+<h4 id="_creating_buffer_objects"><a class="anchor" href="#_creating_buffer_objects"></a>5.2.1. Creating Buffer Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -8872,14 +8829,14 @@
 </div>
 <div class="paragraph">
 <p>If <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> is called with
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> set in its <em>flags</em> argument, the contents of the
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> set in its <em>flags</em> argument, the contents of the
 memory pointed to by <em>host_ptr</em> at the time of the <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> call
 define the initial contents of the buffer object.</p>
 </div>
 <div class="paragraph">
 <p>If <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> is called with a
 pointer returned by <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a> as its <em>host_ptr</em> argument, and
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> is set in its <em>flags</em> argument, <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> is set in its <em>flags</em> argument, <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or
 <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> will succeed and return a valid non-zero
 buffer object as long as the <em>size</em> argument is no larger than the
 <em>size</em> argument passed in the original <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a> call.
@@ -8891,7 +8848,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> and <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> returns a valid non-zero
-buffer object and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the buffer object
+buffer object and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the buffer object
 is created successfully.
 Otherwise, they return a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -8899,48 +8856,38 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROPERTY"><code>CL_&#8203;INVALID_&#8203;PROPERTY</code></a> if a property name in <em>properties</em> is not a
+<p><a href="#CL_INVALID_PROPERTY"><code>CL_INVALID_<wbr>PROPERTY</code></a> if a property name in <em>properties</em> is not a
 supported property name, if the value specified for a supported property
 name is not valid, or if the same property name is specified more than
 once.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>flags</em> are not valid as defined
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>flags</em> are not valid as defined
 in the <a href="#memory-flags-table">Memory Flags</a> table.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_BUFFER_SIZE"><code>CL_&#8203;INVALID_&#8203;BUFFER_&#8203;SIZE</code></a> if <em>size</em> is 0<sup>4</sup>.</p>
+<p><a href="#CL_INVALID_BUFFER_SIZE"><code>CL_INVALID_<wbr>BUFFER_<wbr>SIZE</code></a> if <em>size</em> is 0 or if <em>size</em> is greater than
+<a href="#CL_DEVICE_MAX_MEM_ALLOC_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>MEM_<wbr>ALLOC_<wbr>SIZE</code></a> for all devices in <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_HOST_PTR"><code>CL_&#8203;INVALID_&#8203;HOST_&#8203;PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or
-<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
-but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> are not set in <em>flags</em>.</p>
+<p><a href="#CL_INVALID_HOST_PTR"><code>CL_INVALID_<wbr>HOST_<wbr>PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or
+<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
+but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> are not set in <em>flags</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for buffer object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">4</dt>
-<dd>
-<p>Implementations may return <a href="#CL_INVALID_BUFFER_SIZE"><code>CL_&#8203;INVALID_&#8203;BUFFER_&#8203;SIZE</code></a> if size is greater
-than <a href="#CL_DEVICE_MAX_MEM_ALLOC_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;MEM_&#8203;ALLOC_&#8203;SIZE</code></a> value specified in the
-<a href="#device-queries-table">Device Queries</a> table for all devices in
-context.</p>
-</dd>
-</dl>
-</div>
 </li>
 </ul>
 </div>
@@ -8952,36 +8899,36 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_mem_flags</strong></th>
+<th class="tableblock halign-left valign-top">Memory Flags</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_READ_WRITE"></a><a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_READ_WRITE"></a><a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the memory object will be read
     and written by a kernel.
     This is the default.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_WRITE_ONLY"></a><a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_WRITE_ONLY"></a><a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the memory object will be
     written but not read by a kernel.</p>
-<p class="tableblock">    Reading from a buffer or image object created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a>
+<p class="tableblock">    Reading from a buffer or image object created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a>
     inside a kernel is undefined.</p>
-<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> and <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> are mutually exclusive.</p></td>
+<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> and <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> are mutually exclusive.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_READ_ONLY"></a><a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_READ_ONLY"></a><a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the memory object is a
     readonly memory object when used inside a kernel.</p>
-<p class="tableblock">    Writing to a buffer or image object created with <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> inside
+<p class="tableblock">    Writing to a buffer or image object created with <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> inside
     a kernel is undefined.</p>
-<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> and <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> are mutually
+<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> and <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> are mutually
     exclusive.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_USE_HOST_PTR"></a><a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_USE_HOST_PTR"></a><a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag is valid only if host_ptr is not <code>NULL</code>.
     If specified, it indicates that the application wants the OpenCL
     implementation to use memory referenced by host_ptr as the storage bits
@@ -8998,13 +8945,13 @@
     is considered to be undefined.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_ALLOC_HOST_PTR"></a><a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_ALLOC_HOST_PTR"></a><a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the application wants the OpenCL implementation
     to allocate memory from host accessible memory.</p>
-<p class="tableblock">    <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> are mutually exclusive.</p></td>
+<p class="tableblock">    <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> are mutually exclusive.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_COPY_HOST_PTR"></a><a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_COPY_HOST_PTR"></a><a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag is valid only if host_ptr is not <code>NULL</code>.
     If specified, it indicates that the application wants the OpenCL
     implementation to allocate memory for the memory object and copy the
@@ -9013,13 +8960,13 @@
     available for reuse by the application when the <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a>,
     <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a>, <a href="#clCreateImage"><strong>clCreateImage</strong></a>, <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>,
     <a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a>, or <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a> operation returns.</p>
-<p class="tableblock">    <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> are mutually exclusive.</p>
-<p class="tableblock">    <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> can be used with <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a> to
-    initialize the contents of the cl_mem object allocated using
+<p class="tableblock">    <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> are mutually exclusive.</p>
+<p class="tableblock">    <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> can be used with <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a> to
+    initialize the contents of the <code>cl_mem</code> object allocated using
     host-accessible (e.g. PCIe) memory.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_WRITE_ONLY"></a><a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_WRITE_ONLY"></a><a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the host will only write to the memory object
     (using OpenCL APIs that enqueue a write or a map for write).
@@ -9028,29 +8975,29 @@
     communicate with the host over a system bus such as PCIe).</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_READ_ONLY"></a><a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_READ_ONLY"></a><a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the host will only read
     the memory object (using OpenCL APIs that enqueue a read or a map for
     read).</p>
-<p class="tableblock">    <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> and <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> are mutually exclusive.</p></td>
+<p class="tableblock">    <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> and <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> are mutually exclusive.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_NO_ACCESS"></a><a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_NO_ACCESS"></a><a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the host will not read or
     write the memory object.</p>
-<p class="tableblock">    <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> or <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> and
-    <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> are mutually exclusive.</p></td>
+<p class="tableblock">    <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> or <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> and
+    <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> are mutually exclusive.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_KERNEL_READ_AND_WRITE"></a><a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_&#8203;MEM_&#8203;KERNEL_&#8203;READ_&#8203;AND_&#8203;WRITE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_KERNEL_READ_AND_WRITE"></a><a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_MEM_<wbr>KERNEL_<wbr>READ_<wbr>AND_<wbr>WRITE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag is only used by <a href="#clGetSupportedImageFormats"><strong>clGetSupportedImageFormats</strong></a> to query image
     formats that may be both read from and written to by the same kernel
     instance.
     To create a memory object that may be read from and written to use
-    <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>.</p></td>
+    <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>.</p></td>
 </tr>
 </tbody>
 </table>
@@ -9093,17 +9040,17 @@
 <p><em>flags</em> is a bit-field that is used to specify allocation and usage
 information about the sub-buffer memory object being created and is
 described in the <a href="#memory-flags-table">Memory Flags</a> table.
-If the <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>, <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a>, or <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> values are
+If the <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>, <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a>, or <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> values are
 not specified in <em>flags</em>, they are inherited from the corresponding memory
 access qualifiers associated with <em>buffer</em>.
-The <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a>, and <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a>
+The <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a>, and <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a>
 values cannot be specified in <em>flags</em> but are inherited from the
 corresponding memory access qualifiers associated with <em>buffer</em>.
-If <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> is specified in the memory access qualifier values
+If <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> is specified in the memory access qualifier values
 associated with <em>buffer</em> it does not imply any additional copies when the
 sub-buffer is created from <em>buffer</em>.
-If the <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a>, <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a>, or
-<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> values are not specified in <em>flags</em>, they are
+If the <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a>, <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a>, or
+<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> values are not specified in <em>flags</em>, they are
 inherited from the corresponding memory access qualifiers associated with
 <em>buffer</em>.</p>
 </li>
@@ -9124,18 +9071,18 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_buffer_create_type</strong></th>
+<th class="tableblock halign-left valign-top">Buffer Creation Type</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_BUFFER_CREATE_TYPE_REGION"></a><a href="#CL_BUFFER_CREATE_TYPE_REGION"><code>CL_&#8203;BUFFER_&#8203;CREATE_&#8203;TYPE_&#8203;REGION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_BUFFER_CREATE_TYPE_REGION"></a><a href="#CL_BUFFER_CREATE_TYPE_REGION"><code>CL_BUFFER_<wbr>CREATE_<wbr>TYPE_<wbr>REGION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Create a buffer object that represents a specific region in <em>buffer</em>.</p>
-<p class="tableblock">    <em>buffer_create_info</em> is a pointer to a <strong><a href="#cl_buffer_region">cl_buffer_region</a></strong> structure
+<p class="tableblock">    <em>buffer_create_info</em> is a pointer to a <a href="#cl_buffer_region"><code>cl_buffer_<wbr>region</code></a> structure
     specifying a region of the buffer.</p>
-<p class="tableblock">    If <em>buffer</em> is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, the <em>host_ptr</em>
+<p class="tableblock">    If <em>buffer</em> is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, the <em>host_ptr</em>
     associated with the buffer object returned is <em>host_ptr + origin</em>.</p>
 <p class="tableblock">    The buffer object returned references the data store allocated for
     buffer and points to the region specified by <em>buffer_create_info</em> in
@@ -9144,64 +9091,64 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>buffer</em> is not a valid buffer object or is a
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>buffer</em> is not a valid buffer object or is a
 sub-buffer object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>buffer</em> was created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> and
-<em>flags</em> specifies <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> or <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a>, or if <em>buffer</em>
-was created with <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> and <em>flags</em> specifies
-<a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a>, or if <em>flags</em> specifies
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>buffer</em> was created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> and
+<em>flags</em> specifies <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> or <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a>, or if <em>buffer</em>
+was created with <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> and <em>flags</em> specifies
+<a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a>, or if <em>flags</em> specifies
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>buffer</em> was created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> and
-<em>flags</em> specify <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a>, or if <em>buffer</em> was created with
-<a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> and <em>flags</em> specify <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a>, or if
-<em>buffer</em> was created with <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> and <em>flags</em> specify
-<a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> or <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>buffer</em> was created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> and
+<em>flags</em> specify <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a>, or if <em>buffer</em> was created with
+<a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> and <em>flags</em> specify <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a>, or if
+<em>buffer</em> was created with <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> and <em>flags</em> specify
+<a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> or <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the value specified in <em>buffer_create_type</em> is not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the value specified in <em>buffer_create_type</em> is not
 valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if value(s) specified in <em>buffer_create_info</em> (for a
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if value(s) specified in <em>buffer_create_info</em> (for a
 given <em>buffer_create_type</em>) is not valid or if <em>buffer_create_info</em> is
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for sub-buffer object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the region specified by the <strong><a href="#cl_buffer_region">cl_buffer_region</a></strong>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the region specified by the <a href="#cl_buffer_region"><code>cl_buffer_<wbr>region</code></a>
 structure passed in <em>buffer_create_info</em> is out of bounds in <em>buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_BUFFER_SIZE"><code>CL_&#8203;INVALID_&#8203;BUFFER_&#8203;SIZE</code></a> if the <em>size</em> field of the <strong><a href="#cl_buffer_region">cl_buffer_region</a></strong>
+<p><a href="#CL_INVALID_BUFFER_SIZE"><code>CL_INVALID_<wbr>BUFFER_<wbr>SIZE</code></a> if the <em>size</em> field of the <a href="#cl_buffer_region"><code>cl_buffer_<wbr>region</code></a>
 structure passed in <em>buffer_create_info</em> is 0.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if there are no devices in <em>context</em>
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if there are no devices in <em>context</em>
 associated with <em>buffer</em> for which the <em>origin</em> field of the
-<strong><a href="#cl_buffer_region">cl_buffer_region</a></strong> structure passed in <em>buffer_create_info</em> is
-aligned to the <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value.</p>
+<a href="#cl_buffer_region"><code>cl_buffer_<wbr>region</code></a> structure passed in <em>buffer_create_info</em> is
+aligned to the <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value.</p>
 </li>
 </ul>
 </div>
@@ -9229,7 +9176,7 @@
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The <strong>cl_buffer_region</strong> structure specifies a region of a buffer object:</p>
+<p>The <a href="#cl_buffer_region"><code>cl_buffer_<wbr>region</code></a> structure specifies a region of a buffer object:</p>
 </div>
 <div id="cl_buffer_region" class="listingblock">
 <div class="content">
@@ -9257,7 +9204,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_reading_writing_and_copying_buffer_objects">5.2.2. Reading, Writing and Copying Buffer Objects</h4>
+<h4 id="_reading_writing_and_copying_buffer_objects"><a class="anchor" href="#_reading_writing_and_copying_buffer_objects"></a>5.2.2. Reading, Writing and Copying Buffer Objects</h4>
 <div class="paragraph">
 <p>The following functions enqueue commands to read from a buffer object to
 host memory or write to a buffer object from host memory.</p>
@@ -9337,25 +9284,23 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular read / write
-command and can be used to query or queue a wait for this particular command
-to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this read / write command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_read</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> i.e. the read command is blocking,
+<p>If <em>blocking_read</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a> i.e. the read command is blocking,
 <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a> does not return until the buffer data has been read
 and copied into memory pointed to by <em>ptr</em>.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_read</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> i.e. the read command is non-blocking,
+<p>If <em>blocking_read</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a> i.e. the read command is non-blocking,
 <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a> queues a non-blocking read command and returns.
 The contents of the buffer that <em>ptr</em> points to cannot be used until the
 read command has completed.
@@ -9365,13 +9310,13 @@
 points to can be used by the application.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_write</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the write command is blocking and does not
+<p>If <em>blocking_write</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the write command is blocking and does not
 return until the command is complete, including transfer of the data.
 The memory pointed to by <em>ptr</em> can be reused by the application after the
 <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a> call returns.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_write</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, the OpenCL implementation will use <em>ptr</em> to
+<p>If <em>blocking_write</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>, the OpenCL implementation will use <em>ptr</em> to
 perform a non-blocking write.
 As the write is non-blocking the implementation can return immediately.
 The memory pointed to by <em>ptr</em> cannot be reused by the application after the
@@ -9382,67 +9327,67 @@
 then be reused by the application.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a> and <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a> return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the
+<p><a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a> and <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a> return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the
 function is executed successfully.
 Otherwise, they return one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 <em>buffer</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the region being read or written specified by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the region being read or written specified by
 (<em>offset</em>, <em>size</em>) is out of bounds or if <em>ptr</em> is a <code>NULL</code> value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
 <em>offset</em> specified when the sub-buffer object is created is not aligned
-to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated with
+to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated with
 <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the read and write
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the read and write
 operations are blocking and the execution status of any of the events in
 <em>event_wait_list</em> is a negative integer value.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a> is called on <em>buffer</em>
-which has been created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> or
-<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a> is called on <em>buffer</em>
+which has been created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> or
+<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a> is called on <em>buffer</em>
-which has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> or
-<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a> is called on <em>buffer</em>
+which has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> or
+<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -9598,25 +9543,23 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular read / write
-command and can be used to query or queue a wait for this particular command
-to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this read / write command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_read</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> i.e. the read command is blocking,
+<p>If <em>blocking_read</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a> i.e. the read command is blocking,
 <a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a> does not return until the buffer data has been
 read and copied into memory pointed to by <em>ptr</em>.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_read</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> i.e. the read command is non-blocking,
+<p>If <em>blocking_read</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a> i.e. the read command is non-blocking,
 <a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a> queues a non-blocking read command and returns.
 The contents of the buffer that <em>ptr</em> points to cannot be used until the
 read command has completed.
@@ -9626,13 +9569,13 @@
 points to can be used by the application.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_write</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the write command is blocking and does not
+<p>If <em>blocking_write</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the write command is blocking and does not
 return until the command is complete, including transfer of the data.
 The memory pointed to by <em>ptr</em> can be reused by the application after the
 <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a> call returns.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_write</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, the OpenCL implementation will use <em>ptr</em> to
+<p>If <em>blocking_write</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>, the OpenCL implementation will use <em>ptr</em> to
 perform a non-blocking write.
 As the write is non-blocking the implementation can return immediately.
 The memory pointed to by <em>ptr</em> cannot be reused by the application after the
@@ -9643,92 +9586,92 @@
 then be reused by the application.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a> and <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a> return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a>
+<p><a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a> and <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a> return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a>
 if the function is executed successfully.
 Otherwise, they return one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 <em>buffer</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the region being read or written specified by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the region being read or written specified by
 (<em>buffer_origin</em>, <em>region</em>, <em>buffer_row_pitch</em>, <em>buffer_slice_pitch</em>) is
 out of bounds.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>ptr</em> is a <code>NULL</code> value.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>ptr</em> is a <code>NULL</code> value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if any <em>region</em> array element is 0.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if any <em>region</em> array element is 0.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>buffer_row_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>buffer_row_pitch</em> is not 0 and is less than
 <em>region</em>[0].</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>host_row_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>host_row_pitch</em> is not 0 and is less than
 <em>region</em>[0].</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>buffer_slice_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>buffer_slice_pitch</em> is not 0 and is less than
 <em>region</em>[1] × <em>buffer_row_pitch</em> and not a multiple of
 <em>buffer_row_pitch</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>host_slice_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>host_slice_pitch</em> is not 0 and is less than
 <em>region</em>[1] × <em>host_row_pitch</em> and not a multiple of
 <em>host_row_pitch</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
 <em>offset</em> specified when the sub-buffer object is created is not aligned
-to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated with
+to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated with
 <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the read and write
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the read and write
 operations are blocking and the execution status of any of the events in
 <em>event_wait_list</em> is a negative integer value.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a> is called on <em>buffer</em>
-which has been created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> or
-<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a> is called on <em>buffer</em>
+which has been created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> or
+<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a> is called on <em>buffer</em>
-which has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> or
-<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a> is called on <em>buffer</em>
+which has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> or
+<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -9744,7 +9687,7 @@
 <p>Calling <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a> to read a region of the buffer object with the
 <em>ptr</em> argument value set to <em>host_ptr</em> + <em>offset</em>, where <em>host_ptr</em> is a
 pointer to the memory region specified when the buffer object being read is
-created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, must meet the following requirements in
+created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, must meet the following requirements in
 order to avoid undefined behavior:</p>
 </div>
 <div class="ulist">
@@ -9770,14 +9713,14 @@
 the <em>ptr</em> argument value set to <em>host_ptr</em> and <em>host_origin</em>,
 <em>buffer_origin</em> values are the same, where <em>host_ptr</em> is a pointer to the
 memory region specified when the buffer object being read is created with
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, must meet the same requirements given above for
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, must meet the same requirements given above for
 <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a>.</p>
 </div>
 <div class="paragraph">
 <p>Calling <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a> to update the latest bits in a region of the
 buffer object with the <em>ptr</em> argument value set to <em>host_ptr</em> + <em>offset</em>,
 where <em>host_ptr</em> is a pointer to the memory region specified when the buffer
-object being written is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, must meet the
+object being written is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, must meet the
 following requirements in order to avoid undefined behavior:</p>
 </div>
 <div class="ulist">
@@ -9802,7 +9745,7 @@
 the buffer object with the <em>ptr</em> argument value set to <em>host_ptr</em> and
 <em>host_origin</em>, <em>buffer_origin</em> values are the same, where <em>host_ptr</em> is a
 pointer to the memory region specified when the buffer object being written
-is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, must meet the following requirements in
+is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, must meet the following requirements in
 order to avoid undefined behavior:</p>
 </div>
 <div class="ulist">
@@ -9883,67 +9826,64 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular copy command
-and can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this copy command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueCopyBuffer"><strong>clEnqueueCopyBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueCopyBuffer"><strong>clEnqueueCopyBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em>,
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em>,
 <em>src_buffer</em> and <em>dst_buffer</em> are not the same or if the context
 associated with <em>command_queue</em> and events in <em>event_wait_list</em> are not
 the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are not valid
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are not valid
 buffer objects.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>src_offset</em>, <em>dst_offset</em>, <em>size</em>, <em>src_offset</em>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>src_offset</em>, <em>dst_offset</em>, <em>size</em>, <em>src_offset</em>
 +  <em>size</em> or <em>dst_offset</em> + <em>size</em> require accessing elements
 outside the <em>src_buffer</em> and <em>dst_buffer</em> buffer objects respectively.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>src_buffer</em> is a sub-buffer object
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>src_buffer</em> is a sub-buffer object
 and <em>offset</em> specified when the sub-buffer object is created is not
-aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated
+aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated
 with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>dst_buffer</em> is a sub-buffer object
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>dst_buffer</em> is a sub-buffer object
 and <em>offset</em> specified when the sub-buffer object is created is not
-aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated
+aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated
 with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;OVERLAP</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are the same buffer
+<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_MEM_<wbr>COPY_<wbr>OVERLAP</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are the same buffer
 or sub-buffer object and the source and destination regions overlap or
 if <em>src_buffer</em> and <em>dst_buffer</em> are different sub-buffers of the same
 associated buffer object and they overlap.
@@ -9952,15 +9892,15 @@
 <em>dst_offset</em> + <em>size</em> 1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>src_buffer</em> or <em>dst_buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -10072,16 +10012,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular copy command
-and can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this copy command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -10113,66 +10050,66 @@
 </table>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueCopyBufferRect"><strong>clEnqueueCopyBufferRect</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueCopyBufferRect"><strong>clEnqueueCopyBufferRect</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em>,
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em>,
 <em>src_buffer</em> and <em>dst_buffer</em> are not the same or if the context
 associated with <em>command_queue</em> and events in <em>event_wait_list</em> are not
 the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are not valid
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are not valid
 buffer objects.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if (<em>src_origin, region, src_row_pitch,
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if (<em>src_origin, region, src_row_pitch,
 src_slice_pitch</em>) or (<em>dst_origin, region, dst_row_pitch,
 dst_slice_pitch</em>) require accessing elements outside the <em>src_buffer</em>
 and <em>dst_buffer</em> buffer objects respectively.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if any <em>region</em> array element is 0.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if any <em>region</em> array element is 0.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>src_row_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>src_row_pitch</em> is not 0 and is less than
 <em>region</em>[0].</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>dst_row_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>dst_row_pitch</em> is not 0 and is less than
 <em>region</em>[0].</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>src_slice_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>src_slice_pitch</em> is not 0 and is less than
 <em>region</em>[1] × <em>src_row_pitch</em> or if <em>src_slice_pitch</em> is not 0 and
 is not a multiple of <em>src_row_pitch</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>dst_slice_pitch</em> is not 0 and is less than
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>dst_slice_pitch</em> is not 0 and is less than
 <em>region</em>[1] × <em>dst_row_pitch</em> or if <em>dst_slice_pitch</em> is not 0 and
 is not a multiple of <em>dst_row_pitch</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are the same buffer
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are the same buffer
 object and <em>src_slice_pitch</em> is not equal to <em>dst_slice_pitch</em> and
 <em>src_row_pitch</em> is not equal to <em>dst_row_pitch</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;OVERLAP</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are the same buffer
+<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_MEM_<wbr>COPY_<wbr>OVERLAP</code></a> if <em>src_buffer</em> and <em>dst_buffer</em> are the same buffer
 or sub-buffer object and the source and destination regions overlap or
 if <em>src_buffer</em> and <em>dst_buffer</em> are different sub-buffers of the same
 associated buffer object and they overlap.
@@ -10180,29 +10117,29 @@
 details on how to determine if source and destination regions overlap.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>src_buffer</em> is a sub-buffer object
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>src_buffer</em> is a sub-buffer object
 and <em>offset</em> specified when the sub-buffer object is created is not
-aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated
+aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated
 with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>dst_buffer</em> is a sub-buffer object
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>dst_buffer</em> is a sub-buffer object
 and <em>offset</em> specified when the sub-buffer object is created is not
-aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated
+aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated
 with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>src_buffer</em> or <em>dst_buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -10211,7 +10148,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_filling_buffer_objects">5.2.3. Filling Buffer Objects</h4>
+<h4 id="_filling_buffer_objects"><a class="anchor" href="#_filling_buffer_objects"></a>5.2.3. Filling Buffer Objects</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -10307,78 +10244,75 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
 <p>The usage information which indicates whether the memory object can be read
-or written by a kernel and/or the host and is given by the cl_mem_flags
+or written by a kernel and/or the host and is given by the <code>cl_mem_<wbr>flags</code>
 argument value specified when <em>buffer</em> is created is ignored by
 <a href="#clEnqueueFillBuffer"><strong>clEnqueueFillBuffer</strong></a>.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueFillBuffer"><strong>clEnqueueFillBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueFillBuffer"><strong>clEnqueueFillBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 <em>buffer</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>offset</em> or <em>offset</em> + <em>size</em> require accessing
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>offset</em> or <em>offset</em> + <em>size</em> require accessing
 elements outside the <em>buffer</em> buffer object respectively.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pattern</em> is <code>NULL</code> or if <em>pattern_size</em> is 0 or if
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pattern</em> is <code>NULL</code> or if <em>pattern_size</em> is 0 or if
 <em>pattern_size</em> is not one of { 1, 2, 4, 8, 16, 32, 64, 128 }.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>offset</em> and <em>size</em> are not a multiple of
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>offset</em> and <em>size</em> are not a multiple of
 <em>pattern_size</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
 offset specified when the sub-buffer object is created is not aligned to
-<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated with <em>queue</em>.
+<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -10387,7 +10321,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_mapping_buffer_objects">5.2.4. Mapping Buffer Objects</h4>
+<h4 id="_mapping_buffer_objects"><a class="anchor" href="#_mapping_buffer_objects"></a>5.2.4. Mapping Buffer Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -10422,13 +10356,13 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_map</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> does not return until the
+<p>If <em>blocking_map</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> does not return until the
 specified region in <em>buffer</em> is mapped into the host address space and the
 application can access the contents of the mapped region using the pointer
 returned by <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a>.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_map</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> i.e. map operation is non-blocking, the
+<p>If <em>blocking_map</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a> i.e. map operation is non-blocking, the
 pointer to the mapped region returned by <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> cannot be used
 until the map command has completed.
 The <em>event</em> argument returns an event object which can be used to query the
@@ -10467,15 +10401,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 <li>
 <p><em>errcode_ret</em> will return an appropriate error code.
@@ -10485,7 +10417,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> will return a pointer to the mapped region.
-The <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a>.</p>
+The <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>A <code>NULL</code> pointer is returned otherwise with one of the following error
@@ -10494,68 +10426,68 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and
 <em>buffer</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>buffer</em> is not a valid buffer object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if region being mapped given by (<em>offset</em>, <em>size</em>) is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if region being mapped given by (<em>offset</em>, <em>size</em>) is
 out of bounds or if <em>size</em> is 0 or if values specified in <em>map_flags</em>
 are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>buffer</em> is a sub-buffer object and
 <em>offset</em> specified when the sub-buffer object is created is not aligned
-to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for the device associated with
+to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for the device associated with
 <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MAP_FAILURE"><code>CL_&#8203;MAP_&#8203;FAILURE</code></a> if there is a failure to map the requested region into
+<p><a href="#CL_MAP_FAILURE"><code>CL_MAP_<wbr>FAILURE</code></a> if there is a failure to map the requested region into
 the host address space.
 This error cannot occur for buffer objects created with
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a>.</p>
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the map operation is
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the map operation is
 blocking and the execution status of any of the events in
 <em>event_wait_list</em> is a negative integer value.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>buffer</em> has been created with
-<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> and <a href="#CL_MAP_READ"><code>CL_&#8203;MAP_&#8203;READ</code></a> is set
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>buffer</em> has been created with
+<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> and <a href="#CL_MAP_READ"><code>CL_MAP_<wbr>READ</code></a> is set
 in <em>map_flags</em> or if <em>buffer</em> has been created with
-<a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> and <a href="#CL_MAP_WRITE"><code>CL_&#8203;MAP_&#8203;WRITE</code></a> or
-<a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_&#8203;MAP_&#8203;WRITE_&#8203;INVALIDATE_&#8203;REGION</code></a> is set in <em>map_flags</em>.</p>
+<a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> and <a href="#CL_MAP_WRITE"><code>CL_MAP_<wbr>WRITE</code></a> or
+<a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_MAP_<wbr>WRITE_<wbr>INVALIDATE_<wbr>REGION</code></a> is set in <em>map_flags</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if mapping would lead to overlapping regions being
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if mapping would lead to overlapping regions being
 mapped for writing.</p>
 </li>
 </ul>
@@ -10566,7 +10498,7 @@
 The result of a memory access outside this region is undefined.</p>
 </div>
 <div class="paragraph">
-<p>If the buffer object is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> set in <em>mem_flags</em>,
+<p>If the buffer object is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> set in <em>mem_flags</em>,
 the following will be true:</p>
 </div>
 <div class="ulist">
@@ -10595,13 +10527,13 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_map_flags</strong></th>
+<th class="tableblock halign-left valign-top">Map Flags</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_READ"></a><a href="#CL_MAP_READ"><code>CL_&#8203;MAP_&#8203;READ</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_READ"></a><a href="#CL_MAP_READ"><code>CL_MAP_<wbr>READ</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the region being mapped in the memory object is
     being mapped for reading.</p>
 <p class="tableblock">    The pointer returned by <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> (<a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>) is
@@ -10609,7 +10541,7 @@
     the <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> (<a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>) command has completed.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_WRITE"></a><a href="#CL_MAP_WRITE"><code>CL_&#8203;MAP_&#8203;WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_WRITE"></a><a href="#CL_MAP_WRITE"><code>CL_MAP_<wbr>WRITE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the region being mapped in the memory object is
     being mapped for writing.</p>
 <p class="tableblock">    The pointer returned by <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> (<a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>) is
@@ -10617,7 +10549,7 @@
     the <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> (<a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>) command has completed</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_WRITE_INVALIDATE_REGION"></a><a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_&#8203;MAP_&#8203;WRITE_&#8203;INVALIDATE_&#8203;REGION</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_WRITE_INVALIDATE_REGION"></a><a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_MAP_<wbr>WRITE_<wbr>INVALIDATE_<wbr>REGION</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the region being mapped in the memory object is
     being mapped for writing.</p>
@@ -10628,7 +10560,7 @@
     pointer returned by <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> (<a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>) contains
     the latest bits in the region being mapped which can be a significant
     performance enhancement.</p>
-<p class="tableblock">    <a href="#CL_MAP_READ"><code>CL_&#8203;MAP_&#8203;READ</code></a> or <a href="#CL_MAP_WRITE"><code>CL_&#8203;MAP_&#8203;WRITE</code></a> and <a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_&#8203;MAP_&#8203;WRITE_&#8203;INVALIDATE_&#8203;REGION</code></a> are
+<p class="tableblock">    <a href="#CL_MAP_READ"><code>CL_MAP_<wbr>READ</code></a> or <a href="#CL_MAP_WRITE"><code>CL_MAP_<wbr>WRITE</code></a> and <a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_MAP_<wbr>WRITE_<wbr>INVALIDATE_<wbr>REGION</code></a> are
     mutually exclusive.</p></td>
 </tr>
 </tbody>
@@ -10638,7 +10570,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_image_objects">5.3. Image Objects</h3>
+<h3 id="_image_objects"><a class="anchor" href="#_image_objects"></a>5.3. Image Objects</h3>
 <div class="paragraph">
 <p>An <em>image</em> object is used to store a one-, two- or three-dimensional
 texture, frame-buffer or image.
@@ -10647,7 +10579,7 @@
 The minimum number of elements in a memory object is one.</p>
 </div>
 <div class="sect3">
-<h4 id="_creating_image_objects">5.3.1. Creating Image Objects</h4>
+<h4 id="_creating_image_objects"><a class="anchor" href="#_creating_image_objects"></a>5.3.1. Creating Image Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -10738,8 +10670,6 @@
 <li>
 <p><em>host_ptr</em> is a pointer to the image data that may already be allocated by
 the application.
-It is only used to initialize the image, and can be freed after the call to
-<a href="#clCreateImage"><strong>clCreateImage</strong></a> or <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>.
 Refer to the <a href="#host-ptr-buffer-size-table">table below</a> for a description
 of how large the buffer that <em>host_ptr</em> points to must be.</p>
 </li>
@@ -10754,23 +10684,23 @@
 in <a href="#alignment-app-data-types">Alignment of Application Data Types</a>.</p>
 </div>
 <div class="paragraph">
-<p>For all image types except <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;BUFFER</code></a>, if the value
-specified for <em>flags</em> is 0, the default is used which is <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>.</p>
+<p>For all image types except <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>BUFFER</code></a>, if the value
+specified for <em>flags</em> is 0, the default is used which is <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>.</p>
 </div>
 <div class="paragraph">
-<p>For <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;BUFFER</code></a> image type, or an image created from
-another memory object (image or buffer), if the <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>,
-<a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> values are not specified in <em>flags</em>,
+<p>For <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>BUFFER</code></a> image type, or an image created from
+another memory object (image or buffer), if the <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>,
+<a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> values are not specified in <em>flags</em>,
 they are inherited from the corresponding memory access qualifiers associated
 with <em>mem_object</em>.
-The <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a> and <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a>
+The <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a> and <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a>
 values cannot be specified in <em>flags</em> but are inherited from the
 corresponding memory access qualifiers associated with <em>mem_object</em>.
-If <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> is specified in the memory access qualifier values
+If <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> is specified in the memory access qualifier values
 associated with <em>mem_object</em> it does not imply any additional copies when
 the image is created from <em>mem_object</em>.
-If the <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a>, <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> or
-<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> values are not specified in <em>flags</em>, they are
+If the <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a>, <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> or
+<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> values are not specified in <em>flags</em>, they are
 inherited from the corresponding memory access qualifiers associated with
 <em>mem_object</em>.</p>
 </div>
@@ -10802,7 +10732,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateImage"><strong>clCreateImage</strong></a> and <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a> returns a valid non-zero
-image object and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the image object
+image object and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the image object
 is created successfully.
 Otherwise, they return a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -10810,81 +10740,82 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROPERTY"><code>CL_&#8203;INVALID_&#8203;PROPERTY</code></a> if a property name in <em>properties</em> is not a
+<p><a href="#CL_INVALID_PROPERTY"><code>CL_INVALID_<wbr>PROPERTY</code></a> if a property name in <em>properties</em> is not a
 supported property name, if the value specified for a supported property
 name is not valid, or if the same property name is specified more than
 once.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>flags</em> are not valid.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>flags</em> are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;FORMAT_&#8203;DESCRIPTOR</code></a> if values specified in <em>image_format</em>
+<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>FORMAT_<wbr>DESCRIPTOR</code></a> if values specified in <em>image_format</em>
 are not valid or if <em>image_format</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;FORMAT_&#8203;DESCRIPTOR</code></a> if a 2D image is created from a
+<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>FORMAT_<wbr>DESCRIPTOR</code></a> if a 2D image is created from a
 buffer and the row pitch and base address alignment does not follow the
 rules described for creating a 2D image from a buffer.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;FORMAT_&#8203;DESCRIPTOR</code></a> if a 2D image is created from a 2D
+<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>FORMAT_<wbr>DESCRIPTOR</code></a> if a 2D image is created from a 2D
 image object and the rules described above are not followed.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;DESCRIPTOR</code></a> if values specified in <em>image_desc</em> are not
+<p><a href="#CL_INVALID_IMAGE_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>DESCRIPTOR</code></a> if values specified in <em>image_desc</em> are not
 valid or if <em>image_desc</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if image dimensions specified in <em>image_desc</em>
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if image dimensions specified in <em>image_desc</em>
 exceed the maximum image dimensions described in the
 <a href="#device-queries-table">Device Queries</a> table for all devices
 in <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_HOST_PTR"><code>CL_&#8203;INVALID_&#8203;HOST_&#8203;PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or
-<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
-but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> are not set in <em>flags</em>.</p>
+<p><a href="#CL_INVALID_HOST_PTR"><code>CL_INVALID_<wbr>HOST_<wbr>PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or
+<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
+but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> are not set in <em>flags</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if an image is being created from another memory object
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if an image is being created from another memory object
 (buffer or image) under one of the following circumstances: 1)
-<em>mem_object</em> was created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> and <em>flags</em> specifies
-<a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> or <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a>, 2) <em>mem_object</em> was created with
-<a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> and <em>flags</em> specifies <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> or
-<a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a>, 3) <em>flags</em> specifies <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or
-<a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a>.</p>
+<em>mem_object</em> was created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> and <em>flags</em> specifies
+<a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> or <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a>, 2) <em>mem_object</em> was created with
+<a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> and <em>flags</em> specifies <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> or
+<a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a>, 3) <em>flags</em> specifies <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or
+<a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if an image is being created from another memory object
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if an image is being created from another memory object
 (buffer or image) and <em>mem_object</em> was created with
-<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> and <em>flags</em> specifies <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a>, or
-if <em>mem_object</em> was created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> and <em>flags</em>
-specifies <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a>, or if <em>mem_object</em> was created with
-<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> and_flags_ specifies <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> or
-<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a>.</p>
+<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> and <em>flags</em> specifies <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a>, or
+if <em>mem_object</em> was created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> and <em>flags</em>
+specifies <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a>, or if <em>mem_object</em> was created with
+<a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> and_flags_ specifies <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> or
+<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if the <em>image_format</em> is not supported.</p>
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if there are no devices in <em>context</em> that
+support <em>image_format</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for image object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if there are no devices in <em>context</em> that support
-images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if there are no devices in <em>context</em> that support
+images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -10903,30 +10834,30 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE1D"></a><a href="#CL_MEM_OBJECT_IMAGE1D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE1D"></a><a href="#CL_MEM_OBJECT_IMAGE1D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">≥ image_row_pitch</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE1D_BUFFER"></a><a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;BUFFER</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE1D_BUFFER"></a><a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>BUFFER</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">≥ image_row_pitch</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE2D"></a><a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE2D"></a><a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">≥ image_row_pitch × image_height</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE3D"></a><a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE3D</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE3D"></a><a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE3D</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">≥ image_slice_pitch × image_depth</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE1D_ARRAY"></a><a href="#CL_MEM_OBJECT_IMAGE1D_ARRAY"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;ARRAY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE1D_ARRAY"></a><a href="#CL_MEM_OBJECT_IMAGE1D_ARRAY"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>ARRAY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">≥ image_slice_pitch × image_array_size</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE2D_ARRAY"></a><a href="#CL_MEM_OBJECT_IMAGE2D_ARRAY"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D_&#8203;ARRAY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_IMAGE2D_ARRAY"></a><a href="#CL_MEM_OBJECT_IMAGE2D_ARRAY"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D_<wbr>ARRAY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">≥ image_slice_pitch × image_array_size</p></td>
 </tr>
@@ -10975,7 +10906,7 @@
 information about the image memory object being created and is described in
 the <a href="#memory-flags-table">supported memory flag values</a> table.
 If the value specified for <em>flags</em> is 0, the default is used which is
-<a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>.</p>
+<a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>.</p>
 </li>
 <li>
 <p><em>image_format</em> is a pointer to a structure that describes format properties
@@ -11000,9 +10931,7 @@
 <li>
 <p><em>host_ptr</em> is a pointer to the image data that may already be allocated by
 the application.
-It is only used to initialize the image, and can be freed after the call to
-<a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a>.
-Refer to the <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D</code></a> entry in the
+Refer to the <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a> entry in the
 <a href="#host-ptr-buffer-size-table">required <em>host_ptr</em> buffer size table</a> for a
 description of how large the buffer that <em>host_ptr</em> points to must be.
 The image data specified by <em>host_ptr</em> is stored as a linear sequence of
@@ -11019,7 +10948,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a> returns a valid non-zero image object created and the
-<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the image object is created
+<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the image object is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -11027,45 +10956,46 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>flags</em> are not valid.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>flags</em> are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;FORMAT_&#8203;DESCRIPTOR</code></a> if values specified in <em>image_format</em>
+<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>FORMAT_<wbr>DESCRIPTOR</code></a> if values specified in <em>image_format</em>
 are not valid or if <em>image_format</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if <em>image_width</em> or <em>image_height</em> are 0 or if they
-exceed the maximum values specified in <a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;WIDTH</code></a> or
-<a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;HEIGHT</code></a> respectively for all devices in <em>context</em> or
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if <em>image_width</em> or <em>image_height</em> are 0 or if they
+exceed the maximum values specified in <a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>WIDTH</code></a> or
+<a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>HEIGHT</code></a> respectively for all devices in <em>context</em> or
 if values specified by <em>image_row_pitch</em> do not follow rules described in the
 argument description above.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_HOST_PTR"><code>CL_&#8203;INVALID_&#8203;HOST_&#8203;PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or
-<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
-but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> are not set in <em>flags</em>.</p>
+<p><a href="#CL_INVALID_HOST_PTR"><code>CL_INVALID_<wbr>HOST_<wbr>PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or
+<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
+but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> are not set in <em>flags</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if the <em>image_format</em> is not supported.</p>
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if there are no devices in <em>context</em> that
+support <em>image_format</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for image object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if there are no devices in <em>context</em> that support
-images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if there are no devices in <em>context</em> that support
+images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -11115,7 +11045,7 @@
 information about the image memory object being created and is described in
 the <a href="#memory-flags-table">supported memory flag values</a> table.
 If the value specified for <em>flags</em> is 0, the default is used which is
-<a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>.</p>
+<a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>.</p>
 </li>
 <li>
 <p><em>image_format</em> is a pointer to a structure that describes format properties
@@ -11129,8 +11059,8 @@
 These must be values greater than or equal to 1.</p>
 </li>
 <li>
-<p><em>image_depth</em> is the depth of the image in pixels.  This must be a value
-> 1.</p>
+<p><em>image_depth</em> is the depth of the image in pixels.  For <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>,
+this must be a value > 1.</p>
 </li>
 <li>
 <p><em>image_row_pitch</em> is the  scan-line pitch in bytes.
@@ -11154,9 +11084,7 @@
 <li>
 <p><em>host_ptr</em> is a pointer to the image data that may already be allocated by
 the application.
-It is only used to initialize the image, and can be freed after the call to
-<a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>.
-Refer to the <a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE3D</code></a> entry in the
+Refer to the <a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE3D</code></a> entry in the
 <a href="#host-ptr-buffer-size-table">required <em>host_ptr</em> buffer size table</a> for a
 description of how large the buffer that <em>host_ptr</em> points to must be.
 The image data specified by <em>host_ptr</em> is stored as a linear sequence of
@@ -11173,7 +11101,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a> returns a valid non-zero image object created and the
-<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the image object is created
+<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the image object is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -11181,46 +11109,47 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>flags</em> are not valid.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>flags</em> are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;FORMAT_&#8203;DESCRIPTOR</code></a> if values specified in <em>image_format</em>
+<p><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>FORMAT_<wbr>DESCRIPTOR</code></a> if values specified in <em>image_format</em>
 are not valid or if <em>image_format</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if <em>image_width</em> or <em>image_height</em> are 0 or if
-<em>image_depth</em> ≤ 1 or if they exceed the maximum values specified in
-<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a> or
-<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a> respectively for all devices in <em>context</em> or
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if <em>image_width</em> or <em>image_height</em> are 0 or if
+<em>image_depth</em> ≤ 1, or if they exceed the maximum values specified in
+<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a> or
+<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a> respectively for all devices in <em>context</em>, or
 if values specified by <em>image_row_pitch</em> and <em>image_slice_pitch</em> do not
 follow rules described in the argument description above.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_HOST_PTR"><code>CL_&#8203;INVALID_&#8203;HOST_&#8203;PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or
-<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
-but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> are not set in <em>flags</em>.</p>
+<p><a href="#CL_INVALID_HOST_PTR"><code>CL_INVALID_<wbr>HOST_<wbr>PTR</code></a> if <em>host_ptr</em> is <code>NULL</code> and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or
+<a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> are set in <em>flags</em> or if <em>host_ptr</em> is not <code>NULL</code>
+but <a href="#CL_MEM_COPY_HOST_PTR"><code>CL_MEM_<wbr>COPY_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> are not set in <em>flags</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if the <em>image_format</em> is not supported.</p>
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if there are no devices in <em>context</em> that
+support <em>image_format</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for image object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if there are no devices in <em>context</em> that support
-images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if there are no devices in <em>context</em> that support
+images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -11228,11 +11157,11 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="image-format-descriptor">Image Format Descriptor</h5>
+<h5 id="image-format-descriptor"><a class="anchor" href="#image-format-descriptor"></a>5.3.1.1. Image Format Descriptor</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The <strong>cl_image_format</strong> image format descriptor structure describes an image
+<p>The <a href="#cl_image_format"><code>cl_image_<wbr>format</code></a> image format descriptor structure describes an image
 format, and is defined as:</p>
 </div>
 <div id="cl_image_format" class="listingblock">
@@ -11274,67 +11203,67 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_R"></a><a href="#CL_R"><code>CL_&#8203;R</code></a>, <a id="CL_A"></a><a href="#CL_A"><code>CL_&#8203;A</code></a>,</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_R"></a><a href="#CL_R"><code>CL_R</code></a>, <a id="CL_A"></a><a href="#CL_A"><code>CL_A</code></a>,</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Single channel image formats where the single channel represents a <code>RED</code> or <code>ALPHA</code> component.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEPTH"></a><a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a></p>
-<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEPTH"></a><a href="#CL_DEPTH"><code>CL_DEPTH</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A single channel image format where the single channel represents a <code>DEPTH</code> component.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LUMINANCE"></a><a href="#CL_LUMINANCE"><code>CL_&#8203;LUMINANCE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LUMINANCE"></a><a href="#CL_LUMINANCE"><code>CL_LUMINANCE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A single channel image format where the single channel represents a <code>LUMINANCE</code> value.
     The <code>LUMINANCE</code> value is replicated into the <code>RED</code>, <code>GREEN</code>, and <code>BLUE</code> components.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INTENSITY"></a><a href="#CL_INTENSITY"><code>CL_&#8203;INTENSITY</code></a>,</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INTENSITY"></a><a href="#CL_INTENSITY"><code>CL_INTENSITY</code></a>,</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A single channel image format where the single channel represents an <code>INTENSITY</code> value.
     The <code>INTENSITY</code> value is replicated into the <code>RED</code>, <code>GREEN</code>, <code>BLUE</code>, and <code>ALPHA</code> components.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RG"></a><a href="#CL_RG"><code>CL_&#8203;RG</code></a>, <a id="CL_RA"></a><a href="#CL_RA"><code>CL_&#8203;RA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RG"></a><a href="#CL_RG"><code>CL_RG</code></a>, <a id="CL_RA"></a><a href="#CL_RA"><code>CL_RA</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Two channel image formats.
     The first channel always represents a <code>RED</code> component.
     The second channel represents a <code>GREEN</code> component or an <code>ALPHA</code> component.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_Rx"></a><a href="#CL_Rx"><code>CL_&#8203;Rx</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_Rx"></a><a href="#CL_Rx"><code>CL_Rx</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A two channel image format, where the first channel represents a <code>RED</code> component and the second channel is ignored.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGB"></a><a href="#CL_RGB"><code>CL_&#8203;RGB</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGB"></a><a href="#CL_RGB"><code>CL_RGB</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A three channel image format, where the three channels represent <code>RED</code>, <code>GREEN</code>, and <code>BLUE</code> components.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGx"></a><a href="#CL_RGx"><code>CL_&#8203;RGx</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGx"></a><a href="#CL_RGx"><code>CL_RGx</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A three channel image format, where the first two channels represent <code>RED</code> and <code>GREEN</code> components and the third channel is ignored.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGBA"></a><a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a>, <a id="CL_ARGB"></a><a href="#CL_ARGB"><code>CL_&#8203;ARGB</code></a>, <a id="CL_BGRA"></a><a href="#CL_BGRA"><code>CL_&#8203;BGRA</code></a>, <a id="CL_ABGR"></a><a href="#CL_ABGR"><code>CL_&#8203;ABGR</code></a></p>
-<p class="tableblock">  <a href="#CL_ABGR"><code>CL_&#8203;ABGR</code></a> is <a href="#unified-spec">missing before</a> version 2.0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGBA"></a><a href="#CL_RGBA"><code>CL_RGBA</code></a>, <a id="CL_ARGB"></a><a href="#CL_ARGB"><code>CL_ARGB</code></a>, <a id="CL_BGRA"></a><a href="#CL_BGRA"><code>CL_BGRA</code></a>, <a id="CL_ABGR"></a><a href="#CL_ABGR"><code>CL_ABGR</code></a></p>
+<p class="tableblock">  <a href="#CL_ABGR"><code>CL_ABGR</code></a> is <a href="#unified-spec">missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Four channel image formats, where the four channels represent <code>RED</code>, <code>GREEN</code>, <code>BLUE</code>, and <code>ALPHA</code> components.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGBx"></a><a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_RGBx"></a><a href="#CL_RGBx"><code>CL_RGBx</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A four channel image format, where the first three channels represent <code>RED</code>, <code>GREEN</code>, and <code>BLUE</code> components and the fourth channel is ignored.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_sRGB"></a><a href="#CL_sRGB"><code>CL_&#8203;sRGB</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_sRGB"></a><a href="#CL_sRGB"><code>CL_sRGB</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A three channel image format, where the three channels represent <code>RED</code>, <code>GREEN</code>, and <code>BLUE</code> components in the sRGB color space.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_sRGBA"></a><a href="#CL_sRGBA"><code>CL_&#8203;sRGBA</code></a>, <a id="CL_sBGRA"></a><a href="#CL_sBGRA"><code>CL_&#8203;sBGRA</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_sRGBA"></a><a href="#CL_sRGBA"><code>CL_sRGBA</code></a>, <a id="CL_sBGRA"></a><a href="#CL_sBGRA"><code>CL_sBGRA</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Four channel image formats, where the first three channels represent <code>RED</code>, <code>GREEN</code>, and <code>BLUE</code> components in the sRGB color space.
     The fourth channel represents an <code>ALPHA</code> component.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_sRGBx"></a><a href="#CL_sRGBx"><code>CL_&#8203;sRGBx</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_sRGBx"></a><a href="#CL_sRGBx"><code>CL_sRGBx</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A four channel image format, where the three channels represent <code>RED</code>, <code>GREEN</code>, and <code>BLUE</code> components in the sRGB color space.
     The fourth channel is ignored.</p></td>
@@ -11355,80 +11284,80 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SNORM_INT8"></a><a href="#CL_SNORM_INT8"><code>CL_&#8203;SNORM_&#8203;INT8</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SNORM_INT8"></a><a href="#CL_SNORM_INT8"><code>CL_SNORM_<wbr>INT8</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is a normalized signed 8-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SNORM_INT16"></a><a href="#CL_SNORM_INT16"><code>CL_&#8203;SNORM_&#8203;INT16</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SNORM_INT16"></a><a href="#CL_SNORM_INT16"><code>CL_SNORM_<wbr>INT16</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is a normalized signed 16-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT8"></a><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT8"></a><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is a normalized unsigned 8-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT16"></a><a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT16"></a><a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is a normalized unsigned 16-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_SHORT_565"></a><a href="#CL_UNORM_SHORT_565"><code>CL_&#8203;UNORM_&#8203;SHORT_&#8203;565</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_SHORT_565"></a><a href="#CL_UNORM_SHORT_565"><code>CL_UNORM_<wbr>SHORT_<wbr>565</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Represents a normalized 5-6-5 3-channel RGB image.
-    The channel order must be <a href="#CL_RGB"><code>CL_&#8203;RGB</code></a> or <a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a>.</p></td>
+    The channel order must be <a href="#CL_RGB"><code>CL_RGB</code></a> or <a href="#CL_RGBx"><code>CL_RGBx</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_SHORT_555"></a><a href="#CL_UNORM_SHORT_555"><code>CL_&#8203;UNORM_&#8203;SHORT_&#8203;555</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_SHORT_555"></a><a href="#CL_UNORM_SHORT_555"><code>CL_UNORM_<wbr>SHORT_<wbr>555</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Represents a normalized x-5-5-5 4-channel xRGB image.
-    The channel order must be <a href="#CL_RGB"><code>CL_&#8203;RGB</code></a> or <a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a>.</p></td>
+    The channel order must be <a href="#CL_RGB"><code>CL_RGB</code></a> or <a href="#CL_RGBx"><code>CL_RGBx</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT_101010"></a><a href="#CL_UNORM_INT_101010"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT_101010"></a><a href="#CL_UNORM_INT_101010"><code>CL_UNORM_<wbr>INT_<wbr>101010</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Represents a normalized x-10-10-10 4-channel xRGB image.
-    The channel order must be <a href="#CL_RGB"><code>CL_&#8203;RGB</code></a> or <a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a>.</p></td>
+    The channel order must be <a href="#CL_RGB"><code>CL_RGB</code></a> or <a href="#CL_RGBx"><code>CL_RGBx</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT_101010_2"></a><a href="#CL_UNORM_INT_101010_2"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010_&#8203;2</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNORM_INT_101010_2"></a><a href="#CL_UNORM_INT_101010_2"><code>CL_UNORM_<wbr>INT_<wbr>101010_<wbr>2</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Represents a normalized 10-10-10-2 four-channel RGBA image.
-    The channel order must be <a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a>.</p></td>
+    The channel order must be <a href="#CL_RGBA"><code>CL_RGBA</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SIGNED_INT8"></a><a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SIGNED_INT8"></a><a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is an unnormalized signed 8-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SIGNED_INT16"></a><a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SIGNED_INT16"></a><a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is an unnormalized signed 16-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SIGNED_INT32"></a><a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SIGNED_INT32"></a><a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is an unnormalized signed 32-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNSIGNED_INT8"></a><a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNSIGNED_INT8"></a><a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is an unnormalized unsigned 8-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNSIGNED_INT16"></a><a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNSIGNED_INT16"></a><a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is an unnormalized unsigned 16-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNSIGNED_INT32"></a><a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UNSIGNED_INT32"></a><a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is an unnormalized unsigned 32-bit integer value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_HALF_FLOAT"></a><a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_HALF_FLOAT"></a><a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is a 16-bit half-float value</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLOAT"></a><a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLOAT"></a><a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Each channel component is a single precision floating-point value</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
 <p>For example, to specify a normalized unsigned 8-bit / channel RGBA image,
-<code>image_channel_order</code> = <a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a>, and <code>image_channel_data_type</code> =
-<a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a>.
+<code>image_channel_order</code> = <a href="#CL_RGBA"><code>CL_RGBA</code></a>, and <code>image_channel_data_type</code> =
+<a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a>.
 The memory layout of this image format is described below:</p>
 </div>
 <table class="tableblock frame-all grid-all" style="width: 60%;">
@@ -11471,8 +11400,8 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>Similar, if <code>image_channel_order</code> = <a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a> and <code>image_channel_data_type</code> =
-<a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a>, the memory layout of this image format is described below:</p>
+<p>Similar, if <code>image_channel_order</code> = <a href="#CL_RGBA"><code>CL_RGBA</code></a> and <code>image_channel_data_type</code> =
+<a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a>, the memory layout of this image format is described below:</p>
 </div>
 <table class="tableblock frame-all grid-all" style="width: 60%;">
 <colgroup>
@@ -11514,20 +11443,20 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p><code>image_channel_data_type</code> values of <a href="#CL_UNORM_SHORT_565"><code>CL_&#8203;UNORM_&#8203;SHORT_&#8203;565</code></a>, <a href="#CL_UNORM_SHORT_555"><code>CL_&#8203;UNORM_&#8203;SHORT_&#8203;555</code></a>,
-<a href="#CL_UNORM_INT_101010"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010</code></a>, and <a href="#CL_UNORM_INT_101010_2"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010_&#8203;2</code></a> are special cases of packed
+<p><code>image_channel_data_type</code> values of <a href="#CL_UNORM_SHORT_565"><code>CL_UNORM_<wbr>SHORT_<wbr>565</code></a>, <a href="#CL_UNORM_SHORT_555"><code>CL_UNORM_<wbr>SHORT_<wbr>555</code></a>,
+<a href="#CL_UNORM_INT_101010"><code>CL_UNORM_<wbr>INT_<wbr>101010</code></a>, and <a href="#CL_UNORM_INT_101010_2"><code>CL_UNORM_<wbr>INT_<wbr>101010_<wbr>2</code></a> are special cases of packed
 image formats where the channels of each element are packed into a single
 unsigned short or unsigned int.
 For these special packed image formats, the channels are normally packed
 with the first channel in the most significant bits of the bitfield, and
 successive channels occupying progressively less significant locations.
-For <a href="#CL_UNORM_SHORT_565"><code>CL_&#8203;UNORM_&#8203;SHORT_&#8203;565</code></a>, R is in bits 15:11, G is in bits 10:5 and B is in
+For <a href="#CL_UNORM_SHORT_565"><code>CL_UNORM_<wbr>SHORT_<wbr>565</code></a>, R is in bits 15:11, G is in bits 10:5 and B is in
 bits 4:0.
-For <a href="#CL_UNORM_SHORT_555"><code>CL_&#8203;UNORM_&#8203;SHORT_&#8203;555</code></a>, bit 15 is undefined, R is in bits 14:10, G in bits
+For <a href="#CL_UNORM_SHORT_555"><code>CL_UNORM_<wbr>SHORT_<wbr>555</code></a>, bit 15 is undefined, R is in bits 14:10, G in bits
 9:5 and B in bits 4:0.
-For <a href="#CL_UNORM_INT_101010"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010</code></a>, bits 31:30 are undefined, R is in bits 29:20, G in
+For <a href="#CL_UNORM_INT_101010"><code>CL_UNORM_<wbr>INT_<wbr>101010</code></a>, bits 31:30 are undefined, R is in bits 29:20, G in
 bits 19:10 and B in bits 9:0.
-For <a href="#CL_UNORM_INT_101010_2"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010_&#8203;2</code></a>, R is in bits 31:22, G in bits 21:12, B in bits
+For <a href="#CL_UNORM_INT_101010_2"><code>CL_UNORM_<wbr>INT_<wbr>101010_<wbr>2</code></a>, R is in bits 31:22, G in bits 21:12, B in bits
 11:2 and A in bits 1:0.</p>
 </div>
 <div class="paragraph">
@@ -11542,12 +11471,13 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="image-descriptor">Image Descriptor</h5>
+<h5 id="image-descriptor"><a class="anchor" href="#image-descriptor"></a>5.3.1.2. Image Descriptor</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The <strong>cl_image_desc</strong> image descriptor structure describes the type and
-dimensions of an image or image array, and is defined as:</p>
+<p>The <a href="#cl_image_desc"><code>cl_image_<wbr>desc</code></a> image descriptor structure describes the image type
+and dimensions of an image or image array when creating an image using
+<a href="#clCreateImage"><strong>clCreateImage</strong></a> or <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>, and is defined as:</p>
 </div>
 <div id="cl_image_desc" class="listingblock">
 <div class="content">
@@ -11575,48 +11505,40 @@
 <ul>
 <li>
 <p><code>image_type</code> describes the image type and must be either
-<a href="#CL_MEM_OBJECT_IMAGE1D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D</code></a>, <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;BUFFER</code></a>,
-<a href="#CL_MEM_OBJECT_IMAGE1D_ARRAY"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;ARRAY</code></a>, <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D</code></a>,
-<a href="#CL_MEM_OBJECT_IMAGE2D_ARRAY"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D_&#8203;ARRAY</code></a>, or <a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE3D</code></a>.</p>
+<a href="#CL_MEM_OBJECT_IMAGE1D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D</code></a>, <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>BUFFER</code></a>,
+<a href="#CL_MEM_OBJECT_IMAGE1D_ARRAY"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>ARRAY</code></a>, <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a>,
+<a href="#CL_MEM_OBJECT_IMAGE2D_ARRAY"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D_<wbr>ARRAY</code></a>, or <a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE3D</code></a>.</p>
 </li>
 <li>
 <p><code>image_width</code> is the width of the image in pixels.
 For a 2D image and image array, the image width must be a value ≥ 1 and
-≤ <a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;WIDTH</code></a>.
-For a 3D image, the image width must be a value ≥1 and ≤
-<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a>.
-For a 1D image buffer, the image width must be a value ≥1 and ≤
-<a href="#CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;MAX_&#8203;BUFFER_&#8203;SIZE</code></a>.
-For a 1D image and 1D image array, the image width must be a value ≥1
-and ≤ <a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;WIDTH</code></a>.</p>
+≤ <a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>WIDTH</code></a>.
+For a 3D image, the image width must be a value ≥ 1 and ≤
+<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a>.
+For a 1D image buffer, the image width must be a value ≥ 1 and ≤
+<a href="#CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"><code>CL_DEVICE_<wbr>IMAGE_<wbr>MAX_<wbr>BUFFER_<wbr>SIZE</code></a>.
+For a 1D image and 1D image array, the image width must be a value ≥ 1
+and ≤ <a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>WIDTH</code></a>.</p>
 </li>
 <li>
 <p><code>image_height</code> is the height of the image in pixels.
 This is only used if the image is a 2D or 3D image, or a 2D image array.
 For a 2D image or image array, the image height must be a value ≥ 1 and
-≤ <a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;HEIGHT</code></a>.
+≤ <a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>HEIGHT</code></a>.
 For a 3D image, the image height must be a value ≥ 1 and ≤
-<a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a>.</p>
+<a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a>.</p>
 </li>
 <li>
 <p><code>image_depth</code> is the depth of the image in pixels.
 This is only used if the image is a 3D image and must be a value ≥ 1 and
-≤ <a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a>.</p>
+≤ <a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a>.</p>
 </li>
 <li>
-<p><code>image_array_size</code><sup>5</sup> is the number of images in the image array.
+<p><code>image_array_size</code> <sup class="footnote">[<a id="_footnoteref_17" class="footnote" href="#_footnotedef_17" title="View footnote.">17</a>]</sup> is the number of
+images in the image array.
 This is only used if the image is a 1D or 2D image array.
 The values for <code>image_array_size</code>, if specified, must be a value ≥ 1 and
-≤ <a href="#CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;MAX_&#8203;ARRAY_&#8203;SIZE</code></a>.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">5</dt>
-<dd>
-<p>Note that reading and writing 2D image arrays from a kernel with
-<code>image_array_size</code>=1 may be lower performance than 2D images.</p>
-</dd>
-</dl>
-</div>
+≤ <a href="#CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"><code>CL_DEVICE_<wbr>IMAGE_<wbr>MAX_<wbr>ARRAY_<wbr>SIZE</code></a>.</p>
 </li>
 <li>
 <p><code>image_row_pitch</code> is the scan-line pitch in bytes.
@@ -11628,7 +11550,7 @@
 size in bytes.
 For a 2D image created from a buffer, the pitch specified (or computed if
 pitch specified is 0) must be a multiple of the maximum of the
-<a href="#CL_DEVICE_IMAGE_PITCH_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;PITCH_&#8203;ALIGNMENT</code></a> value for all devices in the context
+<a href="#CL_DEVICE_IMAGE_PITCH_ALIGNMENT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>PITCH_<wbr>ALIGNMENT</code></a> value for all devices in the context
 associated with the buffer specified by <code>mem_object</code> that support images.</p>
 </li>
 <li>
@@ -11650,28 +11572,15 @@
 <li>
 <p><code>mem_object</code> may refer to a valid buffer or image memory object.
 <code>mem_object</code> can be a buffer memory object if <code>image_type</code> is
-<a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;BUFFER</code></a> or <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D</code></a><sup>6</sup>.
+<a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>BUFFER</code></a> or
+<a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a> <sup class="footnote">[<a id="_footnoteref_18" class="footnote" href="#_footnotedef_18" title="View footnote.">18</a>]</sup>.
 <code>mem_object</code> can be an image object if <code>image_type</code> is
-<a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D</code></a><sup>7</sup>.
+<a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a> <sup class="footnote">[<a id="_footnoteref_19" class="footnote" href="#_footnotedef_19" title="View footnote.">19</a>]</sup>.
 Otherwise it must be <code>NULL</code>.
 The image pixels are taken from the memory objects data store.
 When the contents of the specified memory objects data store are modified,
 those changes are reflected in the contents of the image object and
 vice-versa at corresponding synchronization points.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">6</dt>
-<dd>
-<p>To create a 2D image from a buffer object that share the data store
-between the image and buffer object.</p>
-</dd>
-<dt class="hdlist1">7</dt>
-<dd>
-<p>To create an image object from another image object that share the data
-store between these image objects.</p>
-</dd>
-</dl>
-</div>
 </li>
 </ul>
 </div>
@@ -11701,35 +11610,33 @@
 </div>
 <div class="paragraph">
 <p>If the buffer object specified by <code>mem_object</code> was created with
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, the <em>host_ptr</em> specified to <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, the <em>host_ptr</em> specified to <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or
 <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> must be aligned to the maximum of the
-<a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;BASE_&#8203;ADDRESS_&#8203;ALIGNMENT</code></a> value for all devices in the
+<a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>BASE_<wbr>ADDRESS_<wbr>ALIGNMENT</code></a> value for all devices in the
 context associated with the buffer specified by <code>mem_object</code> that
 support images.</p>
 </div>
 <div class="paragraph">
-<p>Creating a 2D image object from another 2D image object allows users to
-create a new image object that shares the image data store with <code>mem_object</code>
-but views the pixels in the image with a different channel order.
-The restrictions are:</p>
+<p>Creating a 2D image object from another 2D image object creates a new
+2D image object that shares the image data store with <code>mem_object</code> but views
+the pixels in the image with a different image channel order.
+Restrictions are:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>all the values specified in <code>image_desc</code> except for <code>mem_object</code> must match
-the image descriptor information associated with <code>mem_object</code>.</p>
+<p>All of the values specified in <em>image_desc</em> must match the image descriptor
+information associated with <code>mem_object</code>, except for <code>mem_object</code>.</p>
 </li>
 <li>
-<p>The <code>image_desc</code> used for creation of <code>mem_object</code> may not be
-equivalent to image descriptor information associated with <code>mem_object</code>.
-To ensure the values in <em>`image_desc</em> will match one can query
-<code>mem_object</code> for associated information using <a href="#clGetImageInfo"><strong>clGetImageInfo</strong></a> function
-described in <a href="#image-object-queries">Image Object Queries</a>.</p>
+<p>The image channel data type specified in <em>image_format</em> must match the
+image channel data type associated with <code>mem_object</code>.</p>
 </li>
 <li>
-<p>the channel data type specified in <code>image_format</code> must match the channel
-data type associated with <code>mem_object</code>.
-The channel order values<sup>8</sup> supported are:</p>
+<p>The image channel order specified in <em>image_format</em> must be compatible
+with the image channel order associated with <code>mem_object</code>.
+Compatible image channel orders
+<sup class="footnote">[<a id="_footnoteref_20" class="footnote" href="#_footnotedef_20" title="View footnote.">20</a>]</sup> are:</p>
 </li>
 </ul>
 </div>
@@ -11742,69 +11649,51 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><code>image_channel_order</code> specified in <code>image_format</code></th>
-<th class="tableblock halign-left valign-top">image channel order of <code>mem_object</code></th>
+<th class="tableblock halign-left valign-top">Image Channel Order in <em>image_format</em>:</th>
+<th class="tableblock halign-left valign-top">Image Channel Order associated with <code>mem_object</code>:</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sBGRA"><code>CL_&#8203;sBGRA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_&#8203;BGRA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sBGRA"><code>CL_sBGRA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_BGRA</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_&#8203;BGRA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sBGRA"><code>CL_&#8203;sBGRA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_BGRA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sBGRA"><code>CL_sBGRA</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBA"><code>CL_&#8203;sRGBA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBA"><code>CL_sRGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_RGBA</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBA"><code>CL_&#8203;sRGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_RGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBA"><code>CL_sRGBA</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGB"><code>CL_&#8203;sRGB</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGB"><code>CL_&#8203;RGB</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGB"><code>CL_sRGB</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGB"><code>CL_RGB</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGB"><code>CL_&#8203;RGB</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGB"><code>CL_&#8203;sRGB</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGB"><code>CL_RGB</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGB"><code>CL_sRGB</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBx"><code>CL_&#8203;sRGBx</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBx"><code>CL_sRGBx</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBx"><code>CL_RGBx</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBx"><code>CL_&#8203;sRGBx</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBx"><code>CL_RGBx</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBx"><code>CL_sRGBx</code></a></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_R"><code>CL_&#8203;R</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEPTH"><code>CL_DEPTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_R"><code>CL_R</code></a></p></td>
 </tr>
 </tbody>
 </table>
 <div class="openblock">
 <div class="content">
-<div class="ulist">
-<ul>
-<li>
-<p>the channel order specified must have the same number of channels as the
-channel order of <code>mem_object</code>.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">8</dt>
-<dd>
-<p>This allows developers to create a sRGB view of the image from a linear
-RGB view or vice-versa i.e. the pixels stored in the image can be
-accessed as linear RGB or sRGB values.</p>
-</dd>
-</dl>
-</div>
-</li>
-</ul>
-</div>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -11836,7 +11725,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_querying_list_of_supported_image_formats">5.3.2. Querying List of Supported Image Formats</h4>
+<h4 id="_querying_list_of_supported_image_formats"><a class="anchor" href="#_querying_list_of_supported_image_formats"></a>5.3.2. Querying List of Supported Image Formats</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -11864,20 +11753,20 @@
 <p><em>flags</em> is a bit-field that is used to specify usage
 information about the image formats being queried and is described in
 the <a href="#memory-flags-table">Memory Flags</a> table.
-<em>flags</em> may be <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> to query image formats that may be read
+<em>flags</em> may be <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> to query image formats that may be read
 from and written to by different kernel instances when correctly ordered by
-event dependencies, or <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> to query image formats that may
-be read from by a kernel, or <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> to query image formats that
-may be written to by a kernel, or <a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_&#8203;MEM_&#8203;KERNEL_&#8203;READ_&#8203;AND_&#8203;WRITE</code></a> to query
+event dependencies, or <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> to query image formats that may
+be read from by a kernel, or <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> to query image formats that
+may be written to by a kernel, or <a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_MEM_<wbr>KERNEL_<wbr>READ_<wbr>AND_<wbr>WRITE</code></a> to query
 image formats that may be both read from and written to by the same kernel
 instance.
 Please see <a href="#image-format-mapping">Image Format Mapping</a> for clarification.</p>
 </li>
 <li>
 <p><em>image_type</em> describes the image type and must be either
-<a href="#CL_MEM_OBJECT_IMAGE1D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D</code></a>, <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;BUFFER</code></a>, <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D</code></a>,
-<a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE3D</code></a>, <a href="#CL_MEM_OBJECT_IMAGE1D_ARRAY"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE1D_&#8203;ARRAY</code></a>, or
-<a href="#CL_MEM_OBJECT_IMAGE2D_ARRAY"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D_&#8203;ARRAY</code></a>.</p>
+<a href="#CL_MEM_OBJECT_IMAGE1D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D</code></a>, <a href="#CL_MEM_OBJECT_IMAGE1D_BUFFER"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>BUFFER</code></a>, <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a>,
+<a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE3D</code></a>, <a href="#CL_MEM_OBJECT_IMAGE1D_ARRAY"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE1D_<wbr>ARRAY</code></a>, or
+<a href="#CL_MEM_OBJECT_IMAGE2D_ARRAY"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D_<wbr>ARRAY</code></a>.</p>
 </li>
 <li>
 <p><em>num_entries</em> specifies the number of entries that can be returned in the
@@ -11886,7 +11775,7 @@
 <li>
 <p><em>image_formats</em> is a pointer to a memory location where the list of
 supported image formats are returned.
-Each entry describes a <em>cl_image_format</em> structure supported by the OpenCL
+Each entry describes a <a href="#cl_image_format"><code>cl_image_<wbr>format</code></a> structure supported by the OpenCL
 implementation.
 If <em>image_formats</em> is <code>NULL</code>, it is ignored.</p>
 </li>
@@ -11902,43 +11791,43 @@
 all devices in the context.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clGetSupportedImageFormats"><strong>clGetSupportedImageFormats</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetSupportedImageFormats"><strong>clGetSupportedImageFormats</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>flags</em> or <em>image_type</em> are not valid, or if
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>flags</em> or <em>image_type</em> are not valid, or if
 <em>num_entries</em> is 0 and <em>image_formats</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>If <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the <a href="#device-queries-table">Device
-Queries</a> table is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the values assigned to
-<a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;IMAGE_&#8203;ARGS</code></a>, <a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a>
-<a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;HEIGHT</code></a>
-<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a>
-<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a>, and <a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;SAMPLERS</code></a> by the implementation
+<p>If <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the <a href="#device-queries-table">Device
+Queries</a> table is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the values assigned to
+<a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>IMAGE_<wbr>ARGS</code></a>, <a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a>
+<a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>HEIGHT</code></a>
+<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a>
+<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a>, and <a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_DEVICE_<wbr>MAX_<wbr>SAMPLERS</code></a> by the implementation
 must be greater than or equal to the minimum values specified in the
 <a href="#device-queries-table">Device Queries</a> table.</p>
 </div>
 </div>
 </div>
 <div class="sect4">
-<h5 id="minimum-list-of-supported-image-formats">Minimum List of Supported Image Formats</h5>
+<h5 id="minimum-list-of-supported-image-formats"><a class="anchor" href="#minimum-list-of-supported-image-formats"></a>5.3.2.1. Minimum List of Supported Image Formats</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -11968,86 +11857,70 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_R"><code>CL_&#8203;R</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SNORM_INT8"><code>CL_&#8203;SNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_SNORM_INT16"><code>CL_&#8203;SNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_R"><code>CL_R</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SNORM_INT8"><code>CL_SNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_SNORM_INT16"><code>CL_SNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a><sup>9</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEPTH"><code>CL_DEPTH</code></a> <sup class="footnote">[<a id="_footnoteref_21" class="footnote" href="#_footnotedef_21" title="View footnote.">21</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RG"><code>CL_&#8203;RG</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SNORM_INT8"><code>CL_&#8203;SNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_SNORM_INT16"><code>CL_&#8203;SNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RG"><code>CL_RG</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SNORM_INT8"><code>CL_SNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_SNORM_INT16"><code>CL_SNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SNORM_INT8"><code>CL_&#8203;SNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_SNORM_INT16"><code>CL_&#8203;SNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_RGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SNORM_INT8"><code>CL_SNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_SNORM_INT16"><code>CL_SNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_&#8203;BGRA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_BGRA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBA"><code>CL_&#8203;sRGBA</code></a><sup>10</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_sRGBA"><code>CL_sRGBA</code></a> <sup class="footnote">[<a id="_footnoteref_22" class="footnote" href="#_footnotedef_22" title="View footnote.">22</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a></p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">9</dt>
-<dd>
-<p>Support for the <a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a> image channel order is required only for 2D
-images and 2D image arrays.</p>
-</dd>
-<dt class="hdlist1">10</dt>
-<dd>
-<p>Support for reading from the <a href="#CL_sRGBA"><code>CL_&#8203;sRGBA</code></a> image channel order is optional
-for 1D image buffers.
-Support for writing to the <a href="#CL_sRGBA"><code>CL_&#8203;sRGBA</code></a> image channel order is optional
-for all image types.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
 <p>For full profile devices supporting other OpenCL versions, such as OpenCL 1.2
 or OpenCL 3.0, the minimum list of supported image formats for either reading
@@ -12070,28 +11943,28 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_RGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_&#8203;BGRA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_BGRA"><code>CL_BGRA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a></p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
 <p>For full profile devices that support reading from and writing to the same
-image object from the same kernel instance (see <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a>),
+image object from the same kernel instance (see <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a>),
 the minimum list of supported image formats for reading and writing in
 the same kernel instance is:</p>
 </div>
@@ -12112,29 +11985,29 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_R"><code>CL_&#8203;R</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_R"><code>CL_R</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_RGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 </tbody>
 </table>
@@ -12142,7 +12015,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="image-format-mapping">Image format mapping to OpenCL kernel language image access qualifiers</h5>
+<h5 id="image-format-mapping"><a class="anchor" href="#image-format-mapping"></a>5.3.2.2. Image format mapping to OpenCL kernel language image access qualifiers</h5>
 <div class="paragraph">
 <p>Image arguments to kernels may have the <code>read_only</code>, <code>write_only</code> or
 <code>read_write</code> qualifier.
@@ -12165,32 +12038,32 @@
 <thead>
 <tr>
 <th class="tableblock halign-left valign-top">Access Qualifier</th>
-<th class="tableblock halign-left valign-top">cl_mem_flags</th>
+<th class="tableblock halign-left valign-top">Memory Flags</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>read_only</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a>,<br>
-    <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>,<br>
-    <a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_&#8203;MEM_&#8203;KERNEL_&#8203;READ_&#8203;AND_&#8203;WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a>,<br>
+    <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>,<br>
+    <a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_MEM_<wbr>KERNEL_<wbr>READ_<wbr>AND_<wbr>WRITE</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>write_only</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a>,<br>
-    <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>,<br>
-    <a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_&#8203;MEM_&#8203;KERNEL_&#8203;READ_&#8203;AND_&#8203;WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a>,<br>
+    <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>,<br>
+    <a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_MEM_<wbr>KERNEL_<wbr>READ_<wbr>AND_<wbr>WRITE</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>read_write</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_&#8203;MEM_&#8203;KERNEL_&#8203;READ_&#8203;AND_&#8203;WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_MEM_<wbr>KERNEL_<wbr>READ_<wbr>AND_<wbr>WRITE</code></a></p></td>
 </tr>
 </tbody>
 </table>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_reading_writing_and_copying_image_objects">5.3.3. Reading, Writing and Copying Image Objects</h4>
+<h4 id="_reading_writing_and_copying_image_objects"><a class="anchor" href="#_reading_writing_and_copying_image_objects"></a>5.3.3. Reading, Writing and Copying Image Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -12310,25 +12183,23 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular read / write
-command and can be used to query or queue a wait for this particular command
-to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this read / write command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_read</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> i.e. the read command is blocking,
+<p>If <em>blocking_read</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a> i.e. the read command is blocking,
 <a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> does not return until the buffer data has been read and
 copied into memory pointed to by <em>ptr</em>.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_read</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> i.e. the read command is non-blocking,
+<p>If <em>blocking_read</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a> i.e. the read command is non-blocking,
 <a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> queues a non-blocking read command and returns.
 The contents of the buffer that <em>ptr</em> points to cannot be used until the
 read command has completed.
@@ -12338,13 +12209,13 @@
 points to can be used by the application.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_write</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the write command is blocking and does not
+<p>If <em>blocking_write</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the write command is blocking and does not
 return until the command is complete, including transfer of the data.
 The memory pointed to by <em>ptr</em> can be reused by the application after the
 <a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> call returns.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_write</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, the OpenCL implementation will use <em>ptr</em> to
+<p>If <em>blocking_write</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>, the OpenCL implementation will use <em>ptr</em> to
 perform a non-blocking write.
 As the write is non-blocking the implementation can return immediately.
 The memory pointed to by <em>ptr</em> cannot be reused by the application after the
@@ -12355,77 +12226,77 @@
 then be reused by the application.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> and <a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the
+<p><a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> and <a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the
 function is executed successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 <em>image</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if i_mage_ is not a valid image object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if i_mage_ is not a valid image object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the region being read or written specified by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the region being read or written specified by
 <em>origin</em> and <em>region</em> is out of bounds or if <em>ptr</em> is a <code>NULL</code> value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values in <em>origin</em> and <em>region</em> do not follow rules
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values in <em>origin</em> and <em>region</em> do not follow rules
 described in the argument description for <em>origin</em> and <em>region</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if image dimensions (image width, height,
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if image dimensions (image width, height,
 specified or compute row and/or slice pitch) for <em>image</em> are not
 supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if image format (image channel order and
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if image format (image channel order and
 data type) for <em>image</em> are not supported by device associated with
 <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>image</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command_queue</em> does
-not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command_queue</em> does
+not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> is called on <em>image</em> which
-has been created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> is called on <em>image</em> which
+has been created with <a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> is called on <em>image</em> which
-has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> is called on <em>image</em> which
+has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the read and write
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the read and write
 operations are blocking and the execution status of any of the events in
 <em>event_wait_list</em> is a negative integer value.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -12442,7 +12313,7 @@
 argument value set to <em>host_ptr</em> + (<em>origin</em>[2] × <em>image slice pitch</em>
 +  <em>origin</em>[1] × <em>image row pitch</em> + <em>origin</em>[0] × <em>bytes
 per pixel</em>), where <em>host_ptr</em> is a pointer to the memory region specified
-when the <em>image</em> being read is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, must meet
+when the <em>image</em> being read is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, must meet
 the following requirements in order to avoid undefined behavior:</p>
 </div>
 <div class="ulist">
@@ -12470,7 +12341,7 @@
 × <em>image slice pitch</em> + <em>origin</em>[1] × <em>image row pitch</em> + 
 <em>origin</em>[0] × <em>bytes per pixel</em>), where <em>host_ptr</em> is a pointer to the
 memory region specified when the <em>image</em> being written is created with
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>, must meet the following requirements in order to avoid
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>, must meet the following requirements in order to avoid
 undefined behavior:</p>
 </div>
 <div class="ulist">
@@ -12588,97 +12459,94 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular copy command
-and can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this copy command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
 <p>It is currently a requirement that the <em>src_image</em> and <em>dst_image</em> image
 memory objects for <a href="#clEnqueueCopyImage"><strong>clEnqueueCopyImage</strong></a> must have the exact same image
-format (i.e. the cl_image_format descriptor specified when <em>src_image</em> and
+format (i.e. the <a href="#cl_image_format"><code>cl_image_<wbr>format</code></a> descriptor specified when <em>src_image</em> and
 <em>dst_image</em> are created must match).</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueCopyImage"><strong>clEnqueueCopyImage</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueCopyImage"><strong>clEnqueueCopyImage</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em>,
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em>,
 <em>src_image</em> and <em>dst_image</em> are not the same or if the context
 associated with <em>command_queue</em> and events in <em>event_wait_list</em> are not
 the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>src_image</em> and <em>dst_image</em> are not valid image
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>src_image</em> and <em>dst_image</em> are not valid image
 objects.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_MISMATCH"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;MISMATCH</code></a> if <em>src_image</em> and <em>dst_image</em> do not use the
+<p><a href="#CL_IMAGE_FORMAT_MISMATCH"><code>CL_IMAGE_<wbr>FORMAT_<wbr>MISMATCH</code></a> if <em>src_image</em> and <em>dst_image</em> do not use the
 same image format.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the 2D or 3D rectangular region specified by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the 2D or 3D rectangular region specified by
 <em>src_origin</em> and <em>src_origin</em> +  <em>region</em> refers to a region outside
 <em>src_image</em>, or if the 2D or 3D rectangular region specified by
 <em>dst_origin</em> and <em>dst_origin</em> +  <em>region</em> refers to a region outside
 <em>dst_image</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values in <em>src_origin</em>, <em>dst_origin</em> and <em>region</em> do
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values in <em>src_origin</em>, <em>dst_origin</em> and <em>region</em> do
 not follow rules described in the argument description for <em>src_origin</em>,
 <em>dst_origin</em> and <em>region</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if image dimensions (image width, height,
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if image dimensions (image width, height,
 specified or compute row and/or slice pitch) for <em>src_image</em> or
 <em>dst_image</em> are not supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if image format (image channel order and
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if image format (image channel order and
 data type) for <em>src_image</em> or <em>dst_image</em> are not supported by device
 associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>src_image</em> or <em>dst_image</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command_queue</em> does
-not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command_queue</em> does
+not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;OVERLAP</code></a> if <em>src_image</em> and <em>dst_image</em> are the same image
+<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_MEM_<wbr>COPY_<wbr>OVERLAP</code></a> if <em>src_image</em> and <em>dst_image</em> are the same image
 object and the source and destination regions overlap.</p>
 </li>
 </ul>
@@ -12687,7 +12555,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_filling_image_objects">5.3.4. Filling Image Objects</h4>
+<h4 id="_filling_image_objects"><a class="anchor" href="#_filling_image_objects"></a>5.3.4. Filling Image Objects</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -12745,7 +12613,7 @@
 <li>
 <p><em>fill_color</em> is the color used to fill the image.
 The fill color is a single floating point value if the channel order is
-<a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a>.
+<a href="#CL_DEPTH"><code>CL_DEPTH</code></a>.
 Otherwise, the fill color is a four component RGBA floating-point color
 value if the <em>image</em> channel data type is not an unnormalized signed or
 unsigned integer type, is a four component signed integer value if the
@@ -12795,81 +12663,78 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
 <p>The usage information which indicates whether the memory object can be read
-or written by a kernel and/or the host and is given by the cl_mem_flags
+or written by a kernel and/or the host and is given by the <code>cl_mem_<wbr>flags</code>
 argument value specified when <em>image</em> is created is ignored by
 <a href="#clEnqueueFillImage"><strong>clEnqueueFillImage</strong></a>.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueFillImage"><strong>clEnqueueFillImage</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueFillImage"><strong>clEnqueueFillImage</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 <em>image</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>image</em> is not a valid image object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>image</em> is not a valid image object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>fill_color</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>fill_color</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the region being filled as specified by <em>origin</em> and
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the region being filled as specified by <em>origin</em> and
 <em>region</em> is out of bounds or if <em>ptr</em> is a <code>NULL</code> value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values in <em>origin</em> and <em>region</em> do not follow rules
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values in <em>origin</em> and <em>region</em> do not follow rules
 described in the argument description for <em>origin</em> and <em>region</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if image dimensions (image width, height,
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if image dimensions (image width, height,
 specified or compute row and/or slice pitch) for <em>image</em> are not
 supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if image format (image channel order and
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if image format (image channel order and
 data type) for <em>image</em> are not supported by device associated with
 <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>image</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -12878,7 +12743,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_copying_between_image_and_buffer_objects">5.3.5. Copying between Image and Buffer Objects</h4>
+<h4 id="_copying_between_image_and_buffer_objects"><a class="anchor" href="#_copying_between_image_and_buffer_objects"></a>5.3.5. Copying between Image and Buffer Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -12965,90 +12830,87 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular copy command
-and can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this copy command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueCopyImageToBuffer"><strong>clEnqueueCopyImageToBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueCopyImageToBuffer"><strong>clEnqueueCopyImageToBuffer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em>,
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em>,
 <em>src_image</em> and <em>dst_buffer</em> are not the same or if the context
 associated with <em>command_queue</em> and events in <em>event_wait_list</em> are not
 the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>src_image</em> is not a valid image object or
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>src_image</em> is not a valid image object or
 <em>dst_buffer</em> is not a valid buffer object or if <em>src_image</em> is a 1D
 image buffer object created from <em>dst_buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the 1D, 2D or 3D rectangular region specified by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the 1D, 2D or 3D rectangular region specified by
 <em>src_origin</em> and <em>src_origin</em> + <em>region</em> refers to a region outside
 <em>src_image</em>, or if the region specified by <em>dst_offset</em> and <em>dst_offset</em>
 + <em>dst_cb</em> to a region outside <em>dst_buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values in <em>src_origin</em> and <em>region</em> do not follow
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values in <em>src_origin</em> and <em>region</em> do not follow
 rules described in the argument description for <em>src_origin</em> and
 <em>region</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>dst_buffer</em> is a sub-buffer object
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>dst_buffer</em> is a sub-buffer object
 and <em>offset</em> specified when the sub-buffer object is created is not
-aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated
+aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated
 with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if image dimensions (image width, height,
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if image dimensions (image width, height,
 specified or compute row and/or slice pitch) for <em>src_image</em> are not
 supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if image format (image channel order and
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if image format (image channel order and
 data type) for <em>src_image</em> are not supported by device associated with
 <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>src_image</em> or <em>dst_buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command_queue</em> does
-not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command_queue</em> does
+not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -13132,16 +12994,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular copy command
-and can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this copy command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -13158,76 +13017,76 @@
 object.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueCopyBufferToImage"><strong>clEnqueueCopyBufferToImage</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueCopyBufferToImage"><strong>clEnqueueCopyBufferToImage</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em>,
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em>,
 <em>src_buffer</em> and <em>dst_image</em> are not the same or if the context
 associated with <em>command_queue</em> and events in <em>event_wait_list</em> are not
 the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>src_buffer</em> is not a valid buffer object or
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>src_buffer</em> is not a valid buffer object or
 <em>dst_image</em> is not a valid image object or if <em>dst_image</em> is a 1D image
 buffer object created from <em>src_buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the 1D, 2D or 3D rectangular region specified by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the 1D, 2D or 3D rectangular region specified by
 <em>dst_origin</em> and <em>dst_origin</em> + <em>region</em> refer to a region outside
 <em>dst_image</em>, or if the region specified by <em>src_offset</em> and <em>src_offset</em>
 + <em>src_cb</em> refer to a region outside <em>src_buffer</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values in <em>dst_origin</em> and <em>region</em> do not follow
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values in <em>dst_origin</em> and <em>region</em> do not follow
 rules described in the argument description for <em>dst_origin</em> and
 <em>region</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if <em>src_buffer</em> is a sub-buffer object
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if <em>src_buffer</em> is a sub-buffer object
 and <em>offset</em> specified when the sub-buffer object is created is not
-aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated
+aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated
 with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if image dimensions (image width, height,
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if image dimensions (image width, height,
 specified or compute row and/or slice pitch) for <em>dst_image</em> are not
 supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if image format (image channel order and
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if image format (image channel order and
 data type) for <em>dst_image</em> are not supported by device associated with
 <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>src_buffer</em> or <em>dst_image</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command_queue</em> does
-not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command_queue</em> does
+not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -13236,7 +13095,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_mapping_image_objects">5.3.6. Mapping Image Objects</h4>
+<h4 id="_mapping_image_objects"><a class="anchor" href="#_mapping_image_objects"></a>5.3.6. Mapping Image Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -13332,15 +13191,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 <li>
 <p><em>errcode_ret</em> will return an appropriate error code.
@@ -13349,13 +13206,13 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_map</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a> does not return until the
+<p>If <em>blocking_map</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a> does not return until the
 specified region in <em>image</em> is mapped into the host address space and the
 application can access the contents of the mapped region using the pointer
 returned by <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_map</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> i.e. map operation is non-blocking, the
+<p>If <em>blocking_map</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a> i.e. map operation is non-blocking, the
 pointer to the mapped region returned by <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a> cannot be used
 until the map command has completed.
 The <em>event</em> argument returns an event object which can be used to query the
@@ -13365,7 +13222,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a> will return a pointer to the mapped region.
-The <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a>.</p>
+The <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>A <code>NULL</code> pointer is returned otherwise with one of the following error
@@ -13374,87 +13231,87 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and
 <em>image</em> are not the same or if context associated with <em>command_queue</em>
 and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>image</em> is not a valid image object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>image</em> is not a valid image object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if region being mapped given by (<em>origin</em>,
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if region being mapped given by (<em>origin</em>,
 <em>origin+region</em>) is out of bounds or if values specified in <em>map_flags</em>
 are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values in <em>origin</em> and <em>region</em> do not follow rules
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values in <em>origin</em> and <em>region</em> do not follow rules
 described in the argument description for <em>origin</em> and <em>region</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>image_row_pitch</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>image_row_pitch</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>image</em> is a 3D image, 1D or 2D image array object
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>image</em> is a 3D image, 1D or 2D image array object
 and <em>image_slice_pitch</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if image dimensions (image width, height,
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if image dimensions (image width, height,
 specified or compute row and/or slice pitch) for <em>image</em> are not
 supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if image format (image channel order and
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if image format (image channel order and
 data type) for <em>image</em> are not supported by device associated with
 <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_MAP_FAILURE"><code>CL_&#8203;MAP_&#8203;FAILURE</code></a> if there is a failure to map the requested region into
+<p><a href="#CL_MAP_FAILURE"><code>CL_MAP_<wbr>FAILURE</code></a> if there is a failure to map the requested region into
 the host address space.
 This error cannot occur for image objects created with
-<a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_&#8203;MEM_&#8203;ALLOC_&#8203;HOST_&#8203;PTR</code></a>.</p>
+<a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or <a href="#CL_MEM_ALLOC_HOST_PTR"><code>CL_MEM_<wbr>ALLOC_<wbr>HOST_<wbr>PTR</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the map operation is
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the map operation is
 blocking and the execution status of any of the events in
 <em>event_wait_list</em> is a negative integer value.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with <em>image</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command_queue</em> does
-not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command_queue</em> does
+not support images (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>image</em> has been created with
-<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;WRITE_&#8203;ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> and <a href="#CL_MAP_READ"><code>CL_&#8203;MAP_&#8203;READ</code></a> is set
-in <em>map_flags</em> or if <em>image</em> has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;READ_&#8203;ONLY</code></a>
-or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> and <a href="#CL_MAP_WRITE"><code>CL_&#8203;MAP_&#8203;WRITE</code></a> or
-<a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_&#8203;MAP_&#8203;WRITE_&#8203;INVALIDATE_&#8203;REGION</code></a> is set in <em>map_flags</em>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>image</em> has been created with
+<a href="#CL_MEM_HOST_WRITE_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>WRITE_<wbr>ONLY</code></a> or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> and <a href="#CL_MAP_READ"><code>CL_MAP_<wbr>READ</code></a> is set
+in <em>map_flags</em> or if <em>image</em> has been created with <a href="#CL_MEM_HOST_READ_ONLY"><code>CL_MEM_<wbr>HOST_<wbr>READ_<wbr>ONLY</code></a>
+or <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> and <a href="#CL_MAP_WRITE"><code>CL_MAP_<wbr>WRITE</code></a> or
+<a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_MAP_<wbr>WRITE_<wbr>INVALIDATE_<wbr>REGION</code></a> is set in <em>map_flags</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if mapping would lead to overlapping regions being
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if mapping would lead to overlapping regions being
 mapped for writing.</p>
 </li>
 </ul>
@@ -13468,7 +13325,7 @@
 The result of a memory access outside this region is undefined.</p>
 </div>
 <div class="paragraph">
-<p>If the image object is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> set in <em>mem_flags</em>,
+<p>If the image object is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> set in <em>mem_flags</em>,
 the following will be true:</p>
 </div>
 <div class="ulist">
@@ -13494,7 +13351,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="image-object-queries">5.3.7. Image Object Queries</h4>
+<h4 id="image-object-queries"><a class="anchor" href="#image-object-queries"></a>5.3.7. Image Object Queries</h4>
 <div class="paragraph">
 <p>To get information that is common to all memory objects, use the
 <a href="#clGetMemObjectInfo"><strong>clGetMemObjectInfo</strong></a> function described in <a href="#memory-object-queries">Memory
@@ -13555,109 +13412,107 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_image_info</strong></th>
+<th class="tableblock halign-left valign-top">Image Info</th>
 <th class="tableblock halign-left valign-top">Return type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_FORMAT"></a><a href="#CL_IMAGE_FORMAT"><code>CL_&#8203;IMAGE_&#8203;FORMAT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_image_format</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_FORMAT"></a><a href="#CL_IMAGE_FORMAT"><code>CL_IMAGE_<wbr>FORMAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_image_format"><code>cl_image_<wbr>format</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the image format descriptor specified when <em>image</em> is created
         with <a href="#clCreateImage"><strong>clCreateImage</strong></a>, <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>,
         <a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a> or <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_ELEMENT_SIZE"></a><a href="#CL_IMAGE_ELEMENT_SIZE"><code>CL_&#8203;IMAGE_&#8203;ELEMENT_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_ELEMENT_SIZE"></a><a href="#CL_IMAGE_ELEMENT_SIZE"><code>CL_IMAGE_<wbr>ELEMENT_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return size of each element of the image memory object given by
-        <em>image</em> in bytes.
-        An element is made up of <em>n</em> channels.
-        The value of <em>n</em> is given in <em>cl_image_format</em> descriptor.</p></td>
+        <em>image</em> in bytes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_ROW_PITCH"></a><a href="#CL_IMAGE_ROW_PITCH"><code>CL_&#8203;IMAGE_&#8203;ROW_&#8203;PITCH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_ROW_PITCH"></a><a href="#CL_IMAGE_ROW_PITCH"><code>CL_IMAGE_<wbr>ROW_<wbr>PITCH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return calculated row pitch in bytes of a row of elements of the
         image object given by <em>image</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_SLICE_PITCH"></a><a href="#CL_IMAGE_SLICE_PITCH"><code>CL_&#8203;IMAGE_&#8203;SLICE_&#8203;PITCH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_SLICE_PITCH"></a><a href="#CL_IMAGE_SLICE_PITCH"><code>CL_IMAGE_<wbr>SLICE_<wbr>PITCH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return calculated slice pitch in bytes of a 2D slice for the 3D
         image object or size of each image in a 1D or 2D image array given
         by <em>image</em>.
         For a 1D image, 1D image buffer and 2D image object return 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_WIDTH"></a><a href="#CL_IMAGE_WIDTH"><code>CL_&#8203;IMAGE_&#8203;WIDTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_WIDTH"></a><a href="#CL_IMAGE_WIDTH"><code>CL_IMAGE_<wbr>WIDTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return width of the image in pixels.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_HEIGHT"></a><a href="#CL_IMAGE_HEIGHT"><code>CL_&#8203;IMAGE_&#8203;HEIGHT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_HEIGHT"></a><a href="#CL_IMAGE_HEIGHT"><code>CL_IMAGE_<wbr>HEIGHT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return height of the image in pixels.
         For a 1D image, 1D image buffer and 1D image array object, height =
         0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_DEPTH"></a><a href="#CL_IMAGE_DEPTH"><code>CL_&#8203;IMAGE_&#8203;DEPTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_DEPTH"></a><a href="#CL_IMAGE_DEPTH"><code>CL_IMAGE_<wbr>DEPTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return depth of the image in pixels.
         For a 1D image, 1D image buffer, 2D image or 1D and 2D image array
         object, depth = 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_ARRAY_SIZE"></a><a href="#CL_IMAGE_ARRAY_SIZE"><code>CL_&#8203;IMAGE_&#8203;ARRAY_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_ARRAY_SIZE"></a><a href="#CL_IMAGE_ARRAY_SIZE"><code>CL_IMAGE_<wbr>ARRAY_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return number of images in the image array.
         If <em>image</em> is not an image array, 0 is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_BUFFER"></a><a href="#CL_IMAGE_BUFFER"><code>CL_&#8203;IMAGE_&#8203;BUFFER</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_BUFFER"></a><a href="#CL_IMAGE_BUFFER"><code>CL_IMAGE_<wbr>BUFFER</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2 and <a href="#unified-spec">deprecated by</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_mem</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_mem</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return buffer object associated with <em>image</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_NUM_MIP_LEVELS"></a><a href="#CL_IMAGE_NUM_MIP_LEVELS"><code>CL_&#8203;IMAGE_&#8203;NUM_&#8203;MIP_&#8203;LEVELS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_NUM_MIP_LEVELS"></a><a href="#CL_IMAGE_NUM_MIP_LEVELS"><code>CL_IMAGE_<wbr>NUM_<wbr>MIP_<wbr>LEVELS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return <code>num_mip_levels</code> associated with <em>image</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_NUM_SAMPLES"></a><a href="#CL_IMAGE_NUM_SAMPLES"><code>CL_&#8203;IMAGE_&#8203;NUM_&#8203;SAMPLES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_NUM_SAMPLES"></a><a href="#CL_IMAGE_NUM_SAMPLES"><code>CL_IMAGE_<wbr>NUM_<wbr>SAMPLES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return <code>num_samples</code> associated with <em>image</em>.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clGetImageInfo"><strong>clGetImageInfo</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetImageInfo"><strong>clGetImageInfo</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#image-info-table">Image Object Queries</a> table and <em>param_value</em> is
 not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>image</em> is a not a valid image object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>image</em> is a not a valid image object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -13667,7 +13522,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_pipes">5.4. Pipes</h3>
+<h3 id="_pipes"><a class="anchor" href="#_pipes"></a>5.4. Pipes</h3>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -13704,7 +13559,7 @@
 </ul>
 </div>
 <div class="sect3">
-<h4 id="_creating_pipe_objects">5.4.1. Creating Pipe Objects</h4>
+<h4 id="_creating_pipe_objects"><a class="anchor" href="#_creating_pipe_objects"></a>5.4.1. Creating Pipe Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -13744,10 +13599,10 @@
 pipe object and how it will be used.
 The <a href="#memory-flags">Memory Flags</a> table describes the possible values for
 <em>flags</em>.
-Only <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> and <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a> can be specified when
+Only <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> and <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a> can be specified when
 creating a pipe object.
 If the value specified for <em>flags</em> is 0, the default is used which is
-<a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> | <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;NO_&#8203;ACCESS</code></a>.</p>
+<a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> | <a href="#CL_MEM_HOST_NO_ACCESS"><code>CL_MEM_<wbr>HOST_<wbr>NO_<wbr>ACCESS</code></a>.</p>
 </li>
 <li>
 <p><em>pipe_packet_size</em> is the size in bytes of a pipe packet.</p>
@@ -13772,41 +13627,41 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreatePipe"><strong>clCreatePipe</strong></a> returns a valid non-zero pipe object and <em>errcode_ret</em> is set
-to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the pipe object is created successfully.
+to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the pipe object is created successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in <em>context</em> support Pipes.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in <em>context</em> support pipes.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if values specified in <em>flags</em> are not as defined
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if values specified in <em>flags</em> are not as defined
 above.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>properties</em> is not <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>properties</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PIPE_SIZE"><code>CL_&#8203;INVALID_&#8203;PIPE_&#8203;SIZE</code></a> if <em>pipe_packet_size</em> is 0 or the
-<em>pipe_packet_size</em> exceeds <a href="#CL_DEVICE_PIPE_MAX_PACKET_SIZE"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;MAX_&#8203;PACKET_&#8203;SIZE</code></a> value
+<p><a href="#CL_INVALID_PIPE_SIZE"><code>CL_INVALID_<wbr>PIPE_<wbr>SIZE</code></a> if <em>pipe_packet_size</em> is 0 or the
+<em>pipe_packet_size</em> exceeds <a href="#CL_DEVICE_PIPE_MAX_PACKET_SIZE"><code>CL_DEVICE_<wbr>PIPE_<wbr>MAX_<wbr>PACKET_<wbr>SIZE</code></a> value
 specified in the <a href="#device-queries-table">Device Queries</a> table for all
 devices in <em>context</em> or if <em>pipe_max_packets</em> is 0.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for the pipe object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -13821,7 +13676,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_pipe_object_queries">5.4.2. Pipe Object Queries</h4>
+<h4 id="_pipe_object_queries"><a class="anchor" href="#_pipe_object_queries"></a>5.4.2. Pipe Object Queries</h4>
 <div class="paragraph">
 <p>To get information that is common to all memory objects, use the
 <a href="#clGetMemObjectInfo"><strong>clGetMemObjectInfo</strong></a> function described in <a href="#memory-object-queries">Memory
@@ -13885,26 +13740,26 @@
 </ul>
 </div>
 <div class="paragraph">
-<p><a href="#clGetPipeInfo"><strong>clGetPipeInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed successfully.
+<p><a href="#clGetPipeInfo"><strong>clGetPipeInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>pipe</em> is a not a valid pipe object.</p>
+</li>
+<li>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#pipe-info-table">Pipe Object Queries</a> table and <em>param_value</em> is
 not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>pipe</em> is a not a valid pipe object.</p>
-</li>
-<li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -13918,39 +13773,39 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_pipe_info</strong></th>
+<th class="tableblock halign-left valign-top">Pipe Info</th>
 <th class="tableblock halign-left valign-top">Return type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PIPE_PACKET_SIZE"></a><a href="#CL_PIPE_PACKET_SIZE"><code>CL_&#8203;PIPE_&#8203;PACKET_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PIPE_PACKET_SIZE"></a><a href="#CL_PIPE_PACKET_SIZE"><code>CL_PIPE_<wbr>PACKET_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return pipe packet size specified when <em>pipe</em> is created with
         <a href="#clCreatePipe"><strong>clCreatePipe</strong></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PIPE_MAX_PACKETS"></a><a href="#CL_PIPE_MAX_PACKETS"><code>CL_&#8203;PIPE_&#8203;MAX_&#8203;PACKETS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PIPE_MAX_PACKETS"></a><a href="#CL_PIPE_MAX_PACKETS"><code>CL_PIPE_<wbr>MAX_<wbr>PACKETS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return max. number of packets specified when <em>pipe</em> is created with
         <a href="#clCreatePipe"><strong>clCreatePipe</strong></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PIPE_PROPERTIES"></a><a href="#CL_PIPE_PROPERTIES"><code>CL_&#8203;PIPE_&#8203;PROPERTIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PIPE_PROPERTIES"></a><a href="#CL_PIPE_PROPERTIES"><code>CL_PIPE_<wbr>PROPERTIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_pipe_properties[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_pipe_<wbr>properties</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the properties argument specified in <a href="#clCreatePipe"><strong>clCreatePipe</strong></a>.</p>
 <p class="tableblock">        If the <em>properties</em> argument specified in <a href="#clCreatePipe"><strong>clCreatePipe</strong></a> used to
-        create <em>pipe</em> was not <code>NULL</code>, the implementation must return the values
-        specified in the properties argument.</p>
+        create <em>pipe</em> was not <code>NULL</code>, the implementation must return the
+        values specified in the properties argument in the same order and
+        without including additional properties.</p>
 <p class="tableblock">        If the <em>properties</em> argument specified in <a href="#clCreatePipe"><strong>clCreatePipe</strong></a> used to
-        create <em>pipe</em> was <code>NULL</code>, the implementation may return either a
-        <em>param_value_size_ret</em> of 0 (i.e. there are no properties to be
-        returned), or the implementation may return a pipe property value
-        of 0 (where 0 is used to terminate the properties list).</p></td>
+        create <em>pipe</em> was <code>NULL</code>, the implementation must return
+        <em>param_value_size_ret</em> equal to 0, indicating that there are no
+        properties to be returned.</p></td>
 </tr>
 </tbody>
 </table>
@@ -13959,9 +13814,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_querying_unmapping_migrating_retaining_and_releasing_memory_objects">5.5. Querying, Unmapping, Migrating, Retaining and Releasing Memory Objects</h3>
+<h3 id="_querying_unmapping_migrating_retaining_and_releasing_memory_objects"><a class="anchor" href="#_querying_unmapping_migrating_retaining_and_releasing_memory_objects"></a>5.5. Querying, Unmapping, Migrating, Retaining and Releasing Memory Objects</h3>
 <div class="sect3">
-<h4 id="_retaining_and_releasing_memory_objects">5.5.1. Retaining and Releasing Memory Objects</h4>
+<h4 id="_retaining_and_releasing_memory_objects"><a class="anchor" href="#_retaining_and_releasing_memory_objects"></a>5.5.1. Retaining and Releasing Memory Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -13984,22 +13839,22 @@
 <p>The <em>memobj</em> reference count is incremented.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainMemObject"><strong>clRetainMemObject</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clRetainMemObject"><strong>clRetainMemObject</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>memobj</em> is not a valid memory object (buffer
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>memobj</em> is not a valid memory object (buffer
 or image object).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -14033,21 +13888,21 @@
 <p>The <em>memobj</em> reference count is decremented.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseMemObject"><strong>clReleaseMemObject</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseMemObject"><strong>clReleaseMemObject</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>memobj</em> is not a valid memory object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>memobj</em> is not a valid memory object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -14066,7 +13921,8 @@
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>To register a user callback function with a memory object, call the function</p>
+<p>To register a callback function with a memory object that is called when
+the memory object is destroyed, call the function</p>
 </div>
 <div id="clSetMemObjectDestructorCallback" class="listingblock">
 <div class="content">
@@ -14091,26 +13947,25 @@
 <div class="ulist">
 <ul>
 <li>
-<p><em>memobj</em> is a valid memory object.</p>
+<p><em>memobj</em> specifies the memory object to register the callback to.</p>
 </li>
 <li>
-<p><em>pfn_notify</em> is the callback function that can be registered by the
-application.
+<p><em>pfn_notify</em> is the callback function to register.
 This callback function may be called asynchronously by the OpenCL
 implementation.
-It is the applications responsibility to ensure that the callback function
+It is the application&#8217;s responsibility to ensure that the callback function
 is thread-safe.
 The parameters to this callback function are:</p>
 <div class="ulist">
 <ul>
 <li>
 <p><em>memobj</em> is the memory object being deleted.
-When the user callback is called by the implementation, this memory
+When the callback function is called by the implementation, this memory
 object is not longer valid.
 <em>memobj</em> is only provided for reference purposes.</p>
 </li>
 <li>
-<p><em>user_data</em> is a pointer to user supplied data.</p>
+<p><em>user_data</em> is a pointer to user-supplied data.</p>
 </li>
 </ul>
 </div>
@@ -14123,36 +13978,35 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>Each call to <a href="#clSetMemObjectDestructorCallback"><strong>clSetMemObjectDestructorCallback</strong></a> registers the specified user
-callback function on a callback stack associated with <em>memobj</em>.
-The registered user callback functions are called in the reverse order in
+<p>Each call to <a href="#clSetMemObjectDestructorCallback"><strong>clSetMemObjectDestructorCallback</strong></a> registers the specified
+callback function on a destructor callback stack associated with <em>memobj</em>.
+The registered callback functions are called in the reverse order in
 which they were registered.
-The user callback functions are called and then the memory objects resources
-are freed and the memory object is deleted.
-This provides a mechanism for the application (and libraries) using <em>memobj</em>
-to be notified when the memory referenced by <em>host_ptr</em>, specified when the
-memory object is created and used as the storage bits for the memory object,
-can be reused or freed.</p>
+The registered callback functions are called and then the memory object&#8217;s
+resources are freed and the memory object is deleted.
+Therefore, the memory object destructor callback provides a mechanism for
+an application to safely re-use or free a <em>host_ptr</em> that was specified when
+<em>memobj</em> was created and used as the storage bits for the memory object.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clSetMemObjectDestructorCallback"><strong>clSetMemObjectDestructorCallback</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is
+<p><a href="#clSetMemObjectDestructorCallback"><strong>clSetMemObjectDestructorCallback</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is
 executed successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>memobj</em> is not a valid memory object.</p>
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>memobj</em> is not a valid memory object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -14167,7 +14021,7 @@
 <div class="paragraph">
 <p>When the user callback function is called by the implementation, the
 contents of the memory region pointed to by <em>host_ptr</em> (if the memory object
-is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>) are undefined.
+is created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>) are undefined.
 The callback function is typically used by the application to either free or
 reuse the memory region pointed to by <em>host_ptr</em>.</p>
 </div>
@@ -14227,7 +14081,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="unmapping-mapped-memory">5.5.2. Unmapping Mapped Memory Objects</h4>
+<h4 id="unmapping-mapped-memory"><a class="anchor" href="#unmapping-mapped-memory"></a>5.5.2. Unmapping Mapped Memory Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -14275,16 +14129,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -14306,40 +14157,40 @@
 for a region of the buffer object being mapped.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>memobj</em> is not a valid memory object or is a
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>memobj</em> is not a valid memory object or is a
 pipe object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>mapped_ptr</em> is not a valid pointer returned by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>mapped_ptr</em> is not a valid pointer returned by
 <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> or <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a> for <em>memobj</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or if <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and
 <em>memobj</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
@@ -14349,7 +14200,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="accessing-mapped-regions">5.5.3. Accessing mapped regions of a memory object</h4>
+<h4 id="accessing-mapped-regions"><a class="anchor" href="#accessing-mapped-regions"></a>5.5.3. Accessing mapped regions of a memory object</h4>
 <div class="paragraph">
 <p>This section describes the behavior of OpenCL commands that access mapped
 regions of a memory object.</p>
@@ -14357,7 +14208,7 @@
 <div class="paragraph">
 <p>The contents of the region of a memory object and associated memory objects
 (sub-buffer objects or 1D image buffer objects that overlap this region)
-mapped for writing (i.e. <a href="#CL_MAP_WRITE"><code>CL_&#8203;MAP_&#8203;WRITE</code></a> or <a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_&#8203;MAP_&#8203;WRITE_&#8203;INVALIDATE_&#8203;REGION</code></a> is
+mapped for writing (i.e. <a href="#CL_MAP_WRITE"><code>CL_MAP_<wbr>WRITE</code></a> or <a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_MAP_<wbr>WRITE_<wbr>INVALIDATE_<wbr>REGION</code></a> is
 set in <em>map_flags</em> argument to <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a>, or <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>)
 are considered to be undefined until this region is unmapped.</p>
 </div>
@@ -14365,7 +14216,7 @@
 <p>Multiple commands in command-queues can map a region or overlapping regions
 of a memory object and associated memory objects (sub-buffer objects or 1D
 image buffer objects that overlap this region) for reading (i.e. <em>map_flags</em>
-= <a href="#CL_MAP_READ"><code>CL_&#8203;MAP_&#8203;READ</code></a>).
+= <a href="#CL_MAP_READ"><code>CL_MAP_<wbr>READ</code></a>).
 The contents of the regions of a memory object mapped for reading can also
 be read by kernels and other OpenCL commands (such as <a href="#clEnqueueCopyBuffer"><strong>clEnqueueCopyBuffer</strong></a>)
 executing on a device(s).</p>
@@ -14374,7 +14225,7 @@
 <p>Mapping (and unmapping) overlapped regions in a memory object and/or
 associated memory objects (sub-buffer objects or 1D image buffer objects
 that overlap this region) for writing is an error and will result in
-<a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> error returned by <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a>, or
+<a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> error returned by <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a>, or
 <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>.</p>
 </div>
 <div class="paragraph">
@@ -14411,7 +14262,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_migrating_memory_objects">5.5.4. Migrating Memory Objects</h4>
+<h4 id="_migrating_memory_objects"><a class="anchor" href="#_migrating_memory_objects"></a>5.5.4. Migrating Memory Objects</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -14477,7 +14328,7 @@
 <p><em>command_queue</em> is a valid host command-queue.
 The specified set of memory objects in <em>mem_objects</em> will be migrated to the
 OpenCL device associated with <em>command_queue</em> or to the host if the
-<a href="#CL_MIGRATE_MEM_OBJECT_HOST"><code>CL_&#8203;MIGRATE_&#8203;MEM_&#8203;OBJECT_&#8203;HOST</code></a> has been specified.</p>
+<a href="#CL_MIGRATE_MEM_OBJECT_HOST"><code>CL_MIGRATE_<wbr>MEM_<wbr>OBJECT_<wbr>HOST</code></a> has been specified.</p>
 </li>
 <li>
 <p><em>num_mem_objects</em> is the number of memory objects specified in
@@ -14507,39 +14358,37 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <table id="migration-flags-table" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 24. Supported values for cl_mem_migration_flags</caption>
+<caption class="title">Table 24. List of supported migration flags by <a href="#clEnqueueMigrateMemObjects">clEnqueueMigrateMemObjects</a></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_mem_migration flags</strong></th>
+<th class="tableblock halign-left valign-top">Memory Migration Flags</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MIGRATE_MEM_OBJECT_HOST"></a><a href="#CL_MIGRATE_MEM_OBJECT_HOST"><code>CL_&#8203;MIGRATE_&#8203;MEM_&#8203;OBJECT_&#8203;HOST</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MIGRATE_MEM_OBJECT_HOST"></a><a href="#CL_MIGRATE_MEM_OBJECT_HOST"><code>CL_MIGRATE_<wbr>MEM_<wbr>OBJECT_<wbr>HOST</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag indicates that the specified set of memory objects are to be
     migrated to the host, regardless of the target command-queue.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED"></a><a href="#CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED"><code>CL_&#8203;MIGRATE_&#8203;MEM_&#8203;OBJECT_&#8203;CONTENT_&#8203;UNDEFINED</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED"></a><a href="#CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED"><code>CL_MIGRATE_<wbr>MEM_<wbr>OBJECT_<wbr>CONTENT_<wbr>UNDEFINED</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag indicates that the contents of the set of memory objects are
     undefined after migration.
@@ -14579,50 +14428,50 @@
 <a href="#clEnqueueMigrateMemObjects"><strong>clEnqueueMigrateMemObjects</strong></a> could result in undefined results.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueMigrateMemObjects"><strong>clEnqueueMigrateMemObjects</strong></a> return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueMigrateMemObjects"><strong>clEnqueueMigrateMemObjects</strong></a> return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 memory objects in <em>mem_objects</em> are not the same or if the context
 associated with <em>command_queue</em> and events in <em>event_wait_list</em> are not
 the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if any of the memory objects in <em>mem_objects</em> is
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if any of the memory objects in <em>mem_objects</em> is
 not a valid memory object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_mem_objects</em> is zero or if <em>mem_objects</em> is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_mem_objects</em> is zero or if <em>mem_objects</em> is
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>flags</em> is not 0 or is not any of the values
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>flags</em> is not 0 or is not any of the values
 described in the table above.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for the specified set of memory objects in <em>mem_objects</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -14631,7 +14480,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="memory-object-queries">5.5.5. Memory Object Queries</h4>
+<h4 id="memory-object-queries"><a class="anchor" href="#memory-object-queries"></a>5.5.5. Memory Object Queries</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -14686,26 +14535,27 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_mem_info</strong></th>
+<th class="tableblock halign-left valign-top">Memory Object Info</th>
 <th class="tableblock halign-left valign-top">Return type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_TYPE"></a><a href="#CL_MEM_TYPE"><code>CL_&#8203;MEM_&#8203;TYPE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_mem_object_type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_TYPE"></a><a href="#CL_MEM_TYPE"><code>CL_MEM_<wbr>TYPE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_mem_<wbr>object_<wbr>type</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns one of the following values:</p>
-<p class="tableblock">        <a id="CL_MEM_OBJECT_BUFFER"></a><a href="#CL_MEM_OBJECT_BUFFER"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;BUFFER</code></a> if <em>memobj</em> is created with <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a>,
+<p class="tableblock">        <a id="CL_MEM_OBJECT_BUFFER"></a><a href="#CL_MEM_OBJECT_BUFFER"><code>CL_MEM_<wbr>OBJECT_<wbr>BUFFER</code></a> if <em>memobj</em> is created with <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a>,
         <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a>, or <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a>.</p>
-<p class="tableblock">        cl_image_desc.image_type argument value if <em>memobj</em> is created with
-        <a href="#clCreateImage"><strong>clCreateImage</strong></a>, <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>, <a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a>, or
-        <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>.</p>
-<p class="tableblock">        <a id="CL_MEM_OBJECT_PIPE"></a><a href="#CL_MEM_OBJECT_PIPE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;PIPE</code></a> if <em>memobj</em> is created with <a href="#clCreatePipe"><strong>clCreatePipe</strong></a>.</p></td>
+<p class="tableblock">        <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a> if <em>memobj</em> is created with <a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a>.</p>
+<p class="tableblock">        <a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE3D</code></a> if <em>memobj</em> is created with <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>.</p>
+<p class="tableblock">        The value of <em>image_desc</em>&#8594;<em>image_type</em> if <em>memobj</em> is created with
+        <a href="#clCreateImage"><strong>clCreateImage</strong></a> or <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>.</p>
+<p class="tableblock">        <a id="CL_MEM_OBJECT_PIPE"></a><a href="#CL_MEM_OBJECT_PIPE"><code>CL_MEM_<wbr>OBJECT_<wbr>PIPE</code></a> if <em>memobj</em> is created with <a href="#clCreatePipe"><strong>clCreatePipe</strong></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_FLAGS"></a><a href="#CL_MEM_FLAGS"><code>CL_&#8203;MEM_&#8203;FLAGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_mem_flags</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_FLAGS"></a><a href="#CL_MEM_FLAGS"><code>CL_MEM_<wbr>FLAGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_mem_<wbr>flags</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the flags argument value specified when <em>memobj</em> is created
         with <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a>,<br>
         <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a>,<br>
@@ -14719,133 +14569,118 @@
         from parent buffer is also returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_SIZE"></a><a href="#CL_MEM_SIZE"><code>CL_&#8203;MEM_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_SIZE"></a><a href="#CL_MEM_SIZE"><code>CL_MEM_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return actual size of the data store associated with <em>memobj</em> in
         bytes.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_PTR"></a><a href="#CL_MEM_HOST_PTR"><code>CL_&#8203;MEM_&#8203;HOST_&#8203;PTR</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">void *</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_HOST_PTR"></a><a href="#CL_MEM_HOST_PTR"><code>CL_MEM_<wbr>HOST_<wbr>PTR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>void</code> *</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">If <em>memobj</em> is created with <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a>, <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a>,
         <a href="#clCreateImage"><strong>clCreateImage</strong></a>, <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>, <a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a>, or
-        <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>, and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> is specified in mem_flags,
+        <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>, and <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> is specified in mem_flags,
         return the host_ptr argument value specified when <em>memobj</em> is created.</p>
 <p class="tableblock">        Otherwise, if <em>memobj</em> is created with <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a>, and
         <em>memobj</em> is created from a buffer that was created with
-        <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> specified in mem_flags, return the host_ptr
+        <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> specified in mem_flags, return the host_ptr
         passed to <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a>, plus
         the origin value specified in buffer_create_info when <em>memobj</em> is
         created.</p>
-<p class="tableblock">        Otherwise, return <code>NULL</code>.</p></td>
+<p class="tableblock">        Otherwise, returns <code>NULL</code>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_MAP_COUNT"></a><a href="#CL_MEM_MAP_COUNT"><code>CL_&#8203;MEM_&#8203;MAP_&#8203;COUNT</code></a><sup>11</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_MAP_COUNT"></a><a href="#CL_MEM_MAP_COUNT"><code>CL_MEM_<wbr>MAP_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_23" class="footnote" href="#_footnotedef_23" title="View footnote.">23</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Map count.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_REFERENCE_COUNT"></a><a href="#CL_MEM_REFERENCE_COUNT"><code>CL_&#8203;MEM_&#8203;REFERENCE_&#8203;COUNT</code></a><sup>12</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_REFERENCE_COUNT"></a><a href="#CL_MEM_REFERENCE_COUNT"><code>CL_MEM_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_24" class="footnote" href="#_footnotedef_24" title="View footnote.">24</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return <em>memobj</em> reference count.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_CONTEXT"></a><a href="#CL_MEM_CONTEXT"><code>CL_&#8203;MEM_&#8203;CONTEXT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_CONTEXT"></a><a href="#CL_MEM_CONTEXT"><code>CL_MEM_<wbr>CONTEXT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_context</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return context specified when memory object is created.
         If <em>memobj</em> is created using <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a>, the context
         associated with the memory object specified as the <em>buffer</em> argument
         to <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a> is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_ASSOCIATED_MEMOBJECT"></a><a href="#CL_MEM_ASSOCIATED_MEMOBJECT"><code>CL_&#8203;MEM_&#8203;ASSOCIATED_&#8203;MEMOBJECT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_ASSOCIATED_MEMOBJECT"></a><a href="#CL_MEM_ASSOCIATED_MEMOBJECT"><code>CL_MEM_<wbr>ASSOCIATED_<wbr>MEMOBJECT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_mem</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Return memory object from which <em>memobj</em> is created.
-        This returns the memory object specified as buffer argument to
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_mem</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return memory object from which <em>memobj</em> is created.</p>
+<p class="tableblock">        This returns the memory object specified as buffer argument to
         <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a> if <em>memobj</em> is a subbuffer object created using
         <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a>.</p>
-<p class="tableblock">        This returns the mem_object specified in cl_image_desc if <em>memobj</em>
-        is an image object.</p>
-<p class="tableblock">        Otherwise a <code>NULL</code> value is returned.</p></td>
+<p class="tableblock">        This returns <em>image_desc</em>&#8594;<em>mem_object</em> if <em>memobj</em>
+        is an image object created using <a href="#clCreateImage"><strong>clCreateImage</strong></a> or
+        <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>.</p>
+<p class="tableblock">        Otherwise, returns <code>NULL</code>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OFFSET"></a><a href="#CL_MEM_OFFSET"><code>CL_&#8203;MEM_&#8203;OFFSET</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OFFSET"></a><a href="#CL_MEM_OFFSET"><code>CL_MEM_<wbr>OFFSET</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return offset if <em>memobj</em> is a sub-buffer object created using
         <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a>.</p>
 <p class="tableblock">        This return 0 if <em>memobj</em> is not a subbuffer object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_USES_SVM_POINTER"></a><a href="#CL_MEM_USES_SVM_POINTER"><code>CL_&#8203;MEM_&#8203;USES_&#8203;SVM_&#8203;POINTER</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_USES_SVM_POINTER"></a><a href="#CL_MEM_USES_SVM_POINTER"><code>CL_MEM_<wbr>USES_<wbr>SVM_<wbr>POINTER</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Return <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if <em>memobj</em> is a buffer object that was created with
-        <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> or is a sub-buffer object of a buffer object
-        that was created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> and the <em>host_ptr</em>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return <a href="#CL_TRUE"><code>CL_TRUE</code></a> if <em>memobj</em> is a buffer object that was created with
+        <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> or is a sub-buffer object of a buffer object
+        that was created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> and the <em>host_ptr</em>
         specified when the buffer object was created is a SVM pointer;
-        otherwise returns <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p></td>
+        otherwise returns <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_PROPERTIES"></a><a href="#CL_MEM_PROPERTIES"><code>CL_&#8203;MEM_&#8203;PROPERTIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_PROPERTIES"></a><a href="#CL_MEM_PROPERTIES"><code>CL_MEM_<wbr>PROPERTIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_mem_properties[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_mem_<wbr>properties</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the properties argument specified in
         <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> or <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>.</p>
 <p class="tableblock">        If the <em>properties</em> argument specified in
         <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> or <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>
         used to create <em>memobj</em> was not <code>NULL</code>, the implementation must
-        return the values specified in the properties argument.</p>
-<p class="tableblock">        If <em>memobj</em> was created using <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a>, <a href="#clCreateImage"><strong>clCreateImage</strong></a>,
-        <a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a>, or <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>, or if the <em>properties</em>
-        argument specified in <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> or
-	<a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a> was <code>NULL</code>, the implementation may
-        return either a <em>param_value_size_ret</em> of 0 (i.e. there are no
-        properties to be returned), or the implementation may return a
-        property value of 0 (where 0 is used to terminate the properties
-        list).</p></td>
+        return the values specified in the properties argument in the
+        same order and without including additional properties.</p>
+<p class="tableblock">        If <em>memobj</em> was created using <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a>,
+        <a href="#clCreateSubBuffer"><strong>clCreateSubBuffer</strong></a>, <a href="#clCreateImage"><strong>clCreateImage</strong></a>, <a href="#clCreateImage2D"><strong>clCreateImage2D</strong></a>, or
+        <a href="#clCreateImage3D"><strong>clCreateImage3D</strong></a>, or if the <em>properties</em> argument specified
+        in <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> or
+        <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a> was <code>NULL</code>, the implementation
+        must return <em>param_value_size_ret</em> equal to 0, indicating that
+        there are no properties to be returned.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">11</dt>
-<dd>
-<p>The map count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for debugging.</p>
-</dd>
-<dt class="hdlist1">12</dt>
-<dd>
-<p>The reference count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for identifying memory leaks.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
-<p><a href="#clGetMemObjectInfo"><strong>clGetMemObjectInfo</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetMemObjectInfo"><strong>clGetMemObjectInfo</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if <em>memobj</em> is a not a valid memory object.</p>
+</li>
+<li>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#mem-info-table">Memory Object Info</a> table and <em>param_value</em> is not
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if <em>memobj</em> is a not a valid memory object.</p>
-</li>
-<li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -14855,7 +14690,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_shared_virtual_memory">5.6. Shared Virtual Memory</h3>
+<h3 id="_shared_virtual_memory"><a class="anchor" href="#_shared_virtual_memory"></a>5.6. Shared Virtual Memory</h3>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -14877,7 +14712,7 @@
 performance.</p>
 </div>
 <div class="sect3">
-<h4 id="_svm_sharing_granularity_coarse_and_fine_grained_sharing">5.6.1. SVM sharing granularity: coarse- and fine- grained sharing</h4>
+<h4 id="_svm_sharing_granularity_coarse_and_fine_grained_sharing"><a class="anchor" href="#_svm_sharing_granularity_coarse_and_fine_grained_sharing"></a>5.6.1. SVM sharing granularity: coarse- and fine- grained sharing</h4>
 <div class="paragraph">
 <p>OpenCL maintains memory consistency in a coarse-grained fashion in regions
 of buffers.
@@ -14897,10 +14732,10 @@
 <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a>.
 Memory consistency is guaranteed at synchronization points and the host
 can use calls to <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> and <a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a> or create a
-cl_mem buffer object using the SVM pointer and use OpenCLs existing host
+<code>cl_mem</code> buffer object using the SVM pointer and use OpenCL&#8217;s existing host
 API functions <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and <a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a> to
 update regions of the buffer.
-What coarse-grain buffer SVM adds to OpenCLs earlier buffer support are
+What coarse-grain buffer SVM adds to OpenCL&#8217;s earlier buffer support are
 the ability to share virtual memory pointers and a guarantee that
 concurrent access to the same memory allocation from multiple kernels on
 a single device is valid.
@@ -14931,7 +14766,7 @@
 consistency provided at synchronization points.
 There is no need for explicit calls to <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> and
 <a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a> or <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and
-<a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a> on a cl_mem buffer object created using the
+<a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a> on a <code>cl_mem</code> buffer object created using the
 SVM pointer.</p>
 </li>
 <li>
@@ -14940,8 +14775,8 @@
 non-overlapping memory regions, but attempts to update the same memory
 locations are undefined.
 Memory consistency is guaranteed at synchronization points without the
-need for explicit calls to to <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> and <a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a>
-or <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and <a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a> on a cl_mem
+need for explicit calls to <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> and <a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a>
+or <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and <a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a> on a <code>cl_mem</code>
 buffer object created using the SVM pointer.</p>
 </li>
 </ul>
@@ -14957,10 +14792,10 @@
 <p>Fine-grain buffer sharing provides fine-grain SVM only within buffers
 and is an extension of coarse-grain sharing.
 To support fine-grain buffer sharing in an OpenCL context, all devices
-in the context must support <a href="#CL_DEVICE_SVM_FINE_GRAIN_BUFFER"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;BUFFER</code></a>.</p>
+in the context must support <a href="#CL_DEVICE_SVM_FINE_GRAIN_BUFFER"><code>CL_DEVICE_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>BUFFER</code></a>.</p>
 </li>
 <li>
-<p>Fine-grain system sharing enables fine-grain sharing of the hosts
+<p>Fine-grain system sharing enables fine-grain sharing of the host&#8217;s
 entire virtual memory, including memory regions allocated by the system
 <strong>malloc</strong> API.
 OpenCL buffer objects are unnecessary and programmers can pass pointers
@@ -14981,7 +14816,7 @@
 work-items for processing.</p>
 </div>
 <div class="paragraph">
-<p>It is the programmers responsibility to ensure that no host code or
+<p>It is the programmer&#8217;s responsibility to ensure that no host code or
 executing kernels attempt to access a shared memory region after that memory
 is freed.
 We require the SVM implementation to work with either 32- or 64- bit host
@@ -15051,44 +14886,44 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_svm_mem_flags</strong></th>
+<th class="tableblock halign-left valign-top">SVM Memory Flags</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the SVM buffer will be read and written by a
     kernel.
     This is the default.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the SVM buffer will be written but not read by
     a kernel.</p>
-<p class="tableblock">    Reading from a SVM buffer created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> inside a kernel
+<p class="tableblock">    Reading from a SVM buffer created with <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> inside a kernel
     is undefined.</p>
-<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> and <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> are mutually exclusive.</p></td>
+<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> and <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> are mutually exclusive.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the SVM buffer object is a read-only memory
     object when used inside a kernel.</p>
-<p class="tableblock">    Writing to a SVM buffer created with <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> inside a kernel is
+<p class="tableblock">    Writing to a SVM buffer created with <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> inside a kernel is
     undefined.</p>
-<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> and <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a> are mutually
+<p class="tableblock">    <a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a> or <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> and <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a> are mutually
     exclusive.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_SVM_FINE_GRAIN_BUFFER"></a><a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;BUFFER</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_SVM_FINE_GRAIN_BUFFER"></a><a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_MEM_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>BUFFER</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This specifies that the application wants the OpenCL implementation to
     do a fine-grained allocation.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_SVM_ATOMICS"></a><a href="#CL_MEM_SVM_ATOMICS"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;ATOMICS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_SVM_ATOMICS"></a><a href="#CL_MEM_SVM_ATOMICS"><code>CL_MEM_<wbr>SVM_<wbr>ATOMICS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">This flag is valid only if <a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;BUFFER</code></a> is specified in
+<td class="tableblock halign-left valign-top"><p class="tableblock">This flag is valid only if <a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_MEM_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>BUFFER</code></a> is specified in
     flags.
     It is used to indicate that SVM atomic operations can control visibility
     of memory accesses in this SVM buffer.</p></td>
@@ -15096,16 +14931,16 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>If <a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;BUFFER</code></a> is not specified, the buffer can be created
+<p>If <a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_MEM_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>BUFFER</code></a> is not specified, the buffer can be created
 as a coarse grained SVM allocation.
-Similarly, if <a href="#CL_MEM_SVM_ATOMICS"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;ATOMICS</code></a> is not specified, the buffer can be created
+Similarly, if <a href="#CL_MEM_SVM_ATOMICS"><code>CL_MEM_<wbr>SVM_<wbr>ATOMICS</code></a> is not specified, the buffer can be created
 without support for SVM atomic operations (refer to an OpenCL kernel
 language specifications).</p>
 </div>
 <div class="paragraph">
 <p>Calling <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a> does not itself provide consistency for the shared
 memory region.
-When the host cannot use the SVM atomic operations, it must rely on OpenCLs
+When the host cannot use the SVM atomic operations, it must rely on OpenCL&#8217;s
 guaranteed memory consistency at synchronization points.</p>
 </div>
 <div class="paragraph">
@@ -15138,15 +14973,15 @@
 <p><em>context</em> is not a valid context, or no devices in <em>context</em> support SVM.</p>
 </li>
 <li>
-<p><em>flags</em> does not contain <a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;BUFFER</code></a> but does contain
-<a href="#CL_MEM_SVM_ATOMICS"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;ATOMICS</code></a>.</p>
+<p><em>flags</em> does not contain <a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_MEM_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>BUFFER</code></a> but does contain
+<a href="#CL_MEM_SVM_ATOMICS"><code>CL_MEM_<wbr>SVM_<wbr>ATOMICS</code></a>.</p>
 </li>
 <li>
 <p>Values specified in <em>flags</em> do not follow rules described for supported
 values in the <a href="#svm-flags-table">SVM Memory Flags</a> table.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;BUFFER</code></a> or <a href="#CL_MEM_SVM_ATOMICS"><code>CL_&#8203;MEM_&#8203;SVM_&#8203;ATOMICS</code></a> is specified in
+<p><a href="#CL_MEM_SVM_FINE_GRAIN_BUFFER"><code>CL_MEM_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>BUFFER</code></a> or <a href="#CL_MEM_SVM_ATOMICS"><code>CL_MEM_<wbr>SVM_<wbr>ATOMICS</code></a> is specified in
 <em>flags</em> and these are not supported by at least one device in <em>context</em>.</p>
 </li>
 <li>
@@ -15154,7 +14989,7 @@
 defined in the <a href="#svm-flags-table">SVM Memory Flags</a> table.</p>
 </li>
 <li>
-<p><em>size</em> is 0 or &gt; <a href="#CL_DEVICE_MAX_MEM_ALLOC_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;MEM_&#8203;ALLOC_&#8203;SIZE</code></a> value for any device in
+<p><em>size</em> is 0 or &gt; <a href="#CL_DEVICE_MAX_MEM_ALLOC_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>MEM_<wbr>ALLOC_<wbr>SIZE</code></a> value for any device in
 <em>context</em>.</p>
 </li>
 <li>
@@ -15310,49 +15145,47 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueSVMFree"><strong>clEnqueueSVMFree</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueSVMFree"><strong>clEnqueueSVMFree</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_svm_pointers</em> is 0 and <em>svm_pointers</em> is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_svm_pointers</em> is 0 and <em>svm_pointers</em> is
 non-<code>NULL</code>, <em>or</em> if <em>svm_pointers</em> is <code>NULL</code> and <em>num_svm_pointers</em> is
 not 0.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -15402,7 +15235,7 @@
 <em>non-blocking</em>.</p>
 </li>
 <li>
-<p>If <em>blocking_copy</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> i.e. the copy command is blocking,
+<p>If <em>blocking_copy</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a> i.e. the copy command is blocking,
 <a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a> does not return until the buffer data has been copied
 into memory pointed to by <em>dst_ptr</em>.</p>
 </li>
@@ -15433,20 +15266,18 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular read / write
-command and can be used to query or queue a wait for this particular command
-to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this read / write command
+and can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_copy</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> i.e. the copy command is non-blocking,
+<p>If <em>blocking_copy</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a> i.e. the copy command is non-blocking,
 <a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a> queues a non-blocking copy command and returns.
 The contents of the buffer that <em>dst_ptr</em> points to cannot be used until the
 copy command has completed.
@@ -15461,47 +15292,47 @@
 context from which <em>command_queue</em> was created the behavior is undefined.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the copy operation is
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the copy operation is
 blocking and the execution status of any of the events in
 <em>event_wait_list</em> is a negative integer value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>dst_ptr</em> or <em>src_ptr</em> are <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>dst_ptr</em> or <em>src_ptr</em> are <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;OVERLAP</code></a> if the values specified for <em>dst_ptr</em>, <em>src_ptr</em> and
+<p><a href="#CL_MEM_COPY_OVERLAP"><code>CL_MEM_<wbr>COPY_<wbr>OVERLAP</code></a> if the values specified for <em>dst_ptr</em>, <em>src_ptr</em> and
 <em>size</em> result in an overlapping copy.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -15591,62 +15422,59 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueSVMMemFill"><strong>clEnqueueSVMMemFill</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueSVMMemFill"><strong>clEnqueueSVMMemFill</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if the context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if the context associated with <em>command_queue</em> and
 events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>svm_ptr</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>svm_ptr</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>svm_ptr</em> is not aligned to <em>pattern_size</em> bytes.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>svm_ptr</em> is not aligned to <em>pattern_size</em> bytes.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pattern</em> is <code>NULL</code> or if <em>pattern_size</em> is 0 or if
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pattern</em> is <code>NULL</code> or if <em>pattern_size</em> is 0 or if
 <em>pattern_size</em> is not one of {1, 2, 4, 8, 16, 32, 64, 128}.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>size</em> is not a multiple of <em>pattern_size</em>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>size</em> is not a multiple of <em>pattern_size</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -15720,26 +15548,23 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_map</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> does not return until the
+<p>If <em>blocking_map</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> does not return until the
 application can access the contents of the SVM region specified by <em>svm_ptr</em>
 and <em>size</em> on the host.</p>
 </div>
 <div class="paragraph">
-<p>If <em>blocking_map</em> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> i.e. map operation is non-blocking, the region
+<p>If <em>blocking_map</em> is <a href="#CL_FALSE"><code>CL_FALSE</code></a> i.e. map operation is non-blocking, the region
 specified by <em>svm_ptr</em> and <em>size</em> cannot be used until the map command has
 completed.
 The <em>event</em> argument returns an event object which can be used to query the
@@ -15752,47 +15577,47 @@
 already mapped in the host address space.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and events
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and events
 in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>svm_ptr</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>svm_ptr</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>size</em> is 0 or if values specified in <em>map_flags</em>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>size</em> is 0 or if values specified in <em>map_flags</em>
 are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the map operation is
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the map operation is
 blocking and the execution status of any of the events in
 <em>event_wait_list</em> is a negative integer value.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -15856,16 +15681,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-<a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> can be used instead.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -15874,38 +15696,38 @@
 the region of the SVM buffer specified in these calls.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and events
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and events
 in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>svm_ptr</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>svm_ptr</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or if <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -15921,14 +15743,14 @@
 <p>If a coarse-grained SVM buffer is currently mapped for writing, the
 application must ensure that the SVM buffer is unmapped before any enqueued
 kernels or commands that read from or write to this SVM buffer or any of its
-associated cl_mem buffer objects begin execution; otherwise the behavior is
+associated <code>cl_mem</code> buffer objects begin execution; otherwise the behavior is
 undefined.</p>
 </div>
 <div class="paragraph">
 <p>If a coarse-grained SVM buffer is currently mapped for reading, the
 application must ensure that the SVM buffer is unmapped before any enqueued
 kernels or commands that write to this memory object or any of its
-associated cl_mem buffer objects begin execution; otherwise the behavior is
+associated <code>cl_mem</code> buffer objects begin execution; otherwise the behavior is
 undefined.</p>
 </div>
 <div class="paragraph">
@@ -16024,19 +15846,18 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue another command
-that waits for this command to complete.
-If the <em>event_wait_list</em> and <em>event</em> arguments are not <code>NULL</code>, the <em>event</em>
-argument should not refer to an element of the <em>event_wait_list</em> array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or queue a wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>Once the event returned by <a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a> has become <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>,
+<p>Once the event returned by <a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a> has become <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>,
 the ranges specified by svm pointers and sizes have been successfully
 migrated to the device associated with command queue.</p>
 </div>
@@ -16047,44 +15868,44 @@
 could result in undefined results.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command queue</em> does not support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and events
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and events
 in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_svm_pointers</em> is zero or <em>svm_pointers</em> is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_svm_pointers</em> is zero or <em>svm_pointers</em> is
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>sizes</em>[i] is non-zero range [<em>svm_pointers</em>[i],
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>sizes</em>[i] is non-zero range [<em>svm_pointers</em>[i],
 <em>svm_pointers</em>[i]+<em>sizes</em>[i]) is not contained within an existing
 <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a> allocation.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or if <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16093,7 +15914,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_memory_consistency_for_svm_allocations">5.6.2. Memory consistency for SVM allocations</h4>
+<h4 id="_memory_consistency_for_svm_allocations"><a class="anchor" href="#_memory_consistency_for_svm_allocations"></a>5.6.2. Memory consistency for SVM allocations</h4>
 <div class="paragraph">
 <p>To ensure memory consistency in SVM allocations, the program can rely on the
 guaranteed memory consistency at synchronization points.
@@ -16107,8 +15928,8 @@
 consistent view of a SVM buffers memory when it is shared by multiple
 devices.
 For example, assume that two devices share a SVM pointer.
-The host can create a cl_mem buffer object using <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or
-<a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> and <em>host_ptr</em> set
+The host can create a <code>cl_mem</code> buffer object using <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or
+<a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a> with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> and <em>host_ptr</em> set
 to the SVM pointer and then create two disjoint sub-buffers with starting
 virtual addresses <em>sb1_ptr</em> and <em>sb2_ptr</em>.
 These pointers (<em>sb1_ptr</em> and <em>sb2_ptr</em>) can be passed to kernels executing
@@ -16120,7 +15941,7 @@
 </div>
 <div class="paragraph">
 <p>When the host and devices are able to use SVM atomic operations (i.e.
-<a href="#CL_DEVICE_SVM_ATOMICS"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;ATOMICS</code></a> is set in <a href="#CL_DEVICE_SVM_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;CAPABILITIES</code></a>), these atomic
+<a href="#CL_DEVICE_SVM_ATOMICS"><code>CL_DEVICE_<wbr>SVM_<wbr>ATOMICS</code></a> is set in <a href="#CL_DEVICE_SVM_CAPABILITIES"><code>CL_DEVICE_<wbr>SVM_<wbr>CAPABILITIES</code></a>), these atomic
 operations can be used to provide memory consistency at a fine grain in a
 shared memory region.
 The effect of these operations is visible to the host and all devices with
@@ -16129,7 +15950,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_sampler_objects">5.7. Sampler Objects</h3>
+<h3 id="_sampler_objects"><a class="anchor" href="#_sampler_objects"></a>5.7. Sampler Objects</h3>
 <div class="paragraph">
 <p>A sampler object describes how to sample an image when the image is read in
 the kernel.
@@ -16142,7 +15963,7 @@
 functions.</p>
 </div>
 <div class="sect3">
-<h4 id="_creating_sampler_objects">5.7.1. Creating Sampler Objects</h4>
+<h4 id="_creating_sampler_objects"><a class="anchor" href="#_creating_sampler_objects"></a>5.7.1. Creating Sampler Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -16197,51 +16018,51 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_sampler_properties</strong> enum</th>
+<th class="tableblock halign-left valign-top">Sampler Property</th>
 <th class="tableblock halign-left valign-top">Property Value</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_NORMALIZED_COORDS"></a><a href="#CL_SAMPLER_NORMALIZED_COORDS"><code>CL_&#8203;SAMPLER_&#8203;NORMALIZED_&#8203;COORDS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_NORMALIZED_COORDS"></a><a href="#CL_SAMPLER_NORMALIZED_COORDS"><code>CL_SAMPLER_<wbr>NORMALIZED_<wbr>COORDS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A boolean value that specifies whether the image coordinates
         specified are normalized or not.</p>
 <p class="tableblock">        The default value (i.e. the value used if this property is not
-        specified in sampler_properties) is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>.</p></td>
+        specified in sampler_properties) is <a href="#CL_TRUE"><code>CL_TRUE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_ADDRESSING_MODE"></a><a href="#CL_SAMPLER_ADDRESSING_MODE"><code>CL_&#8203;SAMPLER_&#8203;ADDRESSING_&#8203;MODE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_addressing_mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_ADDRESSING_MODE"></a><a href="#CL_SAMPLER_ADDRESSING_MODE"><code>CL_SAMPLER_<wbr>ADDRESSING_<wbr>MODE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_addressing_<wbr>mode</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Specifies how out-of-range image coordinates are handled when
         reading from an image.
         Valid values are:</p>
-<p class="tableblock">        <a id="CL_ADDRESS_NONE"></a><a href="#CL_ADDRESS_NONE"><code>CL_&#8203;ADDRESS_&#8203;NONE</code></a> - Behavior is undefined for out-of-range
+<p class="tableblock">        <a id="CL_ADDRESS_NONE"></a><a href="#CL_ADDRESS_NONE"><code>CL_ADDRESS_<wbr>NONE</code></a> - Behavior is undefined for out-of-range
         image coordinates.</p>
-<p class="tableblock">        <a id="CL_ADDRESS_CLAMP_TO_EDGE"></a><a href="#CL_ADDRESS_CLAMP_TO_EDGE"><code>CL_&#8203;ADDRESS_&#8203;CLAMP_&#8203;TO_&#8203;EDGE</code></a> - Out-of-range image coordinates
+<p class="tableblock">        <a id="CL_ADDRESS_CLAMP_TO_EDGE"></a><a href="#CL_ADDRESS_CLAMP_TO_EDGE"><code>CL_ADDRESS_<wbr>CLAMP_<wbr>TO_<wbr>EDGE</code></a> - Out-of-range image coordinates
         are clamped to the edge of the image.</p>
-<p class="tableblock">        <a id="CL_ADDRESS_CLAMP"></a><a href="#CL_ADDRESS_CLAMP"><code>CL_&#8203;ADDRESS_&#8203;CLAMP</code></a> - Out-of-range image coordinates are
+<p class="tableblock">        <a id="CL_ADDRESS_CLAMP"></a><a href="#CL_ADDRESS_CLAMP"><code>CL_ADDRESS_<wbr>CLAMP</code></a> - Out-of-range image coordinates are
         assigned a border color value.</p>
-<p class="tableblock">        <a id="CL_ADDRESS_REPEAT"></a><a href="#CL_ADDRESS_REPEAT"><code>CL_&#8203;ADDRESS_&#8203;REPEAT</code></a> - Out-of-range image coordinates read
+<p class="tableblock">        <a id="CL_ADDRESS_REPEAT"></a><a href="#CL_ADDRESS_REPEAT"><code>CL_ADDRESS_<wbr>REPEAT</code></a> - Out-of-range image coordinates read
         from the image as-if the image data were replicated in all dimensions.</p>
-<p class="tableblock">        <a id="CL_ADDRESS_MIRRORED_REPEAT"></a><a href="#CL_ADDRESS_MIRRORED_REPEAT"><code>CL_&#8203;ADDRESS_&#8203;MIRRORED_&#8203;REPEAT</code></a> - Out-of-range image coordinates
+<p class="tableblock">        <a id="CL_ADDRESS_MIRRORED_REPEAT"></a><a href="#CL_ADDRESS_MIRRORED_REPEAT"><code>CL_ADDRESS_<wbr>MIRRORED_<wbr>REPEAT</code></a> - Out-of-range image coordinates
         read from the image as-if the image data were replicated in all
         dimensions, mirroring the image contents at the edge of each
         replication.</p>
-<p class="tableblock">        The default is <a href="#CL_ADDRESS_CLAMP"><code>CL_&#8203;ADDRESS_&#8203;CLAMP</code></a>.</p></td>
+<p class="tableblock">        The default is <a href="#CL_ADDRESS_CLAMP"><code>CL_ADDRESS_<wbr>CLAMP</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_FILTER_MODE"></a><a href="#CL_SAMPLER_FILTER_MODE"><code>CL_&#8203;SAMPLER_&#8203;FILTER_&#8203;MODE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_filter_mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_FILTER_MODE"></a><a href="#CL_SAMPLER_FILTER_MODE"><code>CL_SAMPLER_<wbr>FILTER_<wbr>MODE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_filter_<wbr>mode</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the type of filter that is applied when reading an
         image.
         Valid values are:</p>
-<p class="tableblock">        <a id="CL_FILTER_NEAREST"></a><a href="#CL_FILTER_NEAREST"><code>CL_&#8203;FILTER_&#8203;NEAREST</code></a> - Returns the image element nearest
+<p class="tableblock">        <a id="CL_FILTER_NEAREST"></a><a href="#CL_FILTER_NEAREST"><code>CL_FILTER_<wbr>NEAREST</code></a> - Returns the image element nearest
         to the image coordinate.</p>
-<p class="tableblock">        <a id="CL_FILTER_LINEAR"></a><a href="#CL_FILTER_LINEAR"><code>CL_&#8203;FILTER_&#8203;LINEAR</code></a> - Returns a weighted average of the
+<p class="tableblock">        <a id="CL_FILTER_LINEAR"></a><a href="#CL_FILTER_LINEAR"><code>CL_FILTER_<wbr>LINEAR</code></a> - Returns a weighted average of the
         four image elements nearest to the image coordinate.</p>
-<p class="tableblock">        The default value is <a href="#CL_FILTER_NEAREST"><code>CL_&#8203;FILTER_&#8203;NEAREST</code></a>.</p></td>
+<p class="tableblock">        The default value is <a href="#CL_FILTER_NEAREST"><code>CL_FILTER_<wbr>NEAREST</code></a>.</p></td>
 </tr>
 </tbody>
 </table>
@@ -16255,7 +16076,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateSamplerWithProperties"><strong>clCreateSamplerWithProperties</strong></a> returns a valid non-zero sampler object and
-<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the sampler object is created
+<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the sampler object is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -16263,25 +16084,25 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the property name in <em>sampler_properties</em> is not a
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the property name in <em>sampler_properties</em> is not a
 supported property name, if the value specified for a supported property
 name is not valid, or if the same property name is specified more than
 once.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if images are not supported by any device
-associated with <em>context</em> (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if images are not supported by any device
+associated with <em>context</em> (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16322,17 +16143,17 @@
 </li>
 <li>
 <p><em>normalized_coords</em> has the same interpretation as
-<a href="#CL_SAMPLER_NORMALIZED_COORDS"><code>CL_&#8203;SAMPLER_&#8203;NORMALIZED_&#8203;COORDS</code></a> in the <a href="#sampler-properties-table">sampler
+<a href="#CL_SAMPLER_NORMALIZED_COORDS"><code>CL_SAMPLER_<wbr>NORMALIZED_<wbr>COORDS</code></a> in the <a href="#sampler-properties-table">sampler
 creation properties table</a>.</p>
 </li>
 <li>
 <p><em>addressing_mode</em> has the same interpretation as
-<a href="#CL_SAMPLER_ADDRESSING_MODE"><code>CL_&#8203;SAMPLER_&#8203;ADDRESSING_&#8203;MODE</code></a> in the <a href="#sampler-properties-table">sampler
+<a href="#CL_SAMPLER_ADDRESSING_MODE"><code>CL_SAMPLER_<wbr>ADDRESSING_<wbr>MODE</code></a> in the <a href="#sampler-properties-table">sampler
 creation properties table</a>.</p>
 </li>
 <li>
 <p><em>filter_mode</em> has the same interpretation as
-<a href="#CL_SAMPLER_FILTER_MODE"><code>CL_&#8203;SAMPLER_&#8203;FILTER_&#8203;MODE</code></a> in the <a href="#sampler-properties-table">sampler
+<a href="#CL_SAMPLER_FILTER_MODE"><code>CL_SAMPLER_<wbr>FILTER_<wbr>MODE</code></a> in the <a href="#sampler-properties-table">sampler
 creation properties table</a>.</p>
 </li>
 <li>
@@ -16343,30 +16164,30 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateSampler"><strong>clCreateSampler</strong></a> returns a valid non-zero sampler object and <em>errcode_ret</em> is
-set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the sampler object is created successfully.
+set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the sampler object is created successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>addressing_mode</em>, <em>filter_mode</em>, <em>normalized_coords</em>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>addressing_mode</em>, <em>filter_mode</em>, <em>normalized_coords</em>
 or a combination of these arguements are not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if images are not supported by any device
-associated with <em>context</em> (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>).</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if images are not supported by any device
+associated with <em>context</em> (i.e. <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is <a href="#CL_FALSE"><code>CL_FALSE</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16397,21 +16218,21 @@
 retain.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainSampler"><strong>clRetainSampler</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clRetainSampler"><strong>clRetainSampler</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_SAMPLER"><code>CL_&#8203;INVALID_&#8203;SAMPLER</code></a> if <em>sampler</em> is not a valid sampler object.</p>
+<p><a href="#CL_INVALID_SAMPLER"><code>CL_INVALID_<wbr>SAMPLER</code></a> if <em>sampler</em> is not a valid sampler object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16443,21 +16264,21 @@
 finished.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseSampler"><strong>clReleaseSampler</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseSampler"><strong>clReleaseSampler</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_SAMPLER"><code>CL_&#8203;INVALID_&#8203;SAMPLER</code></a> if <em>sampler</em> is not a valid sampler object.</p>
+<p><a href="#CL_INVALID_SAMPLER"><code>CL_INVALID_<wbr>SAMPLER</code></a> if <em>sampler</em> is not a valid sampler object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16470,7 +16291,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_sampler_object_queries">5.7.2. Sampler Object Queries</h4>
+<h4 id="_sampler_object_queries"><a class="anchor" href="#_sampler_object_queries"></a>5.7.2. Sampler Object Queries</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -16524,87 +16345,76 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_sampler_info</strong></th>
+<th class="tableblock halign-left valign-top">Sampler Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_REFERENCE_COUNT"></a><a href="#CL_SAMPLER_REFERENCE_COUNT"><code>CL_&#8203;SAMPLER_&#8203;REFERENCE_&#8203;COUNT</code></a><sup>13</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_REFERENCE_COUNT"></a><a href="#CL_SAMPLER_REFERENCE_COUNT"><code>CL_SAMPLER_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_25" class="footnote" href="#_footnotedef_25" title="View footnote.">25</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the <em>sampler</em> reference count.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_CONTEXT"></a><a href="#CL_SAMPLER_CONTEXT"><code>CL_&#8203;SAMPLER_&#8203;CONTEXT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_CONTEXT"></a><a href="#CL_SAMPLER_CONTEXT"><code>CL_SAMPLER_<wbr>CONTEXT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_context</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the context specified when the sampler is created.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_NORMALIZED_COORDS"></a><a href="#CL_SAMPLER_NORMALIZED_COORDS"><code>CL_&#8203;SAMPLER_&#8203;NORMALIZED_&#8203;COORDS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_NORMALIZED_COORDS"></a><a href="#CL_SAMPLER_NORMALIZED_COORDS"><code>CL_SAMPLER_<wbr>NORMALIZED_<wbr>COORDS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the normalized coords value associated with <em>sampler</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_ADDRESSING_MODE"></a><a href="#CL_SAMPLER_ADDRESSING_MODE"><code>CL_&#8203;SAMPLER_&#8203;ADDRESSING_&#8203;MODE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_addressing_mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_ADDRESSING_MODE"></a><a href="#CL_SAMPLER_ADDRESSING_MODE"><code>CL_SAMPLER_<wbr>ADDRESSING_<wbr>MODE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_addressing_<wbr>mode</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the addressing mode value associated with <em>sampler</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_FILTER_MODE"></a><a href="#CL_SAMPLER_FILTER_MODE"><code>CL_&#8203;SAMPLER_&#8203;FILTER_&#8203;MODE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_filter_mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_FILTER_MODE"></a><a href="#CL_SAMPLER_FILTER_MODE"><code>CL_SAMPLER_<wbr>FILTER_<wbr>MODE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_filter_<wbr>mode</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the filter mode value associated with <em>sampler</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_PROPERTIES"></a><a href="#CL_SAMPLER_PROPERTIES"><code>CL_&#8203;SAMPLER_&#8203;PROPERTIES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SAMPLER_PROPERTIES"></a><a href="#CL_SAMPLER_PROPERTIES"><code>CL_SAMPLER_<wbr>PROPERTIES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_sampler_properties[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_sampler_<wbr>properties</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the properties argument specified in
         <a href="#clCreateSamplerWithProperties"><strong>clCreateSamplerWithProperties</strong></a>.</p>
 <p class="tableblock">        If the <em>properties</em> argument specified in <a href="#clCreateSamplerWithProperties"><strong>clCreateSamplerWithProperties</strong></a>
         used to create <em>sampler</em> was not <code>NULL</code>, the implementation must return
-        the values specified in the properties argument.</p>
+        the values specified in the properties argument in the same order and
+        without including additional properties.</p>
 <p class="tableblock">        If <em>sampler</em> was created using <a href="#clCreateSampler"><strong>clCreateSampler</strong></a>, or if the <em>properties</em>
         argument specified in <a href="#clCreateSamplerWithProperties"><strong>clCreateSamplerWithProperties</strong></a> was <code>NULL</code>, the
-        implementation may return either a <em>param_value_size_ret</em> of 0 (i.e.
-        there are no properties to be returned), or the implementation may
-        return a property value of 0 (where 0 is used to terminate the
-        properties list).</p></td>
+        implementation must return <em>param_value_size_ret</em> equal to 0,
+        indicating that there are no properties to be returned.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">13</dt>
-<dd>
-<p>The reference count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for identifying memory leaks.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
-<p><a href="#clGetSamplerInfo"><strong>clGetSamplerInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetSamplerInfo"><strong>clGetSamplerInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#sampler-info-table">Sampler Object Queries</a> table and
 <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_SAMPLER"><code>CL_&#8203;INVALID_&#8203;SAMPLER</code></a> if <em>sampler</em> is a not a valid sampler object.</p>
+<p><a href="#CL_INVALID_SAMPLER"><code>CL_INVALID_<wbr>SAMPLER</code></a> if <em>sampler</em> is a not a valid sampler object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16614,7 +16424,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_program_objects">5.8. Program Objects</h3>
+<h3 id="_program_objects"><a class="anchor" href="#_program_objects"></a>5.8. Program Objects</h3>
 <div class="paragraph">
 <p>An OpenCL program consists of a set of kernels that are identified as
 functions declared with the <code>__kernel</code> qualifier in the program source.
@@ -16645,7 +16455,7 @@
 </ul>
 </div>
 <div class="sect3">
-<h4 id="_creating_program_objects">5.8.1. Creating Program Objects</h4>
+<h4 id="_creating_program_objects"><a class="anchor" href="#_creating_program_objects"></a>5.8.1. Creating Program Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -16702,7 +16512,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a> returns a valid non-zero program object and
-<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the program object is created
+<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the program object is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -16710,18 +16520,18 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>count</em> is zero or if <em>strings</em> or any entry in
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>count</em> is zero or if <em>strings</em> or any entry in
 <em>strings</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16779,7 +16589,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a> returns a valid non-zero program object and
-<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the program object is created
+<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the program object is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -16787,22 +16597,26 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>il</em> is <code>NULL</code> or if <em>length</em> is zero.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in <em>context</em> support intermediate
+language programs.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the <em>length</em>-byte memory pointed to by <em>il</em> does not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>il</em> is <code>NULL</code> or if <em>length</em> is zero.</p>
+</li>
+<li>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the <em>length</em>-byte memory pointed to by <em>il</em> does not
 contain well-formed intermediate language input that can be consumed by
 the OpenCL runtime.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -16894,10 +16708,10 @@
 <li>
 <p><em>binary_status</em> returns whether the program binary for each device specified
 in <em>device_list</em> was loaded successfully or not.
-It is an array of <em>num_devices</em> entries and returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> in
+It is an array of <em>num_devices</em> entries and returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> in
 <em>binary_status</em>[i] if binary was successfully loaded for device specified by
-<em>device_list</em>[i]; otherwise returns <a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>lengths</em>[i] is zero
-or if <em>binaries</em>[i] is a <code>NULL</code> value or <a href="#CL_INVALID_BINARY"><code>CL_&#8203;INVALID_&#8203;BINARY</code></a> in
+<em>device_list</em>[i]; otherwise returns <a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>lengths</em>[i] is zero
+or if <em>binaries</em>[i] is a <code>NULL</code> value or <a href="#CL_INVALID_BINARY"><code>CL_INVALID_<wbr>BINARY</code></a> in
 <em>binary_status</em>[i] if program binary is not a valid binary for the specified
 device.
 If <em>binary_status</em> is <code>NULL</code>, it is ignored.</p>
@@ -16920,7 +16734,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a> returns a valid non-zero program object and
-<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the program object is created
+<em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the program object is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -16928,30 +16742,30 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>device_list</em> is <code>NULL</code> or <em>num_devices</em> is zero.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>device_list</em> is <code>NULL</code> or <em>num_devices</em> is zero.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if any device in <em>device_list</em> is not in
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if any device in <em>device_list</em> is not in
 the list of devices associated with <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>lengths</em> or <em>binaries</em> are <code>NULL</code> or if any entry
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>lengths</em> or <em>binaries</em> are <code>NULL</code> or if any entry
 in <em>lengths</em>[i] is zero or <em>binaries</em>[i] is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_BINARY"><code>CL_&#8203;INVALID_&#8203;BINARY</code></a> if an invalid program binary was encountered for any
+<p><a href="#CL_INVALID_BINARY"><code>CL_INVALID_<wbr>BINARY</code></a> if an invalid program binary was encountered for any
 device.
 <em>binary_status</em> will return specific status for each device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17012,7 +16826,7 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateProgramWithBuiltInKernels"><strong>clCreateProgramWithBuiltInKernels</strong></a> returns a valid non-zero program object
-and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the program object is created
+and <em>errcode_ret</em> is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the program object is created
 successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
@@ -17020,26 +16834,26 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>device_list</em> is <code>NULL</code> or <em>num_devices</em> is zero.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>device_list</em> is <code>NULL</code> or <em>num_devices</em> is zero.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>kernel_names</em> is <code>NULL</code> or <em>kernel_names</em> contains
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>kernel_names</em> is <code>NULL</code> or <em>kernel_names</em> contains
 a kernel name that is not supported by any of the devices in
 <em>device_list</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if any device in <em>device_list</em> is not in the list
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if any device in <em>device_list</em> is not in the list
 of devices associated with <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17048,7 +16862,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_retaining_and_releasing_program_objects">5.8.2. Retaining and Releasing Program Objects</h4>
+<h4 id="_retaining_and_releasing_program_objects"><a class="anchor" href="#_retaining_and_releasing_program_objects"></a>5.8.2. Retaining and Releasing Program Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -17072,21 +16886,21 @@
 All APIs that create a program do an implicit retain.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainProgram"><strong>clRetainProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clRetainProgram"><strong>clRetainProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17117,21 +16931,21 @@
 <em>program</em> have been deleted and the <em>program</em> reference count becomes zero.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseProgram"><strong>clReleaseProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseProgram"><strong>clReleaseProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17145,8 +16959,8 @@
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>To register a user callback function with a program object, call the
-function</p>
+<p>To register a callback function with a program object that is called when
+the program object is destroyed, call the function</p>
 </div>
 <div id="clSetProgramReleaseCallback" class="listingblock">
 <div class="content">
@@ -17163,7 +16977,7 @@
 <i class="fa icon-important" title="Important"></i>
 </td>
 <td class="content">
-<a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> is <a href="#unified-spec">missing before</a> version 2.2.
+<a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> is <a href="#unified-spec">missing before</a> version 2.2 and <a href="#unified-spec">deprecated by</a> version 3.0.
 </td>
 </tr>
 </table>
@@ -17171,69 +16985,77 @@
 <div class="ulist">
 <ul>
 <li>
-<p><em>program</em> is a valid program object</p>
+<p><em>program</em> specifies the memory object to register the callback to.</p>
 </li>
 <li>
-<p><em>pfn_notify</em> is the callback function that can be registered by the
-application.
+<p><em>pfn_notify</em> is the callback function to register.
 This callback function may be called asynchronously by the OpenCL
 implementation.
-It is the applications responsibility to ensure that the callback function
+It is the application&#8217;s responsibility to ensure that the callback function
 is thread safe.
 The parameters to this callback function are:</p>
 <div class="ulist">
 <ul>
 <li>
-<p><em>prog</em> is the program object whose destructors are being called.
-When the user callback is called by the implementation, this program object
-is not longer valid.
-prog is only provided for reference purposes.</p>
+<p><em>program</em> is the program being deleted.
+When the callback function is called by the implementation, this program
+object is not longer valid.
+<em>program</em> is only provided for reference purposes.</p>
 </li>
 <li>
-<p><em>user_data</em> is a pointer to user supplied data.
-<em>user_data</em> will be passed as the <em>user_data</em> argument when <em>pfn_notify</em> is
+<p><em>user_data</em> is a pointer to user supplied data.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p><em>user_data</em> will be passed as the <em>user_data</em> argument when <em>pfn_notify</em> is
 called.
 user data can be <code>NULL</code>.</p>
 </li>
 </ul>
 </div>
-</li>
-</ul>
-</div>
 <div class="paragraph">
-<p>Each call to <a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> registers the specified user
-callback function on a callback stack associated with program.
-The registered user callback functions are called in the reverse order in
+<p>Each call to <a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> registers the specified
+callback function on a callback stack associated with <em>program</em>.
+The registered callback functions are called in the reverse order in
 which they were registered.
-The user callback functions are called after destructors (if any) for
-program scope global variables (if any) are called and before the program is
-released.
-This provides a mechanism for the application (and libraries) to be notified
-when destructors are complete.</p>
+The registered callback functions are called after destructors (if any) for
+program scope global variables (if any) are called and before the program
+object is deleted.
+This provides a mechanism for an application to be notified when destructors
+for program scope global variables are complete.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> may unconditionally return an error if no
+devices in the context associated with <em>program</em> support destructors for
+program scope global variables.
+Support for constructors and destructors for program scope global variables
+is required only for OpenCL 2.2 devices.</p>
+</div>
+<div class="paragraph">
+<p><a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in the context associated with
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in the context associated with
 <em>program</em> support destructors for program scope global variables.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17242,7 +17064,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_setting_spir_v_specialization_constants">5.8.3. Setting SPIR-V specialization constants</h4>
+<h4 id="_setting_spir_v_specialization_constants"><a class="anchor" href="#_setting_spir_v_specialization_constants"></a>5.8.3. Setting SPIR-V specialization constants</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -17326,7 +17148,7 @@
 call, default values will be used during the build.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clSetProgramSpecializationConstant"><strong>clSetProgramSpecializationConstant</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is
+<p><a href="#clSetProgramSpecializationConstant"><strong>clSetProgramSpecializationConstant</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is
 executed successfully.</p>
 </div>
 <div class="paragraph">
@@ -17335,24 +17157,35 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object created
-from an intermediate language (e.g. SPIR-V).</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object created
+from an intermediate language (e.g. SPIR-V), or if the intermediate
+language does not support specialization constants.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_SPEC_ID"><code>CL_&#8203;INVALID_&#8203;SPEC_&#8203;ID</code></a> if <em>spec_id</em> is not a valid specialization constant
-ID</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices associated with <em>program</em> support
+intermediate language programs.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>spec_size</em> does not match the size of the
+<p><a href="#CL_COMPILER_NOT_AVAILABLE"><code>CL_COMPILER_<wbr>NOT_<wbr>AVAILABLE</code></a> if <em>program</em> is created with
+<a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a> and a compiler is not
+available, i.e. <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is set to <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p>
+</li>
+<li>
+<p><a href="#CL_INVALID_SPEC_ID"><code>CL_INVALID_<wbr>SPEC_<wbr>ID</code></a> if <em>spec_id</em> is not a valid specialization constant
+identifier.</p>
+</li>
+<li>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>spec_size</em> does not match the size of the
 specialization constant in the module, or if <em>spec_value</em> is
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17361,7 +17194,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_building_program_executables">5.8.4. Building Program Executables</h4>
+<h4 id="_building_program_executables"><a class="anchor" href="#_building_program_executables"></a>5.8.4. Building Program Executables</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -17417,6 +17250,9 @@
 If <em>pfn_notify</em> is not <code>NULL</code>, <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> does not need to wait for
 the build to complete and can return immediately once the build operation
 can begin.
+Any state changes of the program object that result from calling
+<a href="#clBuildProgram"><strong>clBuildProgram</strong></a> (e.g. build status or log) will be observable from this
+callback function.
 The build operation can begin if the context, program whose sources are
 being compiled and linked, list of devices and build options specified are
 all valid and appropriate host and device resources needed to perform the
@@ -17453,71 +17289,71 @@
 </div>
 <div class="paragraph">
 <p>The executable binary can be queried using <a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a>(<em>program</em>,
-<a href="#CL_PROGRAM_BINARIES"><code>CL_&#8203;PROGRAM_&#8203;BINARIES</code></a>, &#8230;&#8203;) and can be specified to
+<a href="#CL_PROGRAM_BINARIES"><code>CL_PROGRAM_<wbr>BINARIES</code></a>, &#8230;&#8203;) and can be specified to
 <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a> to create a new program object.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clBuildProgram"><strong>clBuildProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clBuildProgram"><strong>clBuildProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>device_list</em> is <code>NULL</code> and <em>num_devices</em> is greater
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>device_list</em> is <code>NULL</code> and <em>num_devices</em> is greater
 than zero, or if <em>device_list</em> is not <code>NULL</code> and <em>num_devices</em> is zero.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if any device in <em>device_list</em> is not in
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if any device in <em>device_list</em> is not in
 the list of devices associated with <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_BINARY"><code>CL_&#8203;INVALID_&#8203;BINARY</code></a> if <em>program</em> is created with
+<p><a href="#CL_INVALID_BINARY"><code>CL_INVALID_<wbr>BINARY</code></a> if <em>program</em> is created with
 <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a> and devices listed in <em>device_list</em> do not
 have a valid program binary loaded.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_BUILD_OPTIONS"><code>CL_&#8203;INVALID_&#8203;BUILD_&#8203;OPTIONS</code></a> if the build options specified by <em>options</em> are
+<p><a href="#CL_INVALID_BUILD_OPTIONS"><code>CL_INVALID_<wbr>BUILD_<wbr>OPTIONS</code></a> if the build options specified by <em>options</em> are
 invalid.</p>
 </li>
 <li>
-<p><a href="#CL_COMPILER_NOT_AVAILABLE"><code>CL_&#8203;COMPILER_&#8203;NOT_&#8203;AVAILABLE</code></a> if <em>program</em> is created with
-<a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a> and a compiler is not available i.e.
-<a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is set to <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p>
+<p><a href="#CL_COMPILER_NOT_AVAILABLE"><code>CL_COMPILER_<wbr>NOT_<wbr>AVAILABLE</code></a> if <em>program</em> is created with
+<a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a> or <a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a> and a compiler is
+not available, i.e. <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is set to <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_BUILD_PROGRAM_FAILURE"><code>CL_&#8203;BUILD_&#8203;PROGRAM_&#8203;FAILURE</code></a> if there is a failure to build the program
+<p><a href="#CL_BUILD_PROGRAM_FAILURE"><code>CL_BUILD_<wbr>PROGRAM_<wbr>FAILURE</code></a> if there is a failure to build the program
 executable.
 This error will be returned if <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> does not return until
 the build has completed.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the build of a program executable for any of the
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the build of a program executable for any of the
 devices listed in <em>device_list</em> by a previous call to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>
 for <em>program</em> has not completed.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if there are kernel objects attached to <em>program</em>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if there are kernel objects attached to <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>program</em> was not created with
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>program</em> was not created with
 <a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a>, <a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a> or
 <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17526,7 +17362,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_separate_compilation_and_linking_of_programs">5.8.5. Separate Compilation and Linking of Programs</h4>
+<h4 id="_separate_compilation_and_linking_of_programs"><a class="anchor" href="#_separate_compilation_and_linking_of_programs"></a>5.8.5. Separate Compilation and Linking of Programs</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -17651,6 +17487,9 @@
 If <em>pfn_notify</em> is not <code>NULL</code>, <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> does not need to wait for
 the compiler to complete and can return immediately once the compilation can
 begin.
+Any state changes of the program object that result from calling
+<a href="#clCompileProgram"><strong>clCompileProgram</strong></a> (e.g. compile status or log) will be observable from this
+callback function.
 The compilation can begin if the context, program whose sources are being
 compiled, list of devices, input headers, programs that describe input
 headers and compiler options specified are all valid and appropriate host
@@ -17677,7 +17516,7 @@
 The compiled binary is built for all devices associated with <em>program</em> or
 the list of devices specified.
 The compiled binary can be queried using <a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a>(<em>program</em>,
-<a href="#CL_PROGRAM_BINARIES"><code>CL_&#8203;PROGRAM_&#8203;BINARIES</code></a>, &#8230;&#8203;) and can be passed to <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a>
+<a href="#CL_PROGRAM_BINARIES"><code>CL_PROGRAM_<wbr>BINARIES</code></a>, &#8230;&#8203;) and can be passed to <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a>
 to create a new program object.</p>
 </div>
 <div class="paragraph">
@@ -17728,67 +17567,67 @@
 </div>
 </div>
 <div class="paragraph">
-<p><a href="#clCompileProgram"><strong>clCompileProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clCompileProgram"><strong>clCompileProgram</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>device_list</em> is <code>NULL</code> and <em>num_devices</em> is greater
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>device_list</em> is <code>NULL</code> and <em>num_devices</em> is greater
 than zero, or if <em>device_list</em> is not <code>NULL</code> and <em>num_devices</em> is zero.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_input_headers</em> is zero and
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_input_headers</em> is zero and
 <em>header_include_names</em> or <em>input_headers</em> are not <code>NULL</code> or if
 <em>num_input_headers</em> is not zero and <em>header_include_names</em> or
 <em>input_headers</em> are <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if device in <em>device_list</em> is not in
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if device in <em>device_list</em> is not in
 the list of devices associated with <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_COMPILER_OPTIONS"><code>CL_&#8203;INVALID_&#8203;COMPILER_&#8203;OPTIONS</code></a> if the compiler options specified by
+<p><a href="#CL_INVALID_COMPILER_OPTIONS"><code>CL_INVALID_<wbr>COMPILER_<wbr>OPTIONS</code></a> if the compiler options specified by
 <em>options</em> are invalid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the compilation or build of a program executable
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the compilation or build of a program executable
 for any of the devices listed in <em>device_list</em> by a previous call to
 <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> for <em>program</em> has not completed.</p>
 </li>
 <li>
-<p><a href="#CL_COMPILER_NOT_AVAILABLE"><code>CL_&#8203;COMPILER_&#8203;NOT_&#8203;AVAILABLE</code></a> if a compiler is not available i.e.
-<a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is set to <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p>
+<p><a href="#CL_COMPILER_NOT_AVAILABLE"><code>CL_COMPILER_<wbr>NOT_<wbr>AVAILABLE</code></a> if a compiler is not available, i.e.
+<a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is set to <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_COMPILE_PROGRAM_FAILURE"><code>CL_&#8203;COMPILE_&#8203;PROGRAM_&#8203;FAILURE</code></a> if there is a failure to compile the program
+<p><a href="#CL_COMPILE_PROGRAM_FAILURE"><code>CL_COMPILE_<wbr>PROGRAM_<wbr>FAILURE</code></a> if there is a failure to compile the program
 source.
 This error will be returned if <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> does not return until
 the compile has completed.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if there are kernel objects attached to <em>program</em>.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if there are kernel objects attached to <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>program</em> has no source or IL available, i.e. it
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>program</em> has no source or IL available, i.e. it
 has not been created with <a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a> or
 <a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -17882,7 +17721,7 @@
 executable generated for this device.</p>
 </li>
 <li>
-<p>All other cases will return a <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> error.</p>
+<p>All other cases will return a <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> error.</p>
 </li>
 </ul>
 </div>
@@ -17909,7 +17748,8 @@
 begin.
 Once the linker has completed, the <em>pfn_notify</em> callback function is called
 which returns the program object returned by <a href="#clLinkProgram"><strong>clLinkProgram</strong></a>.
-The application can query the link status and log for this program object.
+Any state changes of the program object that result from calling <a href="#clLinkProgram"><strong>clLinkProgram</strong></a>
+(e.g. link status or log) will be observable from this callback function.
 This callback function may be called asynchronously by the OpenCL
 implementation.
 It is the applications responsibility to ensure that the callback function
@@ -17923,7 +17763,7 @@
 <p><a href="#clLinkProgram"><strong>clLinkProgram</strong></a> creates a new program object which contains the library or
 executable.
 The library or executable binary can be queried using
-<a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a>(<em>program</em>, <a href="#CL_PROGRAM_BINARIES"><code>CL_&#8203;PROGRAM_&#8203;BINARIES</code></a>, &#8230;&#8203;) and can be specified
+<a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a>(<em>program</em>, <a href="#CL_PROGRAM_BINARIES"><code>CL_PROGRAM_<wbr>BINARIES</code></a>, &#8230;&#8203;) and can be specified
 to <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a> to create a new program object.</p>
 </div>
 <div class="paragraph">
@@ -17939,16 +17779,16 @@
 program object.</p>
 </div>
 <div class="paragraph">
-<p>If <em>pfn_notify</em> is <code>NULL</code>, the <em>errcode_ret</em> will be set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if
-the link operation was successful and <a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_&#8203;LINK_&#8203;PROGRAM_&#8203;FAILURE</code></a> if there is a
+<p>If <em>pfn_notify</em> is <code>NULL</code>, the <em>errcode_ret</em> will be set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if
+the link operation was successful and <a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_LINK_<wbr>PROGRAM_<wbr>FAILURE</code></a> if there is a
 failure to link the compiled binaries and/or libraries.</p>
 </div>
 <div class="paragraph">
 <p>If <em>pfn_notify</em> is not <code>NULL</code>, <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> does not have to wait until
-the linker to complete and can return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> in <em>errcode_ret</em> if the
+the linker to complete and can return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> in <em>errcode_ret</em> if the
 linking operation can begin.
-The <em>pfn_notify</em> callback function will return a <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> or
-<a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_&#8203;LINK_&#8203;PROGRAM_&#8203;FAILURE</code></a> if the linking operation was successful or not.</p>
+The <em>pfn_notify</em> callback function will return a <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> or
+<a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_LINK_<wbr>PROGRAM_<wbr>FAILURE</code></a> if the linking operation was successful or not.</p>
 </div>
 <div class="paragraph">
 <p>Otherwise <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> returns a <code>NULL</code> program object with an
@@ -17960,59 +17800,59 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>device_list</em> is <code>NULL</code> and <em>num_devices</em> is greater
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>device_list</em> is <code>NULL</code> and <em>num_devices</em> is greater
 than zero, or if <em>device_list</em> is not <code>NULL</code> and <em>num_devices</em> is zero.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_input_programs</em> is zero and <em>input_programs</em> is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_input_programs</em> is zero and <em>input_programs</em> is
 <code>NULL</code> or if <em>num_input_programs</em> is zero and <em>input_programs</em> is not
 <code>NULL</code> or if <em>num_input_programs</em> is not zero and <em>input_programs</em> is
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if programs specified in <em>input_programs</em> are not
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if programs specified in <em>input_programs</em> are not
 valid program objects.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_notify</em> is <code>NULL</code> but <em>user_data</em> is not
 <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if any device in <em>device_list</em> is not in
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if any device in <em>device_list</em> is not in
 the list of devices associated with <em>context</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_LINKER_OPTIONS"><code>CL_&#8203;INVALID_&#8203;LINKER_&#8203;OPTIONS</code></a> if the linker options specified by <em>options</em>
+<p><a href="#CL_INVALID_LINKER_OPTIONS"><code>CL_INVALID_<wbr>LINKER_<wbr>OPTIONS</code></a> if the linker options specified by <em>options</em>
 are invalid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the compilation or build of a program executable
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the compilation or build of a program executable
 for any of the devices listed in <em>device_list</em> by a previous call to
 <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> for <em>program</em> has not completed.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the rules for devices containing compiled
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the rules for devices containing compiled
 binaries or libraries as described in <em>input_programs</em> argument above
 are not followed.</p>
 </li>
 <li>
-<p><a href="#CL_LINKER_NOT_AVAILABLE"><code>CL_&#8203;LINKER_&#8203;NOT_&#8203;AVAILABLE</code></a> if a linker is not available i.e.
-<a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;LINKER_&#8203;AVAILABLE</code></a> specified in the
-<a href="#device-queries-table">Device Queries</a> table is set to <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p>
+<p><a href="#CL_LINKER_NOT_AVAILABLE"><code>CL_LINKER_<wbr>NOT_<wbr>AVAILABLE</code></a> if a linker is not available, i.e.
+<a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_DEVICE_<wbr>LINKER_<wbr>AVAILABLE</code></a> specified in the
+<a href="#device-queries-table">Device Queries</a> table is set to <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_&#8203;LINK_&#8203;PROGRAM_&#8203;FAILURE</code></a> if there is a failure to link the compiled
+<p><a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_LINK_<wbr>PROGRAM_<wbr>FAILURE</code></a> if there is a failure to link the compiled
 binaries and/or libraries.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -18021,7 +17861,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="compiler-options">5.8.6. Compiler Options</h4>
+<h4 id="compiler-options"><a class="anchor" href="#compiler-options"></a>5.8.6. Compiler Options</h4>
 <div class="paragraph">
 <p>The compiler options are categorized as pre-processor options, options for
 math intrinsics, options that control optimization and miscellaneous
@@ -18032,7 +17872,7 @@
 These may be extended by a set of vendor- or platform-specific options.</p>
 </div>
 <div class="sect4">
-<h5 id="preprocessor-options">Preprocessor options</h5>
+<h5 id="preprocessor-options"><a class="anchor" href="#preprocessor-options"></a>5.8.6.1. Preprocessor options</h5>
 <div class="paragraph">
 <p>These options control the OpenCL C/C++ preprocessor which is run on each
 program source before actual compilation.
@@ -18078,7 +17918,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="math-intrinsics-options">Math Intrinsics Options</h5>
+<h5 id="math-intrinsics-options"><a class="anchor" href="#math-intrinsics-options"></a>5.8.6.2. Math Intrinsics Options</h5>
 <div class="paragraph">
 <p>These options control compiler behavior regarding floating-point arithmetic.
 These options trade off between speed and correctness.</p>
@@ -18106,14 +17946,14 @@
 <div class="content">
 <div class="paragraph">
 <p>This option is ignored for single precision numbers if the device does not
-support single precision denormalized numbers i.e. <a href="#CL_FP_DENORM"><code>CL_&#8203;FP_&#8203;DENORM</code></a> bit is not
-set in <a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;SINGLE_&#8203;FP_&#8203;CONFIG</code></a>.</p>
+support single precision denormalized numbers i.e. <a href="#CL_FP_DENORM"><code>CL_FP_<wbr>DENORM</code></a> bit is not
+set in <a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_DEVICE_<wbr>SINGLE_<wbr>FP_<wbr>CONFIG</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>This option is ignored for double precision numbers if the device does not
 support double precision or if it does support double precision but not
-double precision denormalized numbers i.e. <a href="#CL_FP_DENORM"><code>CL_&#8203;FP_&#8203;DENORM</code></a> bit is not set in
-<a href="#CL_DEVICE_DOUBLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;DOUBLE_&#8203;FP_&#8203;CONFIG</code></a>.</p>
+double precision denormalized numbers i.e. <a href="#CL_FP_DENORM"><code>CL_FP_<wbr>DENORM</code></a> bit is not set in
+<a href="#CL_DEVICE_DOUBLE_FP_CONFIG"><code>CL_DEVICE_<wbr>DOUBLE_<wbr>FP_<wbr>CONFIG</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>This flag only applies for scalar and vector single precision floating-point
@@ -18137,12 +17977,12 @@
 <div class="content">
 <div class="paragraph">
 <p>This build option can only be specified if the
-<a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_&#8203;FP_&#8203;CORRECTLY_&#8203;ROUNDED_&#8203;DIVIDE_&#8203;SQRT</code></a> is set in <a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;SINGLE_&#8203;FP_&#8203;CONFIG</code></a> (as
+<a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_FP_<wbr>CORRECTLY_<wbr>ROUNDED_<wbr>DIVIDE_<wbr>SQRT</code></a> is set in <a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_DEVICE_<wbr>SINGLE_<wbr>FP_<wbr>CONFIG</code></a> (as
 defined in the <a href="#device-queries-table">Device Queries</a> table) for devices
 that the program is being build.
 <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> or <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> will fail to compile the program for
 a device if the <code>-cl-fp32-correctly-rounded-divide-sqrt</code> option is specified
-and <a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_&#8203;FP_&#8203;CORRECTLY_&#8203;ROUNDED_&#8203;DIVIDE_&#8203;SQRT</code></a> is not set for the device.</p>
+and <a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_FP_<wbr>CORRECTLY_<wbr>ROUNDED_<wbr>DIVIDE_<wbr>SQRT</code></a> is not set for the device.</p>
 </div>
 <div class="paragraph">
 <p>Note: This option is <a href="#unified-spec">missing before</a> version 1.2.</p>
@@ -18154,7 +17994,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="optimization-options">Optimization Options</h5>
+<h5 id="optimization-options"><a class="anchor" href="#optimization-options"></a>5.8.6.3. Optimization Options</h5>
 <div class="paragraph">
 <p>These options control various sorts of optimizations.
 Turning on optimization flags makes the compiler attempt to improve the
@@ -18268,7 +18108,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="_options_to_request_or_suppress_warnings">Options to Request or Suppress Warnings</h5>
+<h5 id="_options_to_request_or_suppress_warnings"><a class="anchor" href="#_options_to_request_or_suppress_warnings"></a>5.8.6.4. Options to Request or Suppress Warnings</h5>
 <div class="paragraph">
 <p>Warnings are diagnostic messages that report constructions which are not
 inherently erroneous but which are risky or suggest there may have been an
@@ -18291,7 +18131,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="opencl-c-version">Options Controlling the OpenCL C version</h5>
+<h5 id="opencl-c-version"><a class="anchor" href="#opencl-c-version"></a>5.8.6.5. Options Controlling the OpenCL C version</h5>
 <div class="paragraph">
 <p>The following option controls the version of OpenCL C that the compiler
 accepts.
@@ -18334,26 +18174,26 @@
 <div class="paragraph">
 <p>Calls to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> or <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> with the <code>-cl-std=CL1.1</code>
 option <strong>will fail</strong> to compile the program for any devices with
-<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a> equal to OpenCL C 1.0 and when
-<a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a> does not include OpenCL C 1.1.</p>
+<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a> equal to OpenCL C 1.0 and when
+<a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a> does not include OpenCL C 1.1.</p>
 </div>
 <div class="paragraph">
 <p>Calls to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> or <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> with the <code>-cl-std=CL1.2</code>
 option <strong>will fail</strong> to compile the program for any devices with
-<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a> equal to OpenCL C 1.1 or earlier
-and when <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a> does not include OpenCL C 1.2.</p>
+<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a> equal to OpenCL C 1.1 or earlier
+and when <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a> does not include OpenCL C 1.2.</p>
 </div>
 <div class="paragraph">
 <p>Calls to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> or <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> with the <code>-cl-std=CL2.0</code>
 option <strong>will fail</strong> to compile the program for any devices with
-<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a> equal to OpenCL C 1.2 or earlier
-and when <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a> does not include OpenCL C 2.0.</p>
+<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a> equal to OpenCL C 1.2 or earlier
+and when <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a> does not include OpenCL C 2.0.</p>
 </div>
 <div class="paragraph">
 <p>Calls to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> or <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> with the <code>-cl-std=CL3.0</code>
 option <strong>will fail</strong> to compile the program for any devices with
-<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a> equal to OpenCL C 2.0 or earlier
-and when <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a> does not include OpenCL C 3.0.</p>
+<a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a> equal to OpenCL C 2.0 or earlier
+and when <a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a> does not include OpenCL C 3.0.</p>
 </div>
 <div class="paragraph">
 <p>If the <code>-cl-std</code> build option is not specified, the highest OpenCL C 1.x
@@ -18365,7 +18205,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="_options_for_querying_kernel_argument_information">Options for Querying Kernel Argument Information</h5>
+<h5 id="_options_for_querying_kernel_argument_information"><a class="anchor" href="#_options_for_querying_kernel_argument_information"></a>5.8.6.6. Options for Querying Kernel Argument Information</h5>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -18394,7 +18234,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="_options_for_debugging_your_program">Options for debugging your program</h5>
+<h5 id="_options_for_debugging_your_program"><a class="anchor" href="#_options_for_debugging_your_program"></a>5.8.6.7. Options for debugging your program</h5>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -18423,7 +18263,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="linker-options">5.8.7. Linker Options</h4>
+<h4 id="linker-options"><a class="anchor" href="#linker-options"></a>5.8.7. Linker Options</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -18445,7 +18285,7 @@
 These may be extended by a set of vendor- or platform-specific options.</p>
 </div>
 <div class="sect4">
-<h5 id="_library_linking_options">Library Linking Options</h5>
+<h5 id="_library_linking_options"><a class="anchor" href="#_library_linking_options"></a>5.8.7.1. Library Linking Options</h5>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -18481,7 +18321,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="program-linking-options">Program Linking Options</h5>
+<h5 id="program-linking-options"><a class="anchor" href="#program-linking-options"></a>5.8.7.2. Program Linking Options</h5>
 <div class="paragraph">
 <p>The following options can be specified when linking a program executable.</p>
 </div>
@@ -18493,23 +18333,18 @@
 <code>-cl-fast-relaxed-math</code><br>
 <code>-cl-no-subgroup-ifp</code> (<a href="#unified-spec">missing before</a> version 2.1)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="paragraph">
 <p>The options are described in <a href="#math-intrinsics-options">Math Intrinsics
 Options</a> and <a href="#optimization-options">Optimization Options</a>.
 The linker may apply these options to all compiled program objects
 specified to <a href="#clLinkProgram"><strong>clLinkProgram</strong></a>.
 The linker may apply these options only to libraries which were created
 with the option <code>-enable-link-options</code>.</p>
-</dd>
-</dl>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_unloading_the_opencl_compiler">5.8.8. Unloading the OpenCL Compiler</h4>
+<h4 id="_unloading_the_opencl_compiler"><a class="anchor" href="#_unloading_the_opencl_compiler"></a>5.8.8. Unloading the OpenCL Compiler</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -18551,14 +18386,14 @@
 the appropriate program executable.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clUnloadPlatformCompiler"><strong>clUnloadPlatformCompiler</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clUnloadPlatformCompiler"><strong>clUnloadPlatformCompiler</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PLATFORM"><code>CL_&#8203;INVALID_&#8203;PLATFORM</code></a> if <em>platform</em> is not a valid platform.</p>
+<p><a href="#CL_INVALID_PLATFORM"><code>CL_INVALID_<wbr>PLATFORM</code></a> if <em>platform</em> is not a valid platform.</p>
 </li>
 </ul>
 </div>
@@ -18598,13 +18433,13 @@
 the appropriate program executable.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clUnloadCompiler"><strong>clUnloadCompiler</strong></a> will always return <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a>.</p>
+<p><a href="#clUnloadCompiler"><strong>clUnloadCompiler</strong></a> will always return <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a>.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_program_object_queries">5.8.9. Program Object Queries</h4>
+<h4 id="_program_object_queries"><a class="anchor" href="#_program_object_queries"></a>5.8.9. Program Object Queries</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -18658,30 +18493,30 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_program_info</strong></th>
+<th class="tableblock halign-left valign-top">Program Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_REFERENCE_COUNT"></a><a href="#CL_PROGRAM_REFERENCE_COUNT"><code>CL_&#8203;PROGRAM_&#8203;REFERENCE_&#8203;COUNT</code></a><sup>14</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_REFERENCE_COUNT"></a><a href="#CL_PROGRAM_REFERENCE_COUNT"><code>CL_PROGRAM_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_26" class="footnote" href="#_footnotedef_26" title="View footnote.">26</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the <em>program</em> reference count.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_CONTEXT"></a><a href="#CL_PROGRAM_CONTEXT"><code>CL_&#8203;PROGRAM_&#8203;CONTEXT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_CONTEXT"></a><a href="#CL_PROGRAM_CONTEXT"><code>CL_PROGRAM_<wbr>CONTEXT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_context</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the context specified when the program object is created</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_NUM_DEVICES"></a><a href="#CL_PROGRAM_NUM_DEVICES"><code>CL_&#8203;PROGRAM_&#8203;NUM_&#8203;DEVICES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_NUM_DEVICES"></a><a href="#CL_PROGRAM_NUM_DEVICES"><code>CL_PROGRAM_<wbr>NUM_<wbr>DEVICES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the number of devices associated with <em>program</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_DEVICES"></a><a href="#CL_PROGRAM_DEVICES"><code>CL_&#8203;PROGRAM_&#8203;DEVICES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_id[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_DEVICES"></a><a href="#CL_PROGRAM_DEVICES"><code>CL_PROGRAM_<wbr>DEVICES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>id</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the list of devices associated with the program object.
         This can be the devices associated with context on which the program
         object has been created or can be a subset of devices that are
@@ -18689,8 +18524,8 @@
         <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_SOURCE"></a><a href="#CL_PROGRAM_SOURCE"><code>CL_&#8203;PROGRAM_&#8203;SOURCE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_SOURCE"></a><a href="#CL_PROGRAM_SOURCE"><code>CL_PROGRAM_<wbr>SOURCE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the program source code specified by
         <a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a>.
         The source string returned is a concatenation of all source strings
@@ -18706,10 +18541,10 @@
         <em>param_value_size_ret</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_IL"></a><a href="#CL_PROGRAM_IL"><code>CL_&#8203;PROGRAM_&#8203;IL</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_IL"></a><a href="#CL_PROGRAM_IL"><code>CL_PROGRAM_<wbr>IL</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.
 Also see extension <strong>cl_khr_il_program</strong>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the program IL for programs created with
         <a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a>.</p>
 <p class="tableblock">        If <em>program</em> is created with <a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a>,
@@ -18718,8 +18553,8 @@
         param_value_size_retwill be set to 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BINARY_SIZES"></a><a href="#CL_PROGRAM_BINARY_SIZES"><code>CL_&#8203;PROGRAM_&#8203;BINARY_&#8203;SIZES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BINARY_SIZES"></a><a href="#CL_PROGRAM_BINARY_SIZES"><code>CL_PROGRAM_<wbr>BINARY_<wbr>SIZES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array that contains the size in bytes of the program
         binary (could be an executable binary, compiled binary or library
         binary) for each device associated with program.
@@ -18732,8 +18567,8 @@
         array.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BINARIES"></a><a href="#CL_PROGRAM_BINARIES"><code>CL_&#8203;PROGRAM_&#8203;BINARIES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">unsigned char *[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BINARIES"></a><a href="#CL_PROGRAM_BINARIES"><code>CL_PROGRAM_<wbr>BINARIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>unsigned char</code> *[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the program binaries (could be an executable binary, compiled
         binary or library binary) for all devices associated with program.
         For each device in program, the binary returned can be the binary
@@ -18751,21 +18586,21 @@
 <p class="tableblock">        param_value points to an array of <code>n</code> pointers allocated by the
         caller, where <code>n</code> is the number of devices associated with program.
         The buffer sizes needed to allocate the memory that these <code>n</code>
-        pointers refer to can be queried using the <a href="#CL_PROGRAM_BINARY_SIZES"><code>CL_&#8203;PROGRAM_&#8203;BINARY_&#8203;SIZES</code></a>
+        pointers refer to can be queried using the <a href="#CL_PROGRAM_BINARY_SIZES"><code>CL_PROGRAM_<wbr>BINARY_<wbr>SIZES</code></a>
         query as described in this table.</p>
 <p class="tableblock">        Each entry in this array is used by the implementation as the
         location in memory where to copy the program binary for a specific
         device, if there is a binary available.
         To find out which device the program binary in the array refers to,
-        use the <a href="#CL_PROGRAM_DEVICES"><code>CL_&#8203;PROGRAM_&#8203;DEVICES</code></a> query to get the list of devices.
+        use the <a href="#CL_PROGRAM_DEVICES"><code>CL_PROGRAM_<wbr>DEVICES</code></a> query to get the list of devices.
         There is a one-to-one correspondence between the array of n pointers
-        returned by <a href="#CL_PROGRAM_BINARIES"><code>CL_&#8203;PROGRAM_&#8203;BINARIES</code></a> and array of devices returned by
-        <a href="#CL_PROGRAM_DEVICES"><code>CL_&#8203;PROGRAM_&#8203;DEVICES</code></a>.</p></td>
+        returned by <a href="#CL_PROGRAM_BINARIES"><code>CL_PROGRAM_<wbr>BINARIES</code></a> and array of devices returned by
+        <a href="#CL_PROGRAM_DEVICES"><code>CL_PROGRAM_<wbr>DEVICES</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_NUM_KERNELS"></a><a href="#CL_PROGRAM_NUM_KERNELS"><code>CL_&#8203;PROGRAM_&#8203;NUM_&#8203;KERNELS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_NUM_KERNELS"></a><a href="#CL_PROGRAM_NUM_KERNELS"><code>CL_PROGRAM_<wbr>NUM_<wbr>KERNELS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of kernels declared in <em>program</em> that can be
         created with <a href="#clCreateKernel"><strong>clCreateKernel</strong></a>.
         This information is only available after a successful program
@@ -18773,9 +18608,9 @@
         devices associated with <em>program</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_KERNEL_NAMES"></a><a href="#CL_PROGRAM_KERNEL_NAMES"><code>CL_&#8203;PROGRAM_&#8203;KERNEL_&#8203;NAMES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_KERNEL_NAMES"></a><a href="#CL_PROGRAM_KERNEL_NAMES"><code>CL_PROGRAM_<wbr>KERNEL_<wbr>NAMES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns a semi-colon separated list of kernel names in <em>program</em>
         that can be created with <a href="#clCreateKernel"><strong>clCreateKernel</strong></a>.
         This information is only available after a successful program
@@ -18783,61 +18618,69 @@
         devices associated with <em>program</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"></a><a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_&#8203;PROGRAM_&#8203;SCOPE_&#8203;GLOBAL_&#8203;CTORS_&#8203;PRESENT</code></a></p>
-<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"></a><a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>CTORS_<wbr>PRESENT</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.2 and <a href="#unified-spec">deprecated by</a> version 3.0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This indicates that the <em>program</em> object contains non-trivial
         constructor(s) that will be executed by runtime before any kernel
-        from the program is executed.</p></td>
+        from the program is executed.
+        This information is only available after a successful program
+        executable has been built for at least one device in the list of
+        devices associated with <em>program</em>.</p>
+<p class="tableblock">        Querying <a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>CTORS_<wbr>PRESENT</code></a> may unconditionally
+        return <a href="#CL_FALSE"><code>CL_FALSE</code></a> if no devices associated with <em>program</em> support
+        constructors for program scope global variables.
+        Support for constructors and destructors for program scope global
+        variables is required only for OpenCL 2.2 devices.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"></a><a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_&#8203;PROGRAM_&#8203;SCOPE_&#8203;GLOBAL_&#8203;DTORS_&#8203;PRESENT</code></a></p>
-<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"></a><a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>DTORS_<wbr>PRESENT</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.2 and <a href="#unified-spec">deprecated by</a> version 3.0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This indicates that the program object contains non-trivial
         destructor(s) that will be executed by runtime when <em>program</em> is
-        destroyed.</p></td>
+        destroyed.
+        This information is only available after a successful program
+        executable has been built for at least one device in the list of
+        devices associated with <em>program</em>.</p>
+<p class="tableblock">        Querying <a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>CTORS_<wbr>PRESENT</code></a> may unconditionally
+        return <a href="#CL_FALSE"><code>CL_FALSE</code></a> if no devices associated with <em>program</em> support
+        destructors for program scope global variables.
+        Support for constructors and destructors for program scope global
+        variables is required only for OpenCL 2.2 devices.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">14</dt>
-<dd>
-<p>The reference count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for identifying memory leaks.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
-<p><a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#program-info-table">Program Object Queries</a> table and
 <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is a not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is a not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_&#8203;INVALID_&#8203;PROGRAM_&#8203;EXECUTABLE</code></a> if <em>param_name</em> is <a href="#CL_PROGRAM_NUM_KERNELS"><code>CL_&#8203;PROGRAM_&#8203;NUM_&#8203;KERNELS</code></a>
-or <a href="#CL_PROGRAM_KERNEL_NAMES"><code>CL_&#8203;PROGRAM_&#8203;KERNEL_&#8203;NAMES</code></a> and a successful program executable has not
-been built for at least one device in the list of devices associated
-with <em>program</em>.</p>
+<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_INVALID_<wbr>PROGRAM_<wbr>EXECUTABLE</code></a> if <em>param_name</em> is
+<a href="#CL_PROGRAM_NUM_KERNELS"><code>CL_PROGRAM_<wbr>NUM_<wbr>KERNELS</code></a>, <a href="#CL_PROGRAM_KERNEL_NAMES"><code>CL_PROGRAM_<wbr>KERNEL_<wbr>NAMES</code></a>,
+<a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>CTORS_<wbr>PRESENT</code></a>, or
+<a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>DTORS_<wbr>PRESENT</code></a> and a successful program executable
+has not been built for at least one device in the list of devices
+associated with <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -18903,110 +18746,110 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_program_build_info</strong></th>
+<th class="tableblock halign-left valign-top">Program Build Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_STATUS"></a><a href="#CL_PROGRAM_BUILD_STATUS"><code>CL_&#8203;PROGRAM_&#8203;BUILD_&#8203;STATUS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_build_status</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_STATUS"></a><a href="#CL_PROGRAM_BUILD_STATUS"><code>CL_PROGRAM_<wbr>BUILD_<wbr>STATUS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_build_<wbr>status</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the build, compile or link status, whichever was performed
         last on the specified <em>program</em> object for <em>device</em>.</p>
 <p class="tableblock">        This can be one of the following:</p>
-<p class="tableblock">        <a id="CL_BUILD_NONE"></a><a href="#CL_BUILD_NONE"><code>CL_&#8203;BUILD_&#8203;NONE</code></a> - The build status returned if no <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>,
+<p class="tableblock">        <a id="CL_BUILD_NONE"></a><a href="#CL_BUILD_NONE"><code>CL_BUILD_<wbr>NONE</code></a> - The build status returned if no <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>,
         <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> has been performed on the
         specified <em>program</em> object for <em>device</em>).</p>
-<p class="tableblock">        <a id="CL_BUILD_ERROR"></a><a href="#CL_BUILD_ERROR"><code>CL_&#8203;BUILD_&#8203;ERROR</code></a> - The build status returned if <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>,
+<p class="tableblock">        <a id="CL_BUILD_ERROR"></a><a href="#CL_BUILD_ERROR"><code>CL_BUILD_<wbr>ERROR</code></a> - The build status returned if <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>,
         <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> - whichever was performed last
         on the specified <em>program</em> object for <em>device</em> - generated an error.</p>
-<p class="tableblock">        <a id="CL_BUILD_SUCCESS"></a><a href="#CL_BUILD_SUCCESS"><code>CL_&#8203;BUILD_&#8203;SUCCESS</code></a> - The build status returned if <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>,
+<p class="tableblock">        <a id="CL_BUILD_SUCCESS"></a><a href="#CL_BUILD_SUCCESS"><code>CL_BUILD_<wbr>SUCCESS</code></a> - The build status returned if <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>,
         <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> - whichever was performed last
         on the specified <em>program</em> object for <em>device</em> - was successful.</p>
-<p class="tableblock">        <a id="CL_BUILD_IN_PROGRESS"></a><a href="#CL_BUILD_IN_PROGRESS"><code>CL_&#8203;BUILD_&#8203;IN_&#8203;PROGRESS</code></a> - The build status returned if
+<p class="tableblock">        <a id="CL_BUILD_IN_PROGRESS"></a><a href="#CL_BUILD_IN_PROGRESS"><code>CL_BUILD_<wbr>IN_<wbr>PROGRESS</code></a> - The build status returned if
         <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>, <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> - whichever
         was performed last on the specified <em>program</em> object for <em>device</em> - has
         not finished.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_OPTIONS"></a><a href="#CL_PROGRAM_BUILD_OPTIONS"><code>CL_&#8203;PROGRAM_&#8203;BUILD_&#8203;OPTIONS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_OPTIONS"></a><a href="#CL_PROGRAM_BUILD_OPTIONS"><code>CL_PROGRAM_<wbr>BUILD_<wbr>OPTIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the build, compile or link options specified by the options
         argument in <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>, <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clLinkProgram"><strong>clLinkProgram</strong></a>,
         whichever was performed last on the specified <em>program</em> object for
         <em>device</em>.</p>
 <p class="tableblock">        If build status of the specified <em>program</em> for <em>device</em> is
-        <a href="#CL_BUILD_NONE"><code>CL_&#8203;BUILD_&#8203;NONE</code></a>, an empty string is returned.</p></td>
+        <a href="#CL_BUILD_NONE"><code>CL_BUILD_<wbr>NONE</code></a>, an empty string is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_LOG"></a><a href="#CL_PROGRAM_BUILD_LOG"><code>CL_&#8203;PROGRAM_&#8203;BUILD_&#8203;LOG</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_LOG"></a><a href="#CL_PROGRAM_BUILD_LOG"><code>CL_PROGRAM_<wbr>BUILD_<wbr>LOG</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the build, compile or link log for <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>,
         <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or <a href="#clLinkProgram"><strong>clLinkProgram</strong></a>, whichever was performed last
         on program for device.</p>
 <p class="tableblock">        If build status of the specified <em>program</em> for <em>device</em> is
-        <a href="#CL_BUILD_NONE"><code>CL_&#8203;BUILD_&#8203;NONE</code></a>, an empty string is returned.</p></td>
+        <a href="#CL_BUILD_NONE"><code>CL_BUILD_<wbr>NONE</code></a>, an empty string is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BINARY_TYPE"></a><a href="#CL_PROGRAM_BINARY_TYPE"><code>CL_&#8203;PROGRAM_&#8203;BINARY_&#8203;TYPE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BINARY_TYPE"></a><a href="#CL_PROGRAM_BINARY_TYPE"><code>CL_PROGRAM_<wbr>BINARY_<wbr>TYPE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_program_binary_type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_program_<wbr>binary_<wbr>type</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the program binary type for device.
         This can be one of the following values:</p>
-<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_NONE"></a><a href="#CL_PROGRAM_BINARY_TYPE_NONE"><code>CL_&#8203;PROGRAM_&#8203;BINARY_&#8203;TYPE_&#8203;NONE</code></a> - There is no binary associated
+<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_NONE"></a><a href="#CL_PROGRAM_BINARY_TYPE_NONE"><code>CL_PROGRAM_<wbr>BINARY_<wbr>TYPE_<wbr>NONE</code></a> - There is no binary associated
         with the specified <em>program</em> object for <em>device</em>.</p>
-<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT"></a><a href="#CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT"><code>CL_&#8203;PROGRAM_&#8203;BINARY_&#8203;TYPE_&#8203;COMPILED_&#8203;OBJECT</code></a> - A compiled binary is
+<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT"></a><a href="#CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT"><code>CL_PROGRAM_<wbr>BINARY_<wbr>TYPE_<wbr>COMPILED_<wbr>OBJECT</code></a> - A compiled binary is
         associated with <em>device</em>.
         This is the case when the specified <em>program</em> object was created using
         <a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a> and compiled using <a href="#clCompileProgram"><strong>clCompileProgram</strong></a>, or
         when a compiled binary was loaded using <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a>.</p>
-<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_LIBRARY"></a><a href="#CL_PROGRAM_BINARY_TYPE_LIBRARY"><code>CL_&#8203;PROGRAM_&#8203;BINARY_&#8203;TYPE_&#8203;LIBRARY</code></a> - A library binary is
+<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_LIBRARY"></a><a href="#CL_PROGRAM_BINARY_TYPE_LIBRARY"><code>CL_PROGRAM_<wbr>BINARY_<wbr>TYPE_<wbr>LIBRARY</code></a> - A library binary is
         associated with <em>device</em>.
         This is the case when the specified <em>program</em> object was linked by
         <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> using the <code>-create-library</code> link option, or when a
         compiled library binary was loaded using <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a>.</p>
-<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_EXECUTABLE"></a><a href="#CL_PROGRAM_BINARY_TYPE_EXECUTABLE"><code>CL_&#8203;PROGRAM_&#8203;BINARY_&#8203;TYPE_&#8203;EXECUTABLE</code></a> - An executable binary is
+<p class="tableblock">        <a id="CL_PROGRAM_BINARY_TYPE_EXECUTABLE"></a><a href="#CL_PROGRAM_BINARY_TYPE_EXECUTABLE"><code>CL_PROGRAM_<wbr>BINARY_<wbr>TYPE_<wbr>EXECUTABLE</code></a> - An executable binary is
         associated with <em>device</em>.
         This is the case when the specified <em>program</em> object was linked by
         <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> without the <code>-create-library</code> link option, or when an
         executable binary was built using <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE"></a><a href="#CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE"><code>CL_&#8203;PROGRAM_&#8203;BUILD_&#8203;GLOBAL_&#8203;VARIABLE_&#8203;TOTAL_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE"></a><a href="#CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE"><code>CL_PROGRAM_<wbr>BUILD_<wbr>GLOBAL_<wbr>VARIABLE_<wbr>TOTAL_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The total amount of storage, in bytes, used by program variables in
         the global address space.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clGetProgramBuildInfo"><strong>clGetProgramBuildInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetProgramBuildInfo"><strong>clGetProgramBuildInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not in the list of devices associated
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not in the list of devices associated
 with <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#program-build-info-table">Program Build Queries</a> table and
 <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is a not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is a not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19039,7 +18882,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_kernel_objects">5.9. Kernel Objects</h3>
+<h3 id="_kernel_objects"><a class="anchor" href="#_kernel_objects"></a>5.9. Kernel Objects</h3>
 <div class="paragraph">
 <p>A kernel is a function declared in a program.
 A kernel is identified by the <code>__kernel</code> qualifier applied to any function
@@ -19049,7 +18892,7 @@
 <code>__kernel</code> function.</p>
 </div>
 <div class="sect3">
-<h4 id="_creating_kernel_objects">5.9.1. Creating Kernel Objects</h4>
+<h4 id="_creating_kernel_objects"><a class="anchor" href="#_creating_kernel_objects"></a>5.9.1. Creating Kernel Objects</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -19080,37 +18923,37 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateKernel"><strong>clCreateKernel</strong></a> returns a valid non-zero kernel object and <em>errcode_ret</em> is
-set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the kernel object is created successfully.
+set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the kernel object is created successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_&#8203;INVALID_&#8203;PROGRAM_&#8203;EXECUTABLE</code></a> if there is no successfully built
+<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_INVALID_<wbr>PROGRAM_<wbr>EXECUTABLE</code></a> if there is no successfully built
 executable for <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL_NAME"><code>CL_&#8203;INVALID_&#8203;KERNEL_&#8203;NAME</code></a> if <em>kernel_name</em> is not found in <em>program</em>.</p>
+<p><a href="#CL_INVALID_KERNEL_NAME"><code>CL_INVALID_<wbr>KERNEL_<wbr>NAME</code></a> if <em>kernel_name</em> is not found in <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL_DEFINITION"><code>CL_&#8203;INVALID_&#8203;KERNEL_&#8203;DEFINITION</code></a> if the function definition for <code>__kernel</code>
+<p><a href="#CL_INVALID_KERNEL_DEFINITION"><code>CL_INVALID_<wbr>KERNEL_<wbr>DEFINITION</code></a> if the function definition for <code>__kernel</code>
 function given by <em>kernel_name</em> such as the number of arguments, the
 argument types are not the same for all devices for which the <em>program</em>
 executable has been built.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>kernel_name</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>kernel_name</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19139,7 +18982,7 @@
 </li>
 <li>
 <p><em>num_kernels</em> is the size of memory pointed to by <em>kernels</em> specified as the
-number of cl_kernel entries.</p>
+number of <code>cl_kernel</code> entries.</p>
 </li>
 <li>
 <p><em>kernels</em> is the buffer where the kernel objects for kernels in <em>program</em>
@@ -19167,7 +19010,7 @@
 No changes to the program executable are allowed while there are kernel
 objects associated with a program object.
 This means that calls to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> and <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> return
-<a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if there are kernel objects attached to a program
+<a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if there are kernel objects attached to a program
 object.
 The OpenCL context associated with <em>program</em> will be the context associated
 with <em>kernel</em>.
@@ -19178,29 +19021,29 @@
 program object.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clCreateKernelsInProgram"><strong>clCreateKernelsInProgram</strong></a> will return  <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the kernel objects were
+<p><a href="#clCreateKernelsInProgram"><strong>clCreateKernelsInProgram</strong></a> will return  <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the kernel objects were
 successfully allocated.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
+<p><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a> if <em>program</em> is not a valid program object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_&#8203;INVALID_&#8203;PROGRAM_&#8203;EXECUTABLE</code></a> if there is no successfully built
+<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_INVALID_<wbr>PROGRAM_<wbr>EXECUTABLE</code></a> if there is no successfully built
 executable for any device in <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>kernels</em> is not <code>NULL</code> and <em>num_kernels</em> is less
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>kernels</em> is not <code>NULL</code> and <em>num_kernels</em> is less
 than the number of kernels in <em>program</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19229,21 +19072,21 @@
 <p>The <em>kernel</em> reference count is incremented.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainKernel"><strong>clRetainKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clRetainKernel"><strong>clRetainKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19282,21 +19125,21 @@
 the object or by calling <a href="#clRetainKernel"><strong>clRetainKernel</strong></a> causes undefined behavior.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseKernel"><strong>clReleaseKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseKernel"><strong>clReleaseKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19305,7 +19148,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_setting_kernel_arguments">5.9.2. Setting Kernel Arguments</h4>
+<h4 id="_setting_kernel_arguments"><a class="anchor" href="#_setting_kernel_arguments"></a>5.9.2. Setting Kernel Arguments</h4>
 <div class="paragraph">
 <p>To execute a kernel, the kernel arguments must be set.</p>
 </div>
@@ -19338,14 +19181,14 @@
 <li>
 <p><em>arg_size</em> specifies the size of the argument value.
 If the argument is a memory object, the <em>arg_size</em> value must be equal to
-<code>sizeof(cl_mem)</code>.
+<code>sizeof(<code>cl_mem</code>)</code>.
 For arguments declared with the <code>local</code> qualifier, the size specified will
 be the size in bytes of the buffer that must be allocated for the <code>local</code>
 argument.
 If the argument is of type <em>sampler_t</em>, the <em>arg_size</em> value must be equal
-to <code>sizeof(cl_sampler)</code>.
+to <code>sizeof(<code>cl_sampler</code>)</code>.
 If the argument is of type <em>queue_t</em>, the <em>arg_size</em> value must be equal to
-<code>sizeof(cl_command_queue)</code>.
+<code>sizeof(<code>cl_command_<wbr>queue</code>)</code>.
 For all other arguments, the size will be the size of argument type.</p>
 </li>
 <li>
@@ -19402,9 +19245,9 @@
 space, the memory object specified as argument value must be a buffer object
 (or <code>NULL</code>).
 If the argument is declared with the <code>constant</code> qualifier, the size in bytes
-of the memory object cannot exceed <a href="#CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CONSTANT_&#8203;BUFFER_&#8203;SIZE</code></a> and
+of the memory object cannot exceed <a href="#CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>CONSTANT_<wbr>BUFFER_<wbr>SIZE</code></a> and
 the number of arguments declared as pointers to <code>constant</code> memory cannot
-exceed <a href="#CL_DEVICE_MAX_CONSTANT_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CONSTANT_&#8203;ARGS</code></a>.</p>
+exceed <a href="#CL_DEVICE_MAX_CONSTANT_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>CONSTANT_<wbr>ARGS</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>The memory object specified as argument value must be a pipe object if the
@@ -19414,7 +19257,7 @@
 <p>The memory object specified as argument value must be a 2D image object if
 the argument is declared to be of type <em>image2d_t</em>.
 The memory object specified as argument value must be a 2D image object with
-image channel order = <a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a> if the argument is declared to be of type
+image channel order = <a href="#CL_DEPTH"><code>CL_DEPTH</code></a> if the argument is declared to be of type
 <em>image2d_depth_t</em>.
 The memory object specified as argument value must be a 3D image object if
 argument is declared to be of type <em>image3d_t</em>.
@@ -19427,7 +19270,7 @@
 The memory object specified as argument value must be a 2D image array
 object if argument is declared to be of type <em>image2d_array_t</em>.
 The memory object specified as argument value must be a 2D image array
-object with image channel order = <a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a> if argument is declared to be of
+object with image channel order = <a href="#CL_DEPTH"><code>CL_DEPTH</code></a> if argument is declared to be of
 type <em>image2d_array_depth_t</em>.</p>
 </div>
 <div class="paragraph">
@@ -19448,56 +19291,56 @@
 argument values to the kernel.</p>
 </div>
 <div class="paragraph">
-<p>Implementations shall not allow cl_kernel objects to hold reference
-counts to cl_kernel arguments, because no mechanism is provided for the
+<p>Implementations shall not allow <code>cl_kernel</code> objects to hold reference
+counts to <code>cl_kernel</code> arguments, because no mechanism is provided for the
 user to tell the kernel to release that ownership right.
 If the kernel holds ownership rights on kernel args, that would make it
 impossible for the user to tell with certainty when he may safely
 release user allocated resources associated with OpenCL objects such as
-the cl_mem backing store used with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a>.</p>
+the <code>cl_mem</code> backing store used with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a>.</p>
 </div>
 </td>
 </tr>
 </table>
 </div>
 <div class="paragraph">
-<p><a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function was executed
+<p><a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function was executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_ARG_INDEX"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;INDEX</code></a> if <em>arg_index</em> is not a valid argument index.</p>
+<p><a href="#CL_INVALID_ARG_INDEX"><code>CL_INVALID_<wbr>ARG_<wbr>INDEX</code></a> if <em>arg_index</em> is not a valid argument index.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_ARG_VALUE"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;VALUE</code></a> if <em>arg_value</em> specified is not a valid value.</p>
+<p><a href="#CL_INVALID_ARG_VALUE"><code>CL_INVALID_<wbr>ARG_<wbr>VALUE</code></a> if <em>arg_value</em> specified is not a valid value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> for an argument declared to be a memory object
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> for an argument declared to be a memory object
 when the specified <em>arg_value</em> is not a valid memory object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_SAMPLER"><code>CL_&#8203;INVALID_&#8203;SAMPLER</code></a> for an argument declared to be of type <em>sampler_t</em>
+<p><a href="#CL_INVALID_SAMPLER"><code>CL_INVALID_<wbr>SAMPLER</code></a> for an argument declared to be of type <em>sampler_t</em>
 when the specified <em>arg_value</em> is not a valid sampler object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_DEVICE_QUEUE"><code>CL_&#8203;INVALID_&#8203;DEVICE_&#8203;QUEUE</code></a> for an argument declared to be of type <em>queue_t</em>
+<p><a href="#CL_INVALID_DEVICE_QUEUE"><code>CL_INVALID_<wbr>DEVICE_<wbr>QUEUE</code></a> for an argument declared to be of type <em>queue_t</em>
 when the specified <em>arg_value</em> is not a valid device queue object.
 This error code is <a href="#unified-spec">missing before</a> version 2.0.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_ARG_SIZE"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;SIZE</code></a> if <em>arg_size</em> does not match the size of the data
+<p><a href="#CL_INVALID_ARG_SIZE"><code>CL_INVALID_<wbr>ARG_<wbr>SIZE</code></a> if <em>arg_size</em> does not match the size of the data
 type for an argument that is not a memory object or if the argument is a
-memory object and <em>arg_size</em> != <code>sizeof(cl_mem)</code> or if <em>arg_size</em> is
+memory object and <em>arg_size</em> != <code>sizeof(<code>cl_mem</code>)</code> or if <em>arg_size</em> is
 zero and the argument is declared with the local qualifier or if the
-argument is a sampler and <em>arg_size</em> != <code>sizeof(cl_sampler)</code>.</p>
+argument is a sampler and <em>arg_size</em> != <code>sizeof(<code>cl_sampler</code>)</code>.</p>
 </li>
 <li>
-<p><a href="#CL_MAX_SIZE_RESTRICTION_EXCEEDED"><code>CL_&#8203;MAX_&#8203;SIZE_&#8203;RESTRICTION_&#8203;EXCEEDED</code></a> if the size in bytes of the memory
+<p><a href="#CL_MAX_SIZE_RESTRICTION_EXCEEDED"><code>CL_MAX_<wbr>SIZE_<wbr>RESTRICTION_<wbr>EXCEEDED</code></a> if the size in bytes of the memory
 object (if the argument is a memory object) or <em>arg_size</em> (if the
 argument is declared with <code>local</code> qualifier) exceeds a language-
 specified maximum size restriction for this argument, such as the
@@ -19505,18 +19348,18 @@
 This error code is <a href="#unified-spec">missing before</a> version 2.2.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_ARG_VALUE"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;VALUE</code></a> if the argument is an image declared with the
+<p><a href="#CL_INVALID_ARG_VALUE"><code>CL_INVALID_<wbr>ARG_<wbr>VALUE</code></a> if the argument is an image declared with the
 <code>read_only</code> qualifier and <em>arg_value</em> refers to an image object created
-with <em>cl_mem_flags</em> of <a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a> or if the image argument is
+with <em>cl_mem_flags</em> of <a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a> or if the image argument is
 declared with the <code>write_only</code> qualifier and <em>arg_value</em> refers to an
-image object created with <em>cl_mem_flags</em> of <a href="#CL_MEM_READ_ONLY"><code>CL_&#8203;MEM_&#8203;READ_&#8203;ONLY</code></a>.</p>
+image object created with <em>cl_mem_flags</em> of <a href="#CL_MEM_READ_ONLY"><code>CL_MEM_<wbr>READ_<wbr>ONLY</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19577,30 +19420,30 @@
 </ul>
 </div>
 <div class="paragraph">
-<p><a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function was executed
+<p><a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function was executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in the context associated with <em>kernel</em> support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in the context associated with <em>kernel</em> support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_ARG_INDEX"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;INDEX</code></a> if <em>arg_index</em> is not a valid argument index.</p>
+<p><a href="#CL_INVALID_ARG_INDEX"><code>CL_INVALID_<wbr>ARG_<wbr>INDEX</code></a> if <em>arg_index</em> is not a valid argument index.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_ARG_VALUE"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;VALUE</code></a> if <em>arg_value</em> specified is not a valid value.</p>
+<p><a href="#CL_INVALID_ARG_VALUE"><code>CL_INVALID_<wbr>ARG_<wbr>VALUE</code></a> if <em>arg_value</em> specified is not a valid value.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19664,16 +19507,16 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_kernel_exec_info</strong></th>
+<th class="tableblock halign-left valign-top">Kernel Exec Info</th>
 <th class="tableblock halign-left valign-top">Type</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_EXEC_INFO_SVM_PTRS"></a><a href="#CL_KERNEL_EXEC_INFO_SVM_PTRS"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;PTRS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_EXEC_INFO_SVM_PTRS"></a><a href="#CL_KERNEL_EXEC_INFO_SVM_PTRS"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>PTRS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">void *[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>void</code> *[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">SVM pointers must reference locations contained entirely within
         buffers that are passed to kernel as arguments, or that are passed
         through the execution information.</p>
@@ -19683,9 +19526,9 @@
         allocations.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"></a><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;SYSTEM</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"></a><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>SYSTEM</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This flag indicates whether the kernel uses pointers that are fine
         grain system SVM allocations.
         These fine grain system SVM pointers may be passed as arguments or
@@ -19694,34 +19537,34 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in the context associated with <em>kernel</em> support SVM.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in the context associated with <em>kernel</em> support SVM.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, if <em>param_value</em> is
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, if <em>param_value</em> is
 <code>NULL</code> or if the size specified by <em>param_value_size</em> is not valid.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>param_name</em> is
-<a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;SYSTEM</code></a> and <em>param_value</em> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>param_name</em> is
+<a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>SYSTEM</code></a> and <em>param_value</em> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>
 but no devices in context associated with <em>kernel</em> support fine-grain
 system SVM allocations.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19738,7 +19581,7 @@
 <div class="paragraph">
 <p>Coarse-grain or fine-grain buffer SVM pointers used by a kernel which
 are not passed as a kernel arguments must be specified using
-<a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> with <a href="#CL_KERNEL_EXEC_INFO_SVM_PTRS"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;PTRS</code></a>.
+<a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> with <a href="#CL_KERNEL_EXEC_INFO_SVM_PTRS"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>PTRS</code></a>.
 For example, if SVM buffer A contains a pointer to another SVM buffer B,
 and the kernel dereferences that pointer, then a pointer to B must
 either be passed as an argument in the call to that kernel or it must be
@@ -19759,42 +19602,42 @@
 pointers.</p>
 </div>
 <div class="paragraph">
-<p>When calling <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> with <a href="#CL_KERNEL_EXEC_INFO_SVM_PTRS"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;PTRS</code></a> to
+<p>When calling <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> with <a href="#CL_KERNEL_EXEC_INFO_SVM_PTRS"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>PTRS</code></a> to
 specify pointers to non-argument SVM buffers as extra arguments to a kernel,
 each of these pointers can be the SVM pointer returned by <a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a> or
 can be a pointer + offset into the SVM region.
 It is sufficient to provide one pointer for each SVM buffer used.</p>
 </div>
 <div class="paragraph">
-<p><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;SYSTEM</code></a> is used to indicate whether
+<p><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>SYSTEM</code></a> is used to indicate whether
 SVM pointers used by a kernel will refer to system allocations or not.</p>
 </div>
 <div class="paragraph">
-<p><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;SYSTEM</code></a> = <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> indicates that the
+<p><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>SYSTEM</code></a> = <a href="#CL_FALSE"><code>CL_FALSE</code></a> indicates that the
 OpenCL implementation may assume that system pointers are not passed as
 kernel arguments and are not stored inside SVM allocations passed as kernel
 arguments.</p>
 </div>
 <div class="paragraph">
-<p><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;SYSTEM</code></a> = <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> indicates that the
+<p><a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>SYSTEM</code></a> = <a href="#CL_TRUE"><code>CL_TRUE</code></a> indicates that the
 OpenCL implementation must assume that system pointers might be passed as
 kernel arguments and/or stored inside SVM allocations passed as kernel
 arguments.
 In this case, if the device to which the kernel is enqueued does not support
 system SVM pointers, <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> and <a href="#clEnqueueTask"><strong>clEnqueueTask</strong></a> will return a
-<a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> error.
+<a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> error.
 If none of the devices in the context associated with kernel support
 fine-grain system SVM allocations, <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> will return a
-<a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> error.</p>
+<a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> error.</p>
 </div>
 <div class="paragraph">
 <p>If <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> has not been called with a value for
-<a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_&#8203;KERNEL_&#8203;EXEC_&#8203;INFO_&#8203;SVM_&#8203;FINE_&#8203;GRAIN_&#8203;SYSTEM</code></a>, the default value is used for
+<a href="#CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"><code>CL_KERNEL_<wbr>EXEC_<wbr>INFO_<wbr>SVM_<wbr>FINE_<wbr>GRAIN_<wbr>SYSTEM</code></a>, the default value is used for
 this kernel attribute.
 The default value depends on whether the device on which the kernel is
 enqueued supports fine-grain system SVM allocations.
-If so, the default value used is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> (system pointers might be passed);
-otherwise, the default is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p>
+If so, the default value used is <a href="#CL_TRUE"><code>CL_TRUE</code></a> (system pointers might be passed);
+otherwise, the default is <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>A call to <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> for a given value of <em>param_name</em>
@@ -19807,7 +19650,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_copying_kernel_objects">5.9.3. Copying Kernel Objects</h4>
+<h4 id="_copying_kernel_objects"><a class="anchor" href="#_copying_kernel_objects"></a>5.9.3. Copying Kernel Objects</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -19847,7 +19690,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p><em>source_kernel</em> is a valid cl_kernel object that will be copied.
+<p><em>source_kernel</em> is a valid <code>cl_kernel</code> object that will be copied.
 <em>source_kernel</em> will not be modified in any way by this function.</p>
 </li>
 <li>
@@ -19891,21 +19734,21 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCloneKernel"><strong>clCloneKernel</strong></a> returns a valid non-zero kernel object and <em>errcode_ret</em> is
-set to  <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the kernel is successfully copied.
+set to  <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the kernel is successfully copied.
 Otherwise it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -19914,7 +19757,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_kernel_object_queries">5.9.4. Kernel Object Queries</h4>
+<h4 id="_kernel_object_queries"><a class="anchor" href="#_kernel_object_queries"></a>5.9.4. Kernel Object Queries</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -19968,41 +19811,41 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_kernel_info</strong></th>
+<th class="tableblock halign-left valign-top">Kernel Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_FUNCTION_NAME"></a><a href="#CL_KERNEL_FUNCTION_NAME"><code>CL_&#8203;KERNEL_&#8203;FUNCTION_&#8203;NAME</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_FUNCTION_NAME"></a><a href="#CL_KERNEL_FUNCTION_NAME"><code>CL_KERNEL_<wbr>FUNCTION_<wbr>NAME</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the kernel function name.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_NUM_ARGS"></a><a href="#CL_KERNEL_NUM_ARGS"><code>CL_&#8203;KERNEL_&#8203;NUM_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_NUM_ARGS"></a><a href="#CL_KERNEL_NUM_ARGS"><code>CL_KERNEL_<wbr>NUM_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the number of arguments to kernel.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_REFERENCE_COUNT"></a><a href="#CL_KERNEL_REFERENCE_COUNT"><code>CL_&#8203;KERNEL_&#8203;REFERENCE_&#8203;COUNT</code></a><sup>16</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_REFERENCE_COUNT"></a><a href="#CL_KERNEL_REFERENCE_COUNT"><code>CL_KERNEL_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_27" class="footnote" href="#_footnotedef_27" title="View footnote.">27</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the <em>kernel</em> reference count.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_CONTEXT"></a><a href="#CL_KERNEL_CONTEXT"><code>CL_&#8203;KERNEL_&#8203;CONTEXT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_CONTEXT"></a><a href="#CL_KERNEL_CONTEXT"><code>CL_KERNEL_<wbr>CONTEXT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_context</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the context associated with <em>kernel</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_PROGRAM"></a><a href="#CL_KERNEL_PROGRAM"><code>CL_&#8203;KERNEL_&#8203;PROGRAM</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_program</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_PROGRAM"></a><a href="#CL_KERNEL_PROGRAM"><code>CL_KERNEL_<wbr>PROGRAM</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_program</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the program object associated with kernel.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ATTRIBUTES"></a><a href="#CL_KERNEL_ATTRIBUTES"><code>CL_&#8203;KERNEL_&#8203;ATTRIBUTES</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ATTRIBUTES"></a><a href="#CL_KERNEL_ATTRIBUTES"><code>CL_KERNEL_<wbr>ATTRIBUTES</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns any attributes specified using the <code>__attribute__</code>
         OpenCL C qualifier (or using an OpenCL C++ qualifier syntax [[]] )
         with the kernel function declaration in the program source.
@@ -20020,38 +19863,28 @@
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">16</dt>
-<dd>
-<p>The reference count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for identifying memory leaks.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
-<p><a href="#clGetKernelInfo"><strong>clGetKernelInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetKernelInfo"><strong>clGetKernelInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#kernel-info-table">Kernel Object Queries</a> table and <em>param_value</em>
 is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -20121,16 +19954,16 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_kernel_work_group_info</strong></th>
+<th class="tableblock halign-left valign-top">Kernel Work Group Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_GLOBAL_WORK_SIZE"></a><a href="#CL_KERNEL_GLOBAL_WORK_SIZE"><code>CL_&#8203;KERNEL_&#8203;GLOBAL_&#8203;WORK_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_GLOBAL_WORK_SIZE"></a><a href="#CL_KERNEL_GLOBAL_WORK_SIZE"><code>CL_KERNEL_<wbr>GLOBAL_<wbr>WORK_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t[3]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code>[3]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This provides a mechanism for the application to query the maximum
         global size that can be used to execute a kernel (i.e.
         <em>global_work_size</em> argument to <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>) on a custom
@@ -20138,32 +19971,32 @@
         given by device.</p>
 <p class="tableblock">        If device is not a custom device and kernel is not a built-in
         kernel, <a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a> returns the error
-        <a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a>.</p></td>
+        <a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_WORK_GROUP_SIZE"></a><a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_&#8203;KERNEL_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_WORK_GROUP_SIZE"></a><a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_KERNEL_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This provides a mechanism for the application to query the maximum
-        workgroup size that can be used to execute the kernel on a specific
+        work-group size that can be used to execute the kernel on a specific
         device given by device.
         The OpenCL implementation uses the resource requirements of the
         kernel (register usage etc.) to determine what this work-group size
         should be.</p>
-<p class="tableblock">        As a result and unlike <a href="#CL_DEVICE_MAX_WORK_GROUP_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> this value may
+<p class="tableblock">        As a result and unlike <a href="#CL_DEVICE_MAX_WORK_GROUP_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> this value may
         vary from one kernel to another as well as one device to another.</p>
-<p class="tableblock">        <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_&#8203;KERNEL_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> will be less than or equal to
-        <a href="#CL_DEVICE_MAX_WORK_GROUP_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> for a given kernel object.</p></td>
+<p class="tableblock">        <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_KERNEL_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> will be less than or equal to
+        <a href="#CL_DEVICE_MAX_WORK_GROUP_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> for a given kernel object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_COMPILE_WORK_GROUP_SIZE"></a><a href="#CL_KERNEL_COMPILE_WORK_GROUP_SIZE"><code>CL_&#8203;KERNEL_&#8203;COMPILE_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t[3]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_COMPILE_WORK_GROUP_SIZE"></a><a href="#CL_KERNEL_COMPILE_WORK_GROUP_SIZE"><code>CL_KERNEL_<wbr>COMPILE_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code>[3]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the work-group size specified in the kernel source or IL.</p>
 <p class="tableblock">        If the work-group size is not specified in the kernel source or IL,
         (0, 0, 0) is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_LOCAL_MEM_SIZE"></a><a href="#CL_KERNEL_LOCAL_MEM_SIZE"><code>CL_&#8203;KERNEL_&#8203;LOCAL_&#8203;MEM_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_LOCAL_MEM_SIZE"></a><a href="#CL_KERNEL_LOCAL_MEM_SIZE"><code>CL_KERNEL_<wbr>LOCAL_<wbr>MEM_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the amount of local memory in bytes being used by a kernel.
         This includes local memory that may be needed by an implementation
         to execute the kernel, variables declared inside the kernel with the
@@ -20175,8 +20008,8 @@
         its size is assumed to be 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"></a><a href="#CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_&#8203;KERNEL_&#8203;PREFERRED_&#8203;WORK_&#8203;GROUP_&#8203;SIZE_&#8203;MULTIPLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"></a><a href="#CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_KERNEL_<wbr>PREFERRED_<wbr>WORK_<wbr>GROUP_<wbr>SIZE_<wbr>MULTIPLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the preferred multiple of work-group size for launch.
         This is a performance hint.
         Specifying a work-group size that is not a multiple of the value
@@ -20186,8 +20019,8 @@
         device maximum.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_PRIVATE_MEM_SIZE"></a><a href="#CL_KERNEL_PRIVATE_MEM_SIZE"><code>CL_&#8203;KERNEL_&#8203;PRIVATE_&#8203;MEM_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_PRIVATE_MEM_SIZE"></a><a href="#CL_KERNEL_PRIVATE_MEM_SIZE"><code>CL_KERNEL_<wbr>PRIVATE_<wbr>MEM_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the minimum amount of private memory, in bytes, used by each
         work-item in the kernel.
         This value may include any private memory needed by an
@@ -20198,36 +20031,36 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not in the list of devices associated
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not in the list of devices associated
 with <em>kernel</em> or if <em>device</em> is <code>NULL</code> but there is more than one device
 associated with <em>kernel</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#kernel-workgroup-info-table">Kernel Object Device Queries</a> table
 and <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is <a href="#CL_KERNEL_GLOBAL_WORK_SIZE"><code>CL_&#8203;KERNEL_&#8203;GLOBAL_&#8203;WORK_&#8203;SIZE</code></a> and
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is <a href="#CL_KERNEL_GLOBAL_WORK_SIZE"><code>CL_KERNEL_<wbr>GLOBAL_<wbr>WORK_<wbr>SIZE</code></a> and
 <em>device</em> is not a custom device and <em>kernel</em> is not a built-in kernel.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -20322,7 +20155,7 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_kernel_sub_group_info</strong></th>
+<th class="tableblock halign-left valign-top">Kernel Subgroup Info</th>
 <th class="tableblock halign-left valign-top">Input Type</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
@@ -20330,47 +20163,47 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"></a><a href="#CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"><code>CL_&#8203;KERNEL_&#8203;MAX_&#8203;SUB_&#8203;GROUP_&#8203;SIZE_&#8203;FOR_&#8203;NDRANGE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"></a><a href="#CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"><code>CL_KERNEL_<wbr>MAX_<wbr>SUB_<wbr>GROUP_<wbr>SIZE_<wbr>FOR_<wbr>NDRANGE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.
 Also see extension <strong>cl_khr_subgroups</strong>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t *</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code> *</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the maximum sub-group size for this kernel.
             All sub-groups must be the same size, while the last subgroup in
             any work-group (i.e. the subgroup with the maximum index) could
             be the same or smaller size.</p>
-<p class="tableblock">            The <em>input_value</em> must be an array of size_t values
+<p class="tableblock">            The <em>input_value</em> must be an array of <code>size_t</code> values
             corresponding to the local work size parameter of the intended
             dispatch.
             The number of dimensions in the ND-range will be inferred from
             the value specified for <em>input_value_size</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE"></a><a href="#CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE"><code>CL_&#8203;KERNEL_&#8203;SUB_&#8203;GROUP_&#8203;COUNT_&#8203;FOR_&#8203;NDRANGE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE"></a><a href="#CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE"><code>CL_KERNEL_<wbr>SUB_<wbr>GROUP_<wbr>COUNT_<wbr>FOR_<wbr>NDRANGE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.
 Also see extension <strong>cl_khr_subgroups</strong>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t *</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code> *</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of sub-groups that will be present in each
             work-group for a given local work size.
             All workgroups, apart from the last work-group in each dimension
             in the presence of non-uniform work-group sizes, will have the
             same number of sub-groups.</p>
-<p class="tableblock">            The <em>input_value</em> must be an array of size_t values
+<p class="tableblock">            The <em>input_value</em> must be an array of <code>size_t</code> values
             corresponding to the local work size parameter of the intended
             dispatch.
             The number of dimensions in the ND-range will be inferred from
             the value specified for <em>input_value_size</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT"></a><a href="#CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT"><code>CL_&#8203;KERNEL_&#8203;LOCAL_&#8203;SIZE_&#8203;FOR_&#8203;SUB_&#8203;GROUP_&#8203;COUNT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT"></a><a href="#CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT"><code>CL_KERNEL_<wbr>LOCAL_<wbr>SIZE_<wbr>FOR_<wbr>SUB_<wbr>GROUP_<wbr>COUNT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.
 Also see extension <strong>cl_khr_subgroups</strong>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the local size that will generate the requested number
             of sub-groups for the kernel.
-            The output array must be an array of size_t values corresponding
+            The output array must be an array of <code>size_t</code> values corresponding
             to the local size parameter.
             Any returned work-group will have one dimension.
             Other dimensions inferred from the value specified for
@@ -20384,11 +20217,11 @@
             array.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_MAX_NUM_SUB_GROUPS"></a><a href="#CL_KERNEL_MAX_NUM_SUB_GROUPS"><code>CL_&#8203;KERNEL_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_MAX_NUM_SUB_GROUPS"></a><a href="#CL_KERNEL_MAX_NUM_SUB_GROUPS"><code>CL_KERNEL_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.
 Also see extension <strong>cl_khr_subgroups</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">ignored</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This provides a mechanism for the application to query the
             maximum number of sub-groups that may make up each work-group to
             execute a kernel on a specific device given by device.
@@ -20400,51 +20233,51 @@
             an enqueue.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_COMPILE_NUM_SUB_GROUPS"></a><a href="#CL_KERNEL_COMPILE_NUM_SUB_GROUPS"><code>CL_&#8203;KERNEL_&#8203;COMPILE_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_COMPILE_NUM_SUB_GROUPS"></a><a href="#CL_KERNEL_COMPILE_NUM_SUB_GROUPS"><code>CL_KERNEL_<wbr>COMPILE_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.1.
 Also see extension <strong>cl_khr_subgroups</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">ignored</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of sub-groups per work-group specified in the kernel
             source or IL. If the sub-group count is not specified then 0 is returned.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p><a href="#clGetKernelSubGroupInfo"><strong>clGetKernelSubGroupInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetKernelSubGroupInfo"><strong>clGetKernelSubGroupInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a> if <em>device</em> is not in the list of devices associated
+<p><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a> if <em>device</em> is not in the list of devices associated
 with <em>kernel</em> or if <em>device</em> is <code>NULL</code> but there is more than one device
 associated with <em>kernel</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>device</em> does not support Subgroups.</p>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>device</em> does not support subgroups.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#kernel-subgroup-info-table">Kernel Object Subgroup Queries</a> table
 and <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is
-<a href="#CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"><code>CL_&#8203;KERNEL_&#8203;MAX_&#8203;SUB_&#8203;GROUP_&#8203;SIZE_&#8203;FOR_&#8203;NDRANGE</code></a> and the size in bytes specified by
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is
+<a href="#CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"><code>CL_KERNEL_<wbr>MAX_<wbr>SUB_<wbr>GROUP_<wbr>SIZE_<wbr>FOR_<wbr>NDRANGE</code></a> and the size in bytes specified by
 <em>input_value_size</em> is not valid or if <em>input_value</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -20460,7 +20293,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c++">cl_int clGetKernelArgInfo(
     cl_kernel kernel,
-    cl_uint arg_indx,
+    cl_uint arg_index,
     cl_kernel_arg_info param_name,
     size_t param_value_size,
     <span class="directive">void</span>* param_value,
@@ -20485,7 +20318,7 @@
 <p><em>kernel</em> specifies the kernel object being queried.</p>
 </li>
 <li>
-<p><em>arg_indx</em> is the argument index.
+<p><em>arg_index</em> is the argument index.
 Arguments to the kernel are referred by indices that go from 0 for the
 leftmost argument to <em>n</em> - 1, where <em>n</em> is the total number of arguments
 declared by a kernel.</p>
@@ -20529,48 +20362,48 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_kernel_arg_info</strong></th>
+<th class="tableblock halign-left valign-top">Kernel Arg Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_ADDRESS_QUALIFIER"></a><a href="#CL_KERNEL_ARG_ADDRESS_QUALIFIER"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ADDRESS_&#8203;QUALIFIER</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_ADDRESS_QUALIFIER"></a><a href="#CL_KERNEL_ARG_ADDRESS_QUALIFIER"><code>CL_KERNEL_<wbr>ARG_<wbr>ADDRESS_<wbr>QUALIFIER</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_kernel_arg_address_qualifier</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_kernel_<wbr>arg_<wbr>address_<wbr>qualifier</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the address qualifier specified for the argument given by
-        <em>arg_indx</em>.
+        <em>arg_index</em>.
         This can be one of the following values:</p>
-<p class="tableblock">        <a id="CL_KERNEL_ARG_ADDRESS_GLOBAL"></a><a href="#CL_KERNEL_ARG_ADDRESS_GLOBAL"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ADDRESS_&#8203;GLOBAL</code></a><br>
-        <a id="CL_KERNEL_ARG_ADDRESS_LOCAL"></a><a href="#CL_KERNEL_ARG_ADDRESS_LOCAL"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ADDRESS_&#8203;LOCAL</code></a><br>
-        <a id="CL_KERNEL_ARG_ADDRESS_CONSTANT"></a><a href="#CL_KERNEL_ARG_ADDRESS_CONSTANT"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ADDRESS_&#8203;CONSTANT</code></a><br>
-        <a id="CL_KERNEL_ARG_ADDRESS_PRIVATE"></a><a href="#CL_KERNEL_ARG_ADDRESS_PRIVATE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ADDRESS_&#8203;PRIVATE</code></a></p>
+<p class="tableblock">        <a id="CL_KERNEL_ARG_ADDRESS_GLOBAL"></a><a href="#CL_KERNEL_ARG_ADDRESS_GLOBAL"><code>CL_KERNEL_<wbr>ARG_<wbr>ADDRESS_<wbr>GLOBAL</code></a><br>
+        <a id="CL_KERNEL_ARG_ADDRESS_LOCAL"></a><a href="#CL_KERNEL_ARG_ADDRESS_LOCAL"><code>CL_KERNEL_<wbr>ARG_<wbr>ADDRESS_<wbr>LOCAL</code></a><br>
+        <a id="CL_KERNEL_ARG_ADDRESS_CONSTANT"></a><a href="#CL_KERNEL_ARG_ADDRESS_CONSTANT"><code>CL_KERNEL_<wbr>ARG_<wbr>ADDRESS_<wbr>CONSTANT</code></a><br>
+        <a id="CL_KERNEL_ARG_ADDRESS_PRIVATE"></a><a href="#CL_KERNEL_ARG_ADDRESS_PRIVATE"><code>CL_KERNEL_<wbr>ARG_<wbr>ADDRESS_<wbr>PRIVATE</code></a></p>
 <p class="tableblock">        If no address qualifier is specified, the default address qualifier
-        which is <a href="#CL_KERNEL_ARG_ADDRESS_PRIVATE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ADDRESS_&#8203;PRIVATE</code></a> is returned.</p></td>
+        which is <a href="#CL_KERNEL_ARG_ADDRESS_PRIVATE"><code>CL_KERNEL_<wbr>ARG_<wbr>ADDRESS_<wbr>PRIVATE</code></a> is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_ACCESS_QUALIFIER"></a><a href="#CL_KERNEL_ARG_ACCESS_QUALIFIER"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ACCESS_&#8203;QUALIFIER</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_ACCESS_QUALIFIER"></a><a href="#CL_KERNEL_ARG_ACCESS_QUALIFIER"><code>CL_KERNEL_<wbr>ARG_<wbr>ACCESS_<wbr>QUALIFIER</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_kernel_arg_access_qualifier</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_kernel_<wbr>arg_<wbr>access_<wbr>qualifier</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the access qualifier specified for the argument given by
-        <em>arg_indx</em>.
+        <em>arg_index</em>.
         This can be one of the following values:</p>
-<p class="tableblock">        <a id="CL_KERNEL_ARG_ACCESS_READ_ONLY"></a><a href="#CL_KERNEL_ARG_ACCESS_READ_ONLY"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ACCESS_&#8203;READ_&#8203;ONLY</code></a><br>
-        <a id="CL_KERNEL_ARG_ACCESS_WRITE_ONLY"></a><a href="#CL_KERNEL_ARG_ACCESS_WRITE_ONLY"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ACCESS_&#8203;WRITE_&#8203;ONLY</code></a><br>
-        <a id="CL_KERNEL_ARG_ACCESS_READ_WRITE"></a><a href="#CL_KERNEL_ARG_ACCESS_READ_WRITE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ACCESS_&#8203;READ_&#8203;WRITE</code></a><br>
-        <a id="CL_KERNEL_ARG_ACCESS_NONE"></a><a href="#CL_KERNEL_ARG_ACCESS_NONE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ACCESS_&#8203;NONE</code></a></p>
+<p class="tableblock">        <a id="CL_KERNEL_ARG_ACCESS_READ_ONLY"></a><a href="#CL_KERNEL_ARG_ACCESS_READ_ONLY"><code>CL_KERNEL_<wbr>ARG_<wbr>ACCESS_<wbr>READ_<wbr>ONLY</code></a><br>
+        <a id="CL_KERNEL_ARG_ACCESS_WRITE_ONLY"></a><a href="#CL_KERNEL_ARG_ACCESS_WRITE_ONLY"><code>CL_KERNEL_<wbr>ARG_<wbr>ACCESS_<wbr>WRITE_<wbr>ONLY</code></a><br>
+        <a id="CL_KERNEL_ARG_ACCESS_READ_WRITE"></a><a href="#CL_KERNEL_ARG_ACCESS_READ_WRITE"><code>CL_KERNEL_<wbr>ARG_<wbr>ACCESS_<wbr>READ_<wbr>WRITE</code></a><br>
+        <a id="CL_KERNEL_ARG_ACCESS_NONE"></a><a href="#CL_KERNEL_ARG_ACCESS_NONE"><code>CL_KERNEL_<wbr>ARG_<wbr>ACCESS_<wbr>NONE</code></a></p>
 <p class="tableblock">        If argument is not an image type and is not declared with the pipe
-        qualifier, <a href="#CL_KERNEL_ARG_ACCESS_NONE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;ACCESS_&#8203;NONE</code></a> is returned.
+        qualifier, <a href="#CL_KERNEL_ARG_ACCESS_NONE"><code>CL_KERNEL_<wbr>ARG_<wbr>ACCESS_<wbr>NONE</code></a> is returned.
         If argument is an image type, the access qualifier specified or the
         default access qualifier is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_TYPE_NAME"></a><a href="#CL_KERNEL_ARG_TYPE_NAME"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;NAME</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_TYPE_NAME"></a><a href="#CL_KERNEL_ARG_TYPE_NAME"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>NAME</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the type name specified for the argument given by
-        <em>arg_indx</em>.
+        <em>arg_index</em>.
         The type name returned will be the argument type name as it was
         declared with any whitespace removed.
         If argument type name is an unsigned scalar type (i.e. unsigned
@@ -20580,57 +20413,30 @@
         qualifiers.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_TYPE_QUALIFIER"></a><a href="#CL_KERNEL_ARG_TYPE_QUALIFIER"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;QUALIFIER</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_TYPE_QUALIFIER"></a><a href="#CL_KERNEL_ARG_TYPE_QUALIFIER"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>QUALIFIER</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_kernel_arg_type_qualifier</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_kernel_<wbr>arg_<wbr>type_<wbr>qualifier</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns a bitfield describing one or more type qualifiers specified
-        for the argument given by <em>arg_indx</em>.
+        for the argument given by <em>arg_index</em>.
         The returned values can be:</p>
-<p class="tableblock">        <a id="CL_KERNEL_ARG_TYPE_CONST"></a><a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;CONST</code></a><sup>17</sup><br>
-        <a id="CL_KERNEL_ARG_TYPE_RESTRICT"></a><a href="#CL_KERNEL_ARG_TYPE_RESTRICT"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;RESTRICT</code></a><br>
-        <a id="CL_KERNEL_ARG_TYPE_VOLATILE"></a><a href="#CL_KERNEL_ARG_TYPE_VOLATILE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;VOLATILE</code></a><sup>18</sup><br>
-        <a id="CL_KERNEL_ARG_TYPE_PIPE"></a><a href="#CL_KERNEL_ARG_TYPE_PIPE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;PIPE</code></a>, or<br>
-        <a id="CL_KERNEL_ARG_TYPE_NONE"></a><a href="#CL_KERNEL_ARG_TYPE_NONE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;NONE</code></a></p>
-<p class="tableblock">        <a href="#CL_KERNEL_ARG_TYPE_NONE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;NONE</code></a> is returned for all parameters passed by
+<p class="tableblock">        <a id="CL_KERNEL_ARG_TYPE_CONST"></a><a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>CONST</code></a>
+        <sup class="footnote">[<a id="_footnoteref_28" class="footnote" href="#_footnotedef_28" title="View footnote.">28</a>]</sup>
+        <sup class="footnote">[<a id="_footnoteref_29" class="footnote" href="#_footnotedef_29" title="View footnote.">29</a>]</sup><br>
+        <a id="CL_KERNEL_ARG_TYPE_RESTRICT"></a><a href="#CL_KERNEL_ARG_TYPE_RESTRICT"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>RESTRICT</code></a><br>
+        <a id="CL_KERNEL_ARG_TYPE_VOLATILE"></a><a href="#CL_KERNEL_ARG_TYPE_VOLATILE"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>VOLATILE</code></a><br>
+        <a id="CL_KERNEL_ARG_TYPE_PIPE"></a><a href="#CL_KERNEL_ARG_TYPE_PIPE"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>PIPE</code></a>, or<br>
+        <a id="CL_KERNEL_ARG_TYPE_NONE"></a><a href="#CL_KERNEL_ARG_TYPE_NONE"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>NONE</code></a></p>
+<p class="tableblock">        <a href="#CL_KERNEL_ARG_TYPE_NONE"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>NONE</code></a> is returned for all parameters passed by
         value.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_NAME"></a><a href="#CL_KERNEL_ARG_NAME"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;NAME</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_NAME"></a><a href="#CL_KERNEL_ARG_NAME"><code>CL_KERNEL_<wbr>ARG_<wbr>NAME</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the name specified for the argument given by <em>arg_indx</em>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>char</code>[]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the name specified for the argument given by <em>arg_index</em>.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">17</dt>
-<dd>
-<p><a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;CONST</code></a> is returned for
-<a href="#CL_KERNEL_ARG_TYPE_QUALIFIER"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;QUALIFIER</code></a> if the argument is declared with the
-<code>constant</code> address space qualifier.</p>
-</dd>
-<dt class="hdlist1">18</dt>
-<dd>
-<p><a href="#CL_KERNEL_ARG_TYPE_VOLATILE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;VOLATILE</code></a> is returned for
-<a href="#CL_KERNEL_ARG_TYPE_QUALIFIER"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;QUALIFIER</code></a> if the argument is a pointer and the
-referenced type is declared with the volatile qualifier.
-For example, a kernel argument declared as <code>global int volatile *x</code>
-returns <a href="#CL_KERNEL_ARG_TYPE_VOLATILE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;VOLATILE</code></a> but a kernel argument declared
-as <code>global int * volatile x</code> does not.
-Similarly, <a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;CONST</code></a> is returned if the argument is a
-pointer and the referenced type is declared with the restrict or
-const qualifier.
-For example, a kernel argument declared as <code>global int const *x</code>
-returns <a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;CONST</code></a> but a kernel argument declared as
-<code>global int * const x</code> does not.
-<a href="#CL_KERNEL_ARG_TYPE_RESTRICT"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;RESTRICT</code></a> will be returned if the pointer type is
-marked <code>restrict</code>.
-For example, <code>global int * restrict x</code> returns
-<a href="#CL_KERNEL_ARG_TYPE_RESTRICT"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;TYPE_&#8203;RESTRICT</code></a>.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
 <p><a href="#clGetKernelArgInfo"><strong>clGetKernelArgInfo</strong></a> returns CL SUCCESS if the function is executed
 successfully.
@@ -20639,20 +20445,20 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_ARG_INDEX"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;INDEX</code></a> if <em>arg_indx</em> is not a valid argument index.</p>
+<p><a href="#CL_INVALID_ARG_INDEX"><code>CL_INVALID_<wbr>ARG_<wbr>INDEX</code></a> if <em>arg_index</em> is not a valid argument index.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value</em> size is &lt; size of return type as described in
 the <a href="#kernel-argument-info-table">Kernel Argument Queries</a> table and
 <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_KERNEL_ARG_INFO_NOT_AVAILABLE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;INFO_&#8203;NOT_&#8203;AVAILABLE</code></a> if the argument information is not
+<p><a href="#CL_KERNEL_ARG_INFO_NOT_AVAILABLE"><code>CL_KERNEL_<wbr>ARG_<wbr>INFO_<wbr>NOT_<wbr>AVAILABLE</code></a> if the argument information is not
 available for kernel.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is a not a valid kernel object.</p>
 </li>
 </ul>
 </div>
@@ -20661,7 +20467,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_executing_kernels">5.10. Executing Kernels</h3>
+<h3 id="_executing_kernels"><a class="anchor" href="#_executing_kernels"></a>5.10. Executing Kernels</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -20697,7 +20503,7 @@
 <p><em>work_dim</em> is the number of dimensions used to specify the global work-items
 and work-items in the work-group.
 <em>work_dim</em> must be greater than zero and less than or equal to
-<a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;DIMENSIONS</code></a>.
+<a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>DIMENSIONS</code></a>.
 If <em>global_work_size</em> is <code>NULL</code>, or the value in any passed dimension is 0
 then the kernel command will trivially succeed after its event dependencies
 are satisfied and subsequently update its completion event.
@@ -20709,7 +20515,8 @@
 <p><em>global_work_offset</em> can be used to specify an array of <em>work_dim</em> unsigned
 values that describe the offset used to calculate the global ID of a
 work-item.
-If <em>global_work_offset</em> is <code>NULL</code>, the global IDs start at offset (0, 0, 0).</p>
+If <em>global_work_offset</em> is <code>NULL</code>, the global IDs start at offset (0, 0, 0).
+<em>global_work_offset</em> must be <code>NULL</code> <a href="#unified-spec">before</a> version 1.1.</p>
 </li>
 <li>
 <p><em>global_work_size</em> points to an array of <em>work_dim</em> unsigned values that
@@ -20726,12 +20533,12 @@
 The total number of work-items in a work-group is computed as
 <em>local_work_size</em>[0] × &#8230;&#8203; × <em>local_work_size</em>[<em>work_dim</em> - 1].
 The total number of work-items in the work-group must be less than or equal
-to the <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_&#8203;KERNEL_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> value specified in the
+to the <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_KERNEL_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> value specified in the
 <a href="#kernel-workgroup-info-table">Kernel Object Device Queries</a> table, and the
 number of work-items specified in <em>local_work_size</em>[0], &#8230;&#8203;,
 <em>local_work_size</em>[<em>work_dim</em> - 1] must be less than or equal to the
-corresponding values specified by <a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;SIZES</code></a>[0], &#8230;&#8203;,
-<a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;SIZES</code></a>[<em>work_dim</em> - 1].
+corresponding values specified by <a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>SIZES</code></a>[0], &#8230;&#8203;,
+<a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>SIZES</code></a>[<em>work_dim</em> - 1].
 The explicitly specified <em>local_work_size</em> will be used to determine how to
 break the global work-items specified by <em>global_work_size</em> into appropriate
 work-group instances.</p>
@@ -20752,16 +20559,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular
-kernel-instance.
-Event objects are unique and can be used to identify a particular
-kernel-instance later on.
-If <em>event</em> is <code>NULL</code>, no event will be created for this kernel-instance and
-therefore it will not be possible for the application to query or queue a
-wait for this particular kernel-instance.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -20783,7 +20587,7 @@
 <p>If the program was created with <a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a>, the program must be compiled or built using the <code>-cl-std=CL2.0</code> or <code>-cl-std=CL3.0</code> build option and without the <code>-cl-uniform-work-group-size</code> build option.</p>
 </li>
 <li>
-<p>If the program was created with <a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a> or {clCreateProgramWithBinaries}, the program must be compiled or built without the <code>-cl-uniform-work-group-size</code> build options.</p>
+<p>If the program was created with <a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a> or <a href="#clCreateProgramWithBinary"><strong>clCreateProgramWithBinary</strong></a>, the program must be compiled or built without the <code>-cl-uniform-work-group-size</code> build options.</p>
 </li>
 <li>
 <p>If the program was created using <a href="#clLinkProgram"><strong>clLinkProgram</strong></a>, all input programs must support non-uniform work-groups.</p>
@@ -20837,141 +20641,142 @@
 The starting local ID is always (0, 0, &#8230;&#8203;, 0).</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the kernel-instance was
+<p><a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the kernel-instance was
 successfully queued.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_&#8203;INVALID_&#8203;PROGRAM_&#8203;EXECUTABLE</code></a> if there is no successfully built program
+<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_INVALID_<wbr>PROGRAM_<wbr>EXECUTABLE</code></a> if there is no successfully built program
 executable available for device associated with <em>command_queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and
 <em>kernel</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL_ARGS"><code>CL_&#8203;INVALID_&#8203;KERNEL_&#8203;ARGS</code></a> if the kernel argument values have not been
+<p><a href="#CL_INVALID_KERNEL_ARGS"><code>CL_INVALID_<wbr>KERNEL_<wbr>ARGS</code></a> if the kernel argument values have not been
 specified or if a kernel argument declared to be a pointer to a type
 does not point to a named address space.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_DIMENSION"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;DIMENSION</code></a> if <em>work_dim</em> is not a valid value (i.e. a
-value between 1 and <a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;DIMENSIONS</code></a>).</p>
+<p><a href="#CL_INVALID_WORK_DIMENSION"><code>CL_INVALID_<wbr>WORK_<wbr>DIMENSION</code></a> if <em>work_dim</em> is not a valid value (i.e. a
+value between 1 and <a href="#CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>DIMENSIONS</code></a>).</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_GLOBAL_WORK_SIZE"><code>CL_&#8203;INVALID_&#8203;GLOBAL_&#8203;WORK_&#8203;SIZE</code></a> if <em>global_work_size</em> is NULL or if any of
+<p><a href="#CL_INVALID_GLOBAL_WORK_SIZE"><code>CL_INVALID_<wbr>GLOBAL_<wbr>WORK_<wbr>SIZE</code></a> if <em>global_work_size</em> is NULL or if any of
 the values specified in <em>global_work_size</em>[0], &#8230;&#8203;
 <em>global_work_size</em>[<em>work_dim</em> - 1] are 0.
 Returning this error code under these circumstances is  <a href="#unified-spec">deprecated by</a> version 2.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_GLOBAL_WORK_SIZE"><code>CL_&#8203;INVALID_&#8203;GLOBAL_&#8203;WORK_&#8203;SIZE</code></a> if any of the values specified in
+<p><a href="#CL_INVALID_GLOBAL_WORK_SIZE"><code>CL_INVALID_<wbr>GLOBAL_<wbr>WORK_<wbr>SIZE</code></a> if any of the values specified in
 <em>global_work_size</em>[0], &#8230;&#8203; <em>global_work_size</em>[<em>work_dim</em> - 1] exceed the
-maximum value representable by size_t on the device on which the
+maximum value representable by <code>size_t</code> on the device on which the
 kernel-instance will be enqueued.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_GLOBAL_OFFSET"><code>CL_&#8203;INVALID_&#8203;GLOBAL_&#8203;OFFSET</code></a> if the value specified in <em>global_work_size</em>
+<p><a href="#CL_INVALID_GLOBAL_OFFSET"><code>CL_INVALID_<wbr>GLOBAL_<wbr>OFFSET</code></a> if the value specified in <em>global_work_size</em>
 +  the corresponding values in <em>global_work_offset</em> for any
 dimensions is greater than the maximum value representable by size t on
-the device on which the kernel-instance will be enqueued.</p>
+the device on which the kernel-instance will be enqueued, or if
+<em>global_work_offset</em> is non-<code>NULL</code> <a href="#unified-spec">before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> if <em>local_work_size</em> is specified and does
+<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> if <em>local_work_size</em> is specified and does
 not match the required work-group size for <em>kernel</em> in the program
 source.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> if <em>local_work_size</em> is specified and is not
+<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> if <em>local_work_size</em> is specified and is not
 consistent with the required number of sub-groups for <em>kernel</em> in the
 program source.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> if <em>local_work_size</em> is specified and the
+<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> if <em>local_work_size</em> is specified and the
 total number of work-items in the work-group computed as
 <em>local_work_size</em>[0] × &#8230;&#8203; <em>local_work_size</em>[<em>work_dim</em> - 1] is
-greater than the value specified by <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_&#8203;KERNEL_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> in the
+greater than the value specified by <a href="#CL_KERNEL_WORK_GROUP_SIZE"><code>CL_KERNEL_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> in the
 <a href="#kernel-workgroup-info-table">Kernel Object Device Queries</a> table.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> if the work-group size must be uniform and
+<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> if the work-group size must be uniform and
 the <em>local_work_size</em> is not <code>NULL</code>, is not equal to the required
 work-group size specified in the kernel source, or the
 <em>global_work_size</em> is not evenly divisible by the <em>local_work_size</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_ITEM_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;ITEM_&#8203;SIZE</code></a> if the number of work-items specified in any
+<p><a href="#CL_INVALID_WORK_ITEM_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>ITEM_<wbr>SIZE</code></a> if the number of work-items specified in any
 of <em>local_work_size</em>[0], &#8230;&#8203; <em>local_work_size</em>[<em>work_dim</em> - 1] is
 greater than the corresponding values specified by
-<a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;SIZES</code></a>[0], &#8230;&#8203;,
-<a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WORK_&#8203;ITEM_&#8203;SIZES</code></a>[<em>work_dim</em> - 1].</p>
+<a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>SIZES</code></a>[0], &#8230;&#8203;,
+<a href="#CL_DEVICE_MAX_WORK_ITEM_SIZES"><code>CL_DEVICE_<wbr>MAX_<wbr>WORK_<wbr>ITEM_<wbr>SIZES</code></a>[<em>work_dim</em> - 1].</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if a sub-buffer object is specified as
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if a sub-buffer object is specified as
 the value for an argument that is a buffer object and the <em>offset</em>
 specified when the sub-buffer object is created is not aligned to
-<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated with <em>queue</em>.
+<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if an image object is specified as an argument
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if an image object is specified as an argument
 value and the image dimensions (image width, height, specified or
 compute row and/or slice pitch) are not supported by device associated
 with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if an image object is specified as an
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if an image object is specified as an
 argument value and the image format (image channel order and data type)
 is not supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to queue the execution
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to queue the execution
 instance of <em>kernel</em> on the command-queue because of insufficient
 resources needed to execute the kernel.
 For example, the explicitly specified <em>local_work_size</em> causes a failure
 to execute the kernel because of insufficient resources such as
 registers or local memory.
 Another example would be the number of read-only image args used in
-<em>kernel</em> exceed the <a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;IMAGE_&#8203;ARGS</code></a> value for device or
+<em>kernel</em> exceed the <a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>IMAGE_<wbr>ARGS</code></a> value for device or
 the number of write-only and read-write image args used in <em>kernel</em>
-exceed the <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a> value for device or the
-number of samplers used in <em>kernel</em> exceed <a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;SAMPLERS</code></a> for
+exceed the <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a> value for device or the
+number of samplers used in <em>kernel</em> exceed <a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_DEVICE_<wbr>MAX_<wbr>SAMPLERS</code></a> for
 device.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with image or buffer objects specified
 as arguments to <em>kernel</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if SVM pointers are passed as arguments to a kernel
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if SVM pointers are passed as arguments to a kernel
 and the device does not support SVM or if system pointers are passed as
 arguments to a kernel and/or stored inside SVM allocations passed as
 kernel arguments and the device does not support fine grain system SVM
 allocations.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -21034,16 +20839,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular
-kernel-instance.
-Event objects are unique and can be used to identify a particular
-kernel-instance later on.
-If <em>event</em> is <code>NULL</code>, no event will be created for this kernel-instance and
-therefore it will not be possible for the application to query or queue a
-wait for this particular kernel-instance.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -21053,90 +20855,90 @@
 set to 1, and <em>local_work_size[0]</em> set to 1.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueTask"><strong>clEnqueueTask</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the kernel-instance was successfully
+<p><a href="#clEnqueueTask"><strong>clEnqueueTask</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the kernel-instance was successfully
 queued.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_&#8203;INVALID_&#8203;PROGRAM_&#8203;EXECUTABLE</code></a> if there is no successfully built program
+<p><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_INVALID_<wbr>PROGRAM_<wbr>EXECUTABLE</code></a> if there is no successfully built program
 executable available for device associated with <em>command_queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
+<p><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a> if <em>kernel</em> is not a valid kernel object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and
 <em>kernel</em> are not the same or if the context associated with
 <em>command_queue</em> and events in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_KERNEL_ARGS"><code>CL_&#8203;INVALID_&#8203;KERNEL_&#8203;ARGS</code></a> if the kernel argument values have not been
+<p><a href="#CL_INVALID_KERNEL_ARGS"><code>CL_INVALID_<wbr>KERNEL_<wbr>ARGS</code></a> if the kernel argument values have not been
 specified or if a kernel argument declared to be a pointer to a type
 does not point to a named address space.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> if a work-group size is specified for <em>kernel</em>
+<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> if a work-group size is specified for <em>kernel</em>
 in the program source and it is not (1, 1, 1).</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a> if the required number of sub-groups is
+<p><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a> if the required number of sub-groups is
 specified for <em>kernel</em> in the program source and is not consistent with a
 work-group size of (1, 1, 1).</p>
 </li>
 <li>
-<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a> if a sub-buffer object is specified as
+<p><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a> if a sub-buffer object is specified as
 the value for an argument that is a buffer object and the <em>offset</em>
 specified when the sub-buffer object is created is not aligned to
-<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> value for device associated with <em>queue</em>.
+<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> value for device associated with <em>queue</em>.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a> if an image object is specified as an argument
+<p><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a> if an image object is specified as an argument
 value and the image dimensions (image width, height, specified or
 compute row and/or slice pitch) are not supported by device associated
 with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a> if an image object is specified as an
+<p><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a> if an image object is specified as an
 argument value and the image format (image channel order and data type)
 is not supported by device associated with <em>queue</em>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to queue the execution
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to queue the execution
 instance of <em>kernel</em> on the command-queue because of insufficient
 resources needed to execute the kernel.  See how this error code is used
 with <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> for examples.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with image or buffer objects specified
 as arguments to <em>kernel</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if SVM pointers are passed as arguments to a kernel
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if SVM pointers are passed as arguments to a kernel
 and the device does not support SVM or if system pointers are passed as
 arguments to a kernel and/or stored inside SVM allocations passed as
 kernel arguments and the device does not support fine grain system SVM
 allocations.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -21169,8 +20971,8 @@
 <li>
 <p><em>command_queue</em> is a valid host command-queue.
 A native user function can only be executed on a command-queue created on a
-device that has <a href="#CL_EXEC_NATIVE_KERNEL"><code>CL_&#8203;EXEC_&#8203;NATIVE_&#8203;KERNEL</code></a> capability set in
-<a href="#CL_DEVICE_EXECUTION_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;EXECUTION_&#8203;CAPABILITIES</code></a> as specified in the
+device that has <a href="#CL_EXEC_NATIVE_KERNEL"><code>CL_EXEC_<wbr>NATIVE_<wbr>KERNEL</code></a> capability set in
+<a href="#CL_DEVICE_EXECUTION_CAPABILITIES"><code>CL_DEVICE_<wbr>EXECUTION_<wbr>CAPABILITIES</code></a> as specified in the
 <a href="#device-queries-table">Device Queries</a> table.</p>
 </li>
 <li>
@@ -21188,12 +20990,12 @@
 <li>
 <p><em>mem_list</em> is a list of valid buffer objects, if <em>num_mem_objects</em> &gt; 0.
 The buffer object values specified in <em>mem_list</em> are memory object handles
-(<code>cl_mem</code> values) returned by <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a>,
+(<code><code>cl_mem</code></code> values) returned by <a href="#clCreateBuffer"><strong>clCreateBuffer</strong></a> or <a href="#clCreateBufferWithProperties"><strong>clCreateBufferWithProperties</strong></a>,
 or <code>NULL</code>.</p>
 </li>
 <li>
 <p><em>args_mem_loc</em> is a pointer to appropriate locations that <em>args</em> points to
-where memory object handles (cl_mem values) are stored.
+where memory object handles (<code>cl_mem</code> values) are stored.
 Before the user function is executed, the memory object handles are replaced
 by pointers to global memory.</p>
 </li>
@@ -21206,82 +21008,82 @@
 <div class="paragraph">
 <p>The data pointed to by <em>args</em> and <em>cb_args</em> bytes in size will be copied and
 a pointer to this copied region will be passed to <em>user_func</em>.
-The copy needs to be done because the memory objects (cl_mem values) that
+The copy needs to be done because the memory objects (<code>cl_mem</code> values) that
 <em>args</em> may contain need to be modified and replaced by appropriate pointers
 to global memory.
 When <a href="#clEnqueueNativeKernel"><strong>clEnqueueNativeKernel</strong></a> returns, the memory region pointed to by <em>args</em>
 can be reused by the application.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueNativeKernel"><strong>clEnqueueNativeKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the user function execution
+<p><a href="#clEnqueueNativeKernel"><strong>clEnqueueNativeKernel</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the user function execution
 instance was successfully queued.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and events
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and events
 in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>user_func</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>user_func</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>args</em> is a <code>NULL</code> value and <em>cb_args</em> &gt; 0, or if
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>args</em> is a <code>NULL</code> value and <em>cb_args</em> &gt; 0, or if
 <em>args</em> is a <code>NULL</code> value and <em>num_mem_objects</em> &gt; 0.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>args</em> is not <code>NULL</code> and <em>cb_args</em> is 0.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>args</em> is not <code>NULL</code> and <em>cb_args</em> is 0.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_mem_objects</em> &gt; 0 and <em>mem_list</em> or
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_mem_objects</em> &gt; 0 and <em>mem_list</em> or
 <em>args_mem_loc</em> are <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_mem_objects</em> = 0 and <em>mem_list</em> or
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_mem_objects</em> = 0 and <em>mem_list</em> or
 <em>args_mem_loc</em> are not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command_queue</em>
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command_queue</em>
 cannot execute the native kernel.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> if one or more memory objects specified in
+<p><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> if one or more memory objects specified in
 <em>mem_list</em> are not valid or are not buffer objects.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to queue the execution
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to queue the execution
 instance of <em>kernel</em> on the command-queue because of insufficient
 resources needed to execute the kernel.</p>
 </li>
 <li>
-<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a> if there is a failure to allocate
+<p><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a> if there is a failure to allocate
 memory for data store associated with buffer objects specified as
 arguments to <em>kernel</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if SVM pointers are passed as arguments to a kernel
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if SVM pointers are passed as arguments to a kernel
 and the device does not support SVM or if system pointers are passed as
 arguments to a kernel and/or stored inside SVM allocations passed as
 kernel arguments and the device does not support fine grain system SVM
 allocations.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -21295,17 +21097,17 @@
 <td class="content">
 <div class="paragraph">
 <p>The total number of read-only images specified as arguments to a kernel
-cannot exceed <a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;IMAGE_&#8203;ARGS</code></a>.
+cannot exceed <a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>IMAGE_<wbr>ARGS</code></a>.
 Each image array argument to a kernel declared with the <code>read_only</code>
 qualifier counts as one image.
 The total number of write-only images specified as arguments to a kernel
-cannot exceed <a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a>.
+cannot exceed <a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a>.
 Each image array argument to a kernel declared with the <code>write_only</code>
 qualifier counts as one image.</p>
 </div>
 <div class="paragraph">
 <p>The total number of read-write images specified as arguments to a kernel
-cannot exceed <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a>.
+cannot exceed <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a>.
 Each image array argument to a kernel declared with the <code>read_write</code>
 qualifier counts as one image.</p>
 </div>
@@ -21317,7 +21119,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="event-objects">5.11. Event Objects</h3>
+<h3 id="event-objects"><a class="anchor" href="#event-objects"></a>5.11. Event Objects</h3>
 <div class="paragraph">
 <p>Event objects can be used to refer to a kernel-instance command
 (<a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>, <a href="#clEnqueueTask"><strong>clEnqueueTask</strong></a>, <a href="#clEnqueueNativeKernel"><strong>clEnqueueNativeKernel</strong></a>), read,
@@ -21350,25 +21152,25 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a id="CL_QUEUED"></a><a href="#CL_QUEUED"><code>CL_&#8203;QUEUED</code></a> This indicates that the command has been enqueued in a
+<p><a id="CL_QUEUED"></a><a href="#CL_QUEUED"><code>CL_QUEUED</code></a> This indicates that the command has been enqueued in a
 command-queue.
 This is the initial state of all events except user events.</p>
 </li>
 <li>
-<p><a id="CL_SUBMITTED"></a><a href="#CL_SUBMITTED"><code>CL_&#8203;SUBMITTED</code></a> This is the initial state for all user events.
+<p><a id="CL_SUBMITTED"></a><a href="#CL_SUBMITTED"><code>CL_SUBMITTED</code></a> This is the initial state for all user events.
 For all other events, this indicates that the command has been submitted
 by the host to the device.</p>
 </li>
 <li>
-<p><a id="CL_RUNNING"></a><a href="#CL_RUNNING"><code>CL_&#8203;RUNNING</code></a> This indicates that the device has started executing this
+<p><a id="CL_RUNNING"></a><a href="#CL_RUNNING"><code>CL_RUNNING</code></a> This indicates that the device has started executing this
 command.
 In order for the execution status of an enqueued command to change from
-<a href="#CL_SUBMITTED"><code>CL_&#8203;SUBMITTED</code></a> to <a href="#CL_RUNNING"><code>CL_&#8203;RUNNING</code></a>, all events that this command is waiting on
+<a href="#CL_SUBMITTED"><code>CL_SUBMITTED</code></a> to <a href="#CL_RUNNING"><code>CL_RUNNING</code></a>, all events that this command is waiting on
 must have completed successfully i.e. their execution status must be
-<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </li>
 <li>
-<p><a id="CL_COMPLETE"></a><a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> This indicates that the command has successfully completed.</p>
+<p><a id="CL_COMPLETE"></a><a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> This indicates that the command has successfully completed.</p>
 </li>
 <li>
 <p>Error code The error code is a negative integer value and indicates that
@@ -21387,7 +21189,7 @@
 <td class="content">
 <div class="paragraph">
 <p>A command is considered to be complete if its execution status is
-<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or is a negative integer value.</p>
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or is a negative integer value.</p>
 </div>
 <div class="paragraph">
 <p>If the execution of a command is terminated, the command-queue associated
@@ -21444,28 +21246,28 @@
 </div>
 <div class="paragraph">
 <p><a href="#clCreateUserEvent"><strong>clCreateUserEvent</strong></a> returns a valid non-zero event object and <em>errcode_ret</em>
-is set to <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the user event object is created successfully.
+is set to <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the user event object is created successfully.
 Otherwise, it returns a <code>NULL</code> value with one of the following error values
 returned in <em>errcode_ret</em>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if <em>context</em> is not a valid context.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
 <p>The execution status of the user event object created is set to
-<a href="#CL_SUBMITTED"><code>CL_&#8203;SUBMITTED</code></a>.</p>
+<a href="#CL_SUBMITTED"><code>CL_SUBMITTED</code></a>.</p>
 </div>
 </div>
 </div>
@@ -21500,7 +21302,7 @@
 </li>
 <li>
 <p><em>execution_status</em> specifies the new execution status to be set and can be
-<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or a negative integer value to indicate an error.
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or a negative integer value to indicate an error.
 A negative integer value causes all enqueued commands that wait on this user
 event to be terminated.
 <a href="#clSetUserEventStatus"><strong>clSetUserEventStatus</strong></a> can only be called once to change the execution
@@ -21552,29 +21354,29 @@
 </table>
 </div>
 <div class="paragraph">
-<p><a href="#clSetUserEventStatus"><strong>clSetUserEventStatus</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function was executed
+<p><a href="#clSetUserEventStatus"><strong>clSetUserEventStatus</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function was executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a> if <em>event</em> is not a valid user event object.</p>
+<p><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a> if <em>event</em> is not a valid user event object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if the <em>execution_status</em> is not <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or a
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if the <em>execution_status</em> is not <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or a
 negative integer value.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the <em>execution_status</em> for <em>event</em> has already
+<p><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the <em>execution_status</em> for <em>event</em> has already
 been changed by a previous call to <a href="#clSetUserEventStatus"><strong>clSetUserEventStatus</strong></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -21606,39 +21408,39 @@
 <div class="paragraph">
 <p>This function waits on the host thread for commands identified by event
 objects in <em>event_list</em> to complete.
-A command is considered complete if its execution status is <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or a
+A command is considered complete if its execution status is <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or a
 negative value.
 The events specified in <em>event_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the execution status of all events
-in <em>event_list</em> is <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.
+<p><a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the execution status of all events
+in <em>event_list</em> is <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_events</em> is zero or <em>event_list</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_events</em> is zero or <em>event_list</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if events specified in <em>event_list</em> do not belong to
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if events specified in <em>event_list</em> do not belong to
 the same context.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a> if event objects specified in <em>event_list</em> are not
+<p><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a> if event objects specified in <em>event_list</em> are not
 valid event objects.</p>
 </li>
 <li>
-<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a> if the execution status of
+<p><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a> if the execution status of
 any of the events in <em>event_list</em> is a negative integer value.
 This error code is <a href="#unified-spec">missing before</a> version 1.1.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -21698,79 +21500,40 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_event_info</strong></th>
+<th class="tableblock halign-left valign-top">Event Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_COMMAND_QUEUE"></a><a href="#CL_EVENT_COMMAND_QUEUE"><code>CL_&#8203;EVENT_&#8203;COMMAND_&#8203;QUEUE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_COMMAND_QUEUE"></a><a href="#CL_EVENT_COMMAND_QUEUE"><code>CL_EVENT_<wbr>COMMAND_<wbr>QUEUE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>queue</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the command-queue associated with <em>event</em>.
         For user event objects, a <code>NULL</code> value is returned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_CONTEXT"></a><a href="#CL_EVENT_CONTEXT"><code>CL_&#8203;EVENT_&#8203;CONTEXT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_CONTEXT"></a><a href="#CL_EVENT_CONTEXT"><code>CL_EVENT_<wbr>CONTEXT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_context</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the context associated with <em>event</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_COMMAND_TYPE"></a><a href="#CL_EVENT_COMMAND_TYPE"><code>CL_&#8203;EVENT_&#8203;COMMAND_&#8203;TYPE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_type</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Return the command type associated with <em>event</em>.
-        Can be one of the following values:</p>
-<p class="tableblock">        <a id="CL_COMMAND_NDRANGE_KERNEL"></a><a href="#CL_COMMAND_NDRANGE_KERNEL"><code>CL_&#8203;COMMAND_&#8203;NDRANGE_&#8203;KERNEL</code></a><br>
-        <a id="CL_COMMAND_TASK"></a><a href="#CL_COMMAND_TASK"><code>CL_&#8203;COMMAND_&#8203;TASK</code></a><br>
-        <a id="CL_COMMAND_NATIVE_KERNEL"></a><a href="#CL_COMMAND_NATIVE_KERNEL"><code>CL_&#8203;COMMAND_&#8203;NATIVE_&#8203;KERNEL</code></a><br>
-        <a id="CL_COMMAND_READ_BUFFER"></a><a href="#CL_COMMAND_READ_BUFFER"><code>CL_&#8203;COMMAND_&#8203;READ_&#8203;BUFFER</code></a><br>
-        <a id="CL_COMMAND_WRITE_BUFFER"></a><a href="#CL_COMMAND_WRITE_BUFFER"><code>CL_&#8203;COMMAND_&#8203;WRITE_&#8203;BUFFER</code></a><br>
-        <a id="CL_COMMAND_COPY_BUFFER"></a><a href="#CL_COMMAND_COPY_BUFFER"><code>CL_&#8203;COMMAND_&#8203;COPY_&#8203;BUFFER</code></a><br>
-        <a id="CL_COMMAND_READ_IMAGE"></a><a href="#CL_COMMAND_READ_IMAGE"><code>CL_&#8203;COMMAND_&#8203;READ_&#8203;IMAGE</code></a><br>
-        <a id="CL_COMMAND_WRITE_IMAGE"></a><a href="#CL_COMMAND_WRITE_IMAGE"><code>CL_&#8203;COMMAND_&#8203;WRITE_&#8203;IMAGE</code></a><br>
-        <a id="CL_COMMAND_COPY_IMAGE"></a><a href="#CL_COMMAND_COPY_IMAGE"><code>CL_&#8203;COMMAND_&#8203;COPY_&#8203;IMAGE</code></a><br>
-        <a id="CL_COMMAND_COPY_BUFFER_TO_IMAGE"></a><a href="#CL_COMMAND_COPY_BUFFER_TO_IMAGE"><code>CL_&#8203;COMMAND_&#8203;COPY_&#8203;BUFFER_&#8203;TO_&#8203;IMAGE</code></a><br>
-        <a id="CL_COMMAND_COPY_IMAGE_TO_BUFFER"></a><a href="#CL_COMMAND_COPY_IMAGE_TO_BUFFER"><code>CL_&#8203;COMMAND_&#8203;COPY_&#8203;IMAGE_&#8203;TO_&#8203;BUFFER</code></a><br>
-        <a id="CL_COMMAND_MAP_BUFFER"></a><a href="#CL_COMMAND_MAP_BUFFER"><code>CL_&#8203;COMMAND_&#8203;MAP_&#8203;BUFFER</code></a><br>
-        <a id="CL_COMMAND_MAP_IMAGE"></a><a href="#CL_COMMAND_MAP_IMAGE"><code>CL_&#8203;COMMAND_&#8203;MAP_&#8203;IMAGE</code></a><br>
-        <a id="CL_COMMAND_UNMAP_MEM_OBJECT"></a><a href="#CL_COMMAND_UNMAP_MEM_OBJECT"><code>CL_&#8203;COMMAND_&#8203;UNMAP_&#8203;MEM_&#8203;OBJECT</code></a><br>
-        <a id="CL_COMMAND_MARKER"></a><a href="#CL_COMMAND_MARKER"><code>CL_&#8203;COMMAND_&#8203;MARKER</code></a><br>
-        <a id="CL_COMMAND_ACQUIRE_GL_OBJECTS"></a><a href="#CL_COMMAND_ACQUIRE_GL_OBJECTS"><code>CL_&#8203;COMMAND_&#8203;ACQUIRE_&#8203;GL_&#8203;OBJECTS</code></a><br>
-        <a id="CL_COMMAND_RELEASE_GL_OBJECTS"></a><a href="#CL_COMMAND_RELEASE_GL_OBJECTS"><code>CL_&#8203;COMMAND_&#8203;RELEASE_&#8203;GL_&#8203;OBJECTS</code></a></p>
-<p class="tableblock">        These event command types are
-        <a href="#unified-spec">missing before</a> version 1.1:</p>
-<p class="tableblock">        <a id="CL_COMMAND_READ_BUFFER_RECT"></a><a href="#CL_COMMAND_READ_BUFFER_RECT"><code>CL_&#8203;COMMAND_&#8203;READ_&#8203;BUFFER_&#8203;RECT</code></a><br>
-        <a id="CL_COMMAND_WRITE_BUFFER_RECT"></a><a href="#CL_COMMAND_WRITE_BUFFER_RECT"><code>CL_&#8203;COMMAND_&#8203;WRITE_&#8203;BUFFER_&#8203;RECT</code></a><br>
-        <a id="CL_COMMAND_COPY_BUFFER_RECT"></a><a href="#CL_COMMAND_COPY_BUFFER_RECT"><code>CL_&#8203;COMMAND_&#8203;COPY_&#8203;BUFFER_&#8203;RECT</code></a><br>
-        <a id="CL_COMMAND_USER"></a><a href="#CL_COMMAND_USER"><code>CL_&#8203;COMMAND_&#8203;USER</code></a></p>
-<p class="tableblock">        These event command types are
-        <a href="#unified-spec">missing before</a> version 1.2:</p>
-<p class="tableblock">        <a id="CL_COMMAND_BARRIER"></a><a href="#CL_COMMAND_BARRIER"><code>CL_&#8203;COMMAND_&#8203;BARRIER</code></a><br>
-        <a id="CL_COMMAND_MIGRATE_MEM_OBJECTS"></a><a href="#CL_COMMAND_MIGRATE_MEM_OBJECTS"><code>CL_&#8203;COMMAND_&#8203;MIGRATE_&#8203;MEM_&#8203;OBJECTS</code></a><br>
-        <a id="CL_COMMAND_FILL_BUFFER"></a><a href="#CL_COMMAND_FILL_BUFFER"><code>CL_&#8203;COMMAND_&#8203;FILL_&#8203;BUFFER</code></a><br>
-        <a id="CL_COMMAND_FILL_IMAGE"></a><a href="#CL_COMMAND_FILL_IMAGE"><code>CL_&#8203;COMMAND_&#8203;FILL_&#8203;IMAGE</code></a></p>
-<p class="tableblock">        These event command types are
-        <a href="#unified-spec">missing before</a> version 2.0:</p>
-<p class="tableblock">        <a id="CL_COMMAND_SVM_FREE"></a><a href="#CL_COMMAND_SVM_FREE"><code>CL_&#8203;COMMAND_&#8203;SVM_&#8203;FREE</code></a><br>
-        <a id="CL_COMMAND_SVM_MEMCPY"></a><a href="#CL_COMMAND_SVM_MEMCPY"><code>CL_&#8203;COMMAND_&#8203;SVM_&#8203;MEMCPY</code></a><br>
-        <a id="CL_COMMAND_SVM_MEMFILL"></a><a href="#CL_COMMAND_SVM_MEMFILL"><code>CL_&#8203;COMMAND_&#8203;SVM_&#8203;MEMFILL</code></a><br>
-        <a id="CL_COMMAND_SVM_MAP"></a><a href="#CL_COMMAND_SVM_MAP"><code>CL_&#8203;COMMAND_&#8203;SVM_&#8203;MAP</code></a><br>
-        <a id="CL_COMMAND_SVM_UNMAP"></a><a href="#CL_COMMAND_SVM_UNMAP"><code>CL_&#8203;COMMAND_&#8203;SVM_&#8203;UNMAP</code></a></p>
-<p class="tableblock">        These event command types are
-        <a href="#unified-spec">missing before</a> version 3.0:</p>
-<p class="tableblock">        <a id="CL_COMMAND_SVM_MIGRATE_MEM"></a><a href="#CL_COMMAND_SVM_MIGRATE_MEM"><code>CL_&#8203;COMMAND_&#8203;SVM_&#8203;MIGRATE_&#8203;MEM</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_COMMAND_TYPE"></a><a href="#CL_EVENT_COMMAND_TYPE"><code>CL_EVENT_<wbr>COMMAND_<wbr>TYPE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_command_<wbr>type</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return the command type associated with <em>event</em> as described in the
+        <a href="#event-command-type-table">Event Command Types</a> table.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_COMMAND_EXECUTION_STATUS"></a><a href="#CL_EVENT_COMMAND_EXECUTION_STATUS"><code>CL_&#8203;EVENT_&#8203;COMMAND_&#8203;EXECUTION_&#8203;STATUS</code></a><sup>19</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_int</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_COMMAND_EXECUTION_STATUS"></a><a href="#CL_EVENT_COMMAND_EXECUTION_STATUS"><code>CL_EVENT_<wbr>COMMAND_<wbr>EXECUTION_<wbr>STATUS</code></a> <sup class="footnote">[<a id="_footnoteref_30" class="footnote" href="#_footnotedef_30" title="View footnote.">30</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_int</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the execution status of the command identified by event.
         Valid values are:</p>
-<p class="tableblock">        <a href="#CL_QUEUED"><code>CL_&#8203;QUEUED</code></a> (command has been enqueued in the command-queue),</p>
-<p class="tableblock">        <a href="#CL_SUBMITTED"><code>CL_&#8203;SUBMITTED</code></a> (enqueued command has been submitted by the host to the
+<p class="tableblock">        <a href="#CL_QUEUED"><code>CL_QUEUED</code></a> (command has been enqueued in the command-queue),</p>
+<p class="tableblock">        <a href="#CL_SUBMITTED"><code>CL_SUBMITTED</code></a> (enqueued command has been submitted by the host to the
         device associated with the command-queue),</p>
-<p class="tableblock">        <a href="#CL_RUNNING"><code>CL_&#8203;RUNNING</code></a> (device is currently executing this command),</p>
-<p class="tableblock">        <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> (the command has completed), or</p>
+<p class="tableblock">        <a href="#CL_RUNNING"><code>CL_RUNNING</code></a> (device is currently executing this command),</p>
+<p class="tableblock">        <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> (the command has completed), or</p>
 <p class="tableblock">        Error code given by a negative integer value. (command was
         abnormally terminated - this may be caused by a bad memory access
         etc.).
@@ -21779,63 +21542,195 @@
         errcode_ret values.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_REFERENCE_COUNT"></a><a href="#CL_EVENT_REFERENCE_COUNT"><code>CL_&#8203;EVENT_&#8203;REFERENCE_&#8203;COUNT</code></a><sup>20</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EVENT_REFERENCE_COUNT"></a><a href="#CL_EVENT_REFERENCE_COUNT"><code>CL_EVENT_<wbr>REFERENCE_<wbr>COUNT</code></a> <sup class="footnote">[<a id="_footnoteref_31" class="footnote" href="#_footnotedef_31" title="View footnote.">31</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the <em>event</em> reference count.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">19</dt>
-<dd>
-<p>The error code values are negative, and event state values are positive.
-The event state values are ordered from the largest value <a href="#CL_QUEUED"><code>CL_&#8203;QUEUED</code></a>
-for the first or initial state to the smallest value (<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or
-negative integer value) for the last or complete state.
-The value of <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> and <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> are the same.</p>
-</dd>
-<dt class="hdlist1">20</dt>
-<dd>
-<p>The reference count returned should be considered immediately stale.
-It is unsuitable for general use in applications.
-This feature is provided for identifying memory leaks.</p>
-</dd>
-</dl>
-</div>
+<table id="event-command-type-table" class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 37. List of supported event command types</caption>
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Events Created By</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Event Command Type</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_NDRANGE_KERNEL"></a><a href="#CL_COMMAND_NDRANGE_KERNEL"><code>CL_COMMAND_<wbr>NDRANGE_<wbr>KERNEL</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueTask"><strong>clEnqueueTask</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_TASK"></a><a href="#CL_COMMAND_TASK"><code>CL_COMMAND_<wbr>TASK</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueNativeKernel"><strong>clEnqueueNativeKernel</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_NATIVE_KERNEL"></a><a href="#CL_COMMAND_NATIVE_KERNEL"><code>CL_COMMAND_<wbr>NATIVE_<wbr>KERNEL</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_READ_BUFFER"></a><a href="#CL_COMMAND_READ_BUFFER"><code>CL_COMMAND_<wbr>READ_<wbr>BUFFER</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_WRITE_BUFFER"></a><a href="#CL_COMMAND_WRITE_BUFFER"><code>CL_COMMAND_<wbr>WRITE_<wbr>BUFFER</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueCopyBuffer"><strong>clEnqueueCopyBuffer</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_COPY_BUFFER"></a><a href="#CL_COMMAND_COPY_BUFFER"><code>CL_COMMAND_<wbr>COPY_<wbr>BUFFER</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_READ_IMAGE"></a><a href="#CL_COMMAND_READ_IMAGE"><code>CL_COMMAND_<wbr>READ_<wbr>IMAGE</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_WRITE_IMAGE"></a><a href="#CL_COMMAND_WRITE_IMAGE"><code>CL_COMMAND_<wbr>WRITE_<wbr>IMAGE</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueCopyImage"><strong>clEnqueueCopyImage</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_COPY_IMAGE"></a><a href="#CL_COMMAND_COPY_IMAGE"><code>CL_COMMAND_<wbr>COPY_<wbr>IMAGE</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueCopyBufferToImage"><strong>clEnqueueCopyBufferToImage</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_COPY_BUFFER_TO_IMAGE"></a><a href="#CL_COMMAND_COPY_BUFFER_TO_IMAGE"><code>CL_COMMAND_<wbr>COPY_<wbr>BUFFER_<wbr>TO_<wbr>IMAGE</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueCopyImageToBuffer"><strong>clEnqueueCopyImageToBuffer</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_COPY_IMAGE_TO_BUFFER"></a><a href="#CL_COMMAND_COPY_IMAGE_TO_BUFFER"><code>CL_COMMAND_<wbr>COPY_<wbr>IMAGE_<wbr>TO_<wbr>BUFFER</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_MAP_BUFFER"></a><a href="#CL_COMMAND_MAP_BUFFER"><code>CL_COMMAND_<wbr>MAP_<wbr>BUFFER</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_MAP_IMAGE"></a><a href="#CL_COMMAND_MAP_IMAGE"><code>CL_COMMAND_<wbr>MAP_<wbr>IMAGE</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueUnmapMemObject"><strong>clEnqueueUnmapMemObject</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_UNMAP_MEM_OBJECT"></a><a href="#CL_COMMAND_UNMAP_MEM_OBJECT"><code>CL_COMMAND_<wbr>UNMAP_<wbr>MEM_<wbr>OBJECT</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueMarker"><strong>clEnqueueMarker</strong></a>,<br>
+  <a href="#clEnqueueMarkerWithWaitList"><strong>clEnqueueMarkerWithWaitList</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_MARKER"></a><a href="#CL_COMMAND_MARKER"><code>CL_COMMAND_<wbr>MARKER</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_READ_BUFFER_RECT"></a><a href="#CL_COMMAND_READ_BUFFER_RECT"><code>CL_COMMAND_<wbr>READ_<wbr>BUFFER_<wbr>RECT</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_WRITE_BUFFER_RECT"></a><a href="#CL_COMMAND_WRITE_BUFFER_RECT"><code>CL_COMMAND_<wbr>WRITE_<wbr>BUFFER_<wbr>RECT</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueCopyBufferRect"><strong>clEnqueueCopyBufferRect</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_COPY_BUFFER_RECT"></a><a href="#CL_COMMAND_COPY_BUFFER_RECT"><code>CL_COMMAND_<wbr>COPY_<wbr>BUFFER_<wbr>RECT</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clCreateUserEvent"><strong>clCreateUserEvent</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_USER"></a><a href="#CL_COMMAND_USER"><code>CL_COMMAND_<wbr>USER</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueBarrier"><strong>clEnqueueBarrier</strong></a>,<br>
+  <a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_BARRIER"></a><a href="#CL_COMMAND_BARRIER"><code>CL_COMMAND_<wbr>BARRIER</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueMigrateMemObjects"><strong>clEnqueueMigrateMemObjects</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_MIGRATE_MEM_OBJECTS"></a><a href="#CL_COMMAND_MIGRATE_MEM_OBJECTS"><code>CL_COMMAND_<wbr>MIGRATE_<wbr>MEM_<wbr>OBJECTS</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueFillBuffer"><strong>clEnqueueFillBuffer</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_FILL_BUFFER"></a><a href="#CL_COMMAND_FILL_BUFFER"><code>CL_COMMAND_<wbr>FILL_<wbr>BUFFER</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueFillImage"><strong>clEnqueueFillImage</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_FILL_IMAGE"></a><a href="#CL_COMMAND_FILL_IMAGE"><code>CL_COMMAND_<wbr>FILL_<wbr>IMAGE</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueSVMFree"><strong>clEnqueueSVMFree</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_SVM_FREE"></a><a href="#CL_COMMAND_SVM_FREE"><code>CL_COMMAND_<wbr>SVM_<wbr>FREE</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_SVM_MEMCPY"></a><a href="#CL_COMMAND_SVM_MEMCPY"><code>CL_COMMAND_<wbr>SVM_<wbr>MEMCPY</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueSVMMemFill"><strong>clEnqueueSVMMemFill</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_SVM_MEMFILL"></a><a href="#CL_COMMAND_SVM_MEMFILL"><code>CL_COMMAND_<wbr>SVM_<wbr>MEMFILL</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_SVM_MAP"></a><a href="#CL_COMMAND_SVM_MAP"><code>CL_COMMAND_<wbr>SVM_<wbr>MAP</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_SVM_UNMAP"></a><a href="#CL_COMMAND_SVM_UNMAP"><code>CL_COMMAND_<wbr>SVM_<wbr>UNMAP</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMMAND_SVM_MIGRATE_MEM"></a><a href="#CL_COMMAND_SVM_MIGRATE_MEM"><code>CL_COMMAND_<wbr>SVM_<wbr>MIGRATE_<wbr>MEM</code></a></p>
+<p class="tableblock"><a href="#unified-spec">Missing before</a> version 3.0.</p>
+<p class="tableblock">Prior to OpenCL 3.0, implementations should return
+<a href="#CL_COMMAND_MIGRATE_MEM_OBJECTS"><code>CL_COMMAND_<wbr>MIGRATE_<wbr>MEM_<wbr>OBJECTS</code></a>, but may return an implementation-defined
+event command type for <a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a>.</p></td>
+</tr>
+</tbody>
+</table>
 <div class="paragraph">
 <p>Using <a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> to determine if a command identified by <em>event</em> has
-finished execution (i.e. <a href="#CL_EVENT_COMMAND_EXECUTION_STATUS"><code>CL_&#8203;EVENT_&#8203;COMMAND_&#8203;EXECUTION_&#8203;STATUS</code></a> returns
-<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>) is not a synchronization point.
+finished execution (i.e. <a href="#CL_EVENT_COMMAND_EXECUTION_STATUS"><code>CL_EVENT_<wbr>COMMAND_<wbr>EXECUTION_<wbr>STATUS</code></a> returns
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>) is not a synchronization point.
 There are no guarantees that the memory objects being modified by command
 associated with <em>event</em> will be visible to other enqueued commands.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#kernel-argument-info-table">Kernel Argument Queries</a> table and
 <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if information to query given in <em>param_name</em> cannot be
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if information to query given in <em>param_name</em> cannot be
 queried for <em>event</em>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a> if <em>event</em> is a not a valid event object.</p>
+<p><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a> if <em>event</em> is a not a valid event object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -21878,15 +21773,16 @@
 <p><em>command_exec_callback_type</em> specifies the command execution status for
 which the callback is registered.
 The command execution callback values for which a callback can be registered
-are: <a href="#CL_SUBMITTED"><code>CL_&#8203;SUBMITTED</code></a>, <a href="#CL_RUNNING"><code>CL_&#8203;RUNNING</code></a>, or <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a><sup>21</sup>.
+are: <a href="#CL_SUBMITTED"><code>CL_SUBMITTED</code></a>, <a href="#CL_RUNNING"><code>CL_RUNNING</code></a>, or
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> <sup class="footnote">[<a id="_footnoteref_32" class="footnote" href="#_footnotedef_32" title="View footnote.">32</a>]</sup>.
 There is no guarantee that the callback functions registered for various
 execution status values for an event will be called in the exact order that
 the execution status of a command changes.
 Furthermore, it should be noted that receiving a call back for an event with
-a status other than <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>, in no way implies that the memory model or
+a status other than <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>, in no way implies that the memory model or
 execution model as defined by the OpenCL specification has changed.
 For example, it is not valid to assume that a corresponding memory transfer
-has completed unless the event is in a state <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+has completed unless the event is in a state <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </li>
 <li>
 <p><em>pfn_event_notify</em> is the event callback function that can be registered by
@@ -21902,14 +21798,14 @@
 <p><em>event</em> is the event object for which the callback function is invoked.</p>
 </li>
 <li>
-<p><em>event_command_exec_status</em> is equal to the <em>command_exec_callback_type</em>
+<p><em>event_command_status</em> is equal to the <em>command_exec_callback_type</em>
 used while registering the callback.
-Refer to the <a href="#kernel-argument-info-table">Kernel Argument Queries</a>
+Refer to the <a href="#event-info-table">Event Object Queries</a>
 table for the command execution status values.
 If the callback is called as the result of the command associated with
 event being abnormally terminated, an appropriate error code for the
 error that caused the termination will be passed to
-<em>event_command_exec_status</em> instead.</p>
+<em>event_command_status</em> instead.</p>
 </li>
 <li>
 <p><em>user_data</em> is a pointer to user supplied data.</p>
@@ -21921,16 +21817,6 @@
 <p><em>user_data</em> will be passed as the <em>user_data</em> argument when <em>pfn_notify</em> is
 called.
 <em>user_data</em> can be <code>NULL</code>.</p>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">21</dt>
-<dd>
-<p>The callback function registered for a command_exec_callback_type value
-of <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> will be called when the command has completed
-successfully or is abnormally terminated.</p>
-</dd>
-</dl>
-</div>
 </li>
 </ul>
 </div>
@@ -21946,77 +21832,44 @@
 undefined.</p>
 </div>
 <div class="paragraph">
-<p>All callbacks registered for an event object must be called.
-All enqueued callbacks shall be called before the event object is destroyed.
-Callbacks must return promptly.
-The behavior of calling expensive system routines, OpenCL API calls to
-create contexts or command-queues, or blocking OpenCL operations from the
-following list below, in a callback is undefined.</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="#clFinish"><strong>clFinish</strong></a>,</p>
-</li>
-<li>
-<p><a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a>,</p>
-</li>
-<li>
-<p>blocking calls to <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a>, <a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a>,</p>
-</li>
-<li>
-<p><a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a>, <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a>,</p>
-</li>
-<li>
-<p>blocking calls to <a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> and <a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a>,</p>
-</li>
-<li>
-<p>blocking calls to <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a> and <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a>,</p>
-</li>
-<li>
-<p>blocking calls to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a>, <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> or
-<a href="#clLinkProgram"><strong>clLinkProgram</strong></a>,</p>
-</li>
-<li>
-<p>blocking calls to <a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a> or <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a></p>
-</li>
-</ul>
+<p>All callbacks registered for an event object must be called before the event
+object is destroyed.
+Callbacks should return promptly.</p>
 </div>
 <div class="paragraph">
-<p>If an application needs to wait for completion of a routine from the above
-list in a callback, please use the non-blocking form of the function, and
-assign a completion callback to it to do the remainder of your work.
-Note that when a callback (or other code) enqueues commands to a
-command-queue, the commands are not required to begin execution until the
-queue is flushed.
-In standard usage, blocking enqueue calls serve this role by implicitly
-flushing the queue.
-Since blocking calls are not permitted in callbacks, those callbacks that
-enqueue commands on a command queue should either call <a href="#clFlush"><strong>clFlush</strong></a> on the
-queue before returning or arrange for <a href="#clFlush"><strong>clFlush</strong></a> to be called later on
-another thread.</p>
+<p>Behavior is undefined when calling expensive system routines, OpenCL APIs to
+create contexts or command-queues, or blocking OpenCL APIs in an event callback.
+Rather than calling a blocking OpenCL API in an event callback, applications
+may call a non-blocking OpenCL API, then register a completion callback
+for the non-blocking OpenCL API with the remainder of the work.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clSetEventCallback"><strong>clSetEventCallback</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p>Because commands in a command-queue are not required to begin execution
+until the command-queue is flushed, callbacks that enqueue commands on a
+command-queue should either call <a href="#clFlush"><strong>clFlush</strong></a> on the queue before returning,
+or arrange for the command-queue to be flushed later.</p>
+</div>
+<div class="paragraph">
+<p><a href="#clSetEventCallback"><strong>clSetEventCallback</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a> if <em>event</em> is not a valid event object.</p>
+<p><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a> if <em>event</em> is not a valid event object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>pfn_event_notify</em> is <code>NULL</code> or if
-<em>command_exec_callback_type</em> is not <a href="#CL_SUBMITTED"><code>CL_&#8203;SUBMITTED</code></a>, <a href="#CL_RUNNING"><code>CL_&#8203;RUNNING</code></a>, or
-<a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>pfn_event_notify</em> is <code>NULL</code> or if
+<em>command_exec_callback_type</em> is not <a href="#CL_SUBMITTED"><code>CL_SUBMITTED</code></a>, <a href="#CL_RUNNING"><code>CL_RUNNING</code></a>, or
+<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22046,20 +21899,20 @@
 The OpenCL commands that return an event perform an implicit retain.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clRetainEvent"><strong>clRetainEvent</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed successfully.
+<p><a href="#clRetainEvent"><strong>clRetainEvent</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a> if <em>event</em> is not a valid event object.</p>
+<p><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a> if <em>event</em> is not a valid event object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22105,18 +21958,18 @@
 <div class="paragraph">
 <p>Developers should be careful when releasing their last reference count on
 events created by <a href="#clCreateUserEvent"><strong>clCreateUserEvent</strong></a> that have not yet been set to status
-of <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or an error.
+of <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or an error.
 If the user event was used in the event_wait_list argument passed to a
 <strong>clEnqueue*</strong> API or another application host thread is waiting for it in
 <a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a>, those commands and host threads will continue to wait for
-the event status to reach <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or error, even after the application
+the event status to reach <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or error, even after the application
 has released the object.
 Since in this scenario the application has released its last reference count
 to the user event, it would be in principle no longer valid for the
 application to change the status of the event to unblock all the other
 machinery.
 As a result the waiting tasks will wait forever, and associated events,
-cl_mem objects, command queues and contexts are likely to leak.
+<code>cl_mem</code> objects, command queues and contexts are likely to leak.
 In-order command queues caught up in this deadlock may cease to do any work.</p>
 </div>
 </td>
@@ -22124,21 +21977,21 @@
 </table>
 </div>
 <div class="paragraph">
-<p><a href="#clReleaseEvent"><strong>clReleaseEvent</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clReleaseEvent"><strong>clReleaseEvent</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a> if <em>event</em> is not a valid event object.</p>
+<p><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a> if <em>event</em> is not a valid event object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22147,7 +22000,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="markers-barriers-waiting-for-events">5.12. Markers, Barriers and Waiting for Events</h3>
+<h3 id="markers-barriers-waiting-for-events"><a class="anchor" href="#markers-barriers-waiting-for-events"></a>5.12. Markers, Barriers and Waiting for Events</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -22185,15 +22038,13 @@
 complete before this particular command can be executed.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command.
-Event objects are unique and can be used to identify this marker command
-later on.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -22222,32 +22073,32 @@
 <em>command_queue</em>, have completed.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueMarkerWithWaitList"><strong>clEnqueueMarkerWithWaitList</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is
+<p><a href="#clEnqueueMarkerWithWaitList"><strong>clEnqueueMarkerWithWaitList</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is
 successfully executed.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and events
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and events
 in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22285,15 +22136,13 @@
 <p><em>command_queue</em> is a valid host command-queue.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command.
-Event objects are unique and can be used to identify this marker command
-later on.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -22304,25 +22153,25 @@
 command to <em>command_queue</em>, have completed.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueMarker"><strong>clEnqueueMarker</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is successfully
+<p><a href="#clEnqueueMarker"><strong>clEnqueueMarker</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is successfully
 executed.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>event</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>event</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22373,29 +22222,29 @@
 function returns.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueWaitForEvents"><strong>clEnqueueWaitForEvents</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is successfully
+<p><a href="#clEnqueueWaitForEvents"><strong>clEnqueueWaitForEvents</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is successfully
 executed.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and events
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and events
 in <em>event_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>num_events</em> is 0 or <em>event_list</em> is <code>NULL</code>.</p>
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>num_events</em> is 0 or <em>event_list</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22450,15 +22299,13 @@
 the function returns.</p>
 </li>
 <li>
-<p><em>event</em> returns an event object that identifies this particular command.
-Event objects are unique and can be used to identify this barrier command
-later on.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </li>
 </ul>
 </div>
@@ -22478,32 +22325,32 @@
 <em>command_queue</em>, have completed.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is
+<p><a href="#clEnqueueBarrierWithWaitList"><strong>clEnqueueBarrierWithWaitList</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is
 successfully executed.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a> if context associated with <em>command_queue</em> and events
+<p><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a> if context associated with <em>command_queue</em> and events
 in <em>event_wait_list</em> are not the same.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
+<p><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a> if <em>event_wait_list</em> is <code>NULL</code> and
 <em>num_events_in_wait_list</em> &gt; 0, or <em>event_wait_list</em> is not <code>NULL</code> and
 <em>num_events_in_wait_list</em> is 0, or if event objects in <em>event_wait_list</em>
 are not valid events.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22549,22 +22396,22 @@
 The barrier command is a synchronization point.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clEnqueueBarrier"><strong>clEnqueueBarrier</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is successfully
+<p><a href="#clEnqueueBarrier"><strong>clEnqueueBarrier</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is successfully
 executed.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22573,7 +22420,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_out_of_order_execution_of_kernels_and_memory_object_commands">5.13. Out-of-order Execution of Kernels and Memory Object Commands</h3>
+<h3 id="_out_of_order_execution_of_kernels_and_memory_object_commands"><a class="anchor" href="#_out_of_order_execution_of_kernels_and_memory_object_commands"></a>5.13. Out-of-order Execution of Kernels and Memory Object Commands</h3>
 <div class="paragraph">
 <p>The OpenCL functions that are submitted to a command-queue are enqueued in
 the order the calls are made but can be configured to execute in-order or
@@ -22582,7 +22429,7 @@
 <a href="#clCreateCommandQueue"><strong>clCreateCommandQueue</strong></a> can be used to specify the execution order.</p>
 </div>
 <div class="paragraph">
-<p>If the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a> property of a command-queue is
+<p>If the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a> property of a command-queue is
 not set, the commands enqueued to a command-queue execute in order.
 For example, if an application calls <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> to execute
 kernel A followed by a <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> to execute kernel B, the
@@ -22591,13 +22438,13 @@
 If the memory objects output by kernel A are inputs to kernel B then kernel
 B will see the correct data in memory objects produced by execution of
 kernel A.
-If the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a> property of a command-queue is
+If the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a> property of a command-queue is
 set, then there is no guarantee that kernel A will finish before kernel B
 starts execution.</p>
 </div>
 <div class="paragraph">
 <p>Applications can configure the commands enqueued to a command-queue to
-execute out-of-order by setting the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a>
+execute out-of-order by setting the <a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a>
 property of the command-queue.
 This can be specified when the command-queue is created.
 In out-of-order execution mode there is no guarantee that the enqueued
@@ -22628,7 +22475,7 @@
 enqueued after <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>, <a href="#clEnqueueTask"><strong>clEnqueueTask</strong></a> or
 <a href="#clEnqueueNativeKernel"><strong>clEnqueueNativeKernel</strong></a> commands are not guaranteed to wait for kernels
 scheduled for execution to have completed (if the
-<a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_&#8203;QUEUE_&#8203;OUT_&#8203;OF_&#8203;ORDER_&#8203;EXEC_&#8203;MODE_&#8203;ENABLE</code></a> property is set).
+<a href="#CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"><code>CL_QUEUE_<wbr>OUT_<wbr>OF_<wbr>ORDER_<wbr>EXEC_<wbr>MODE_<wbr>ENABLE</code></a> property is set).
 To ensure correct ordering of commands, the event object returned by
 <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>, <a href="#clEnqueueTask"><strong>clEnqueueTask</strong></a> or <a href="#clEnqueueNativeKernel"><strong>clEnqueueNativeKernel</strong></a> can be
 used to enqueue a wait for event or a barrier command can be enqueued that must
@@ -22636,12 +22483,12 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="profiling-operations">5.14. Profiling Operations on Memory Objects and Kernels</h3>
+<h3 id="profiling-operations"><a class="anchor" href="#profiling-operations"></a>5.14. Profiling Operations on Memory Objects and Kernels</h3>
 <div class="paragraph">
 <p>This section describes the profiling of OpenCL functions that are enqueued
 as commands to a command-queue. Profiling of OpenCL commands can be enabled
-by using a command-queue created with the <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a>
-flag set in the <a href="#CL_QUEUE_PROPERTIES"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES</code></a> bitfield in the <em>properties</em> argument to
+by using a command-queue created with the <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a>
+flag set in the <a href="#CL_QUEUE_PROPERTIES"><code>CL_QUEUE_<wbr>PROPERTIES</code></a> bitfield in the <em>properties</em> argument to
 <a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a>, or in the <em>properties</em> argument to
 <a href="#clCreateCommandQueue"><strong>clCreateCommandQueue</strong></a>.
 When profiling is enabled, the event objects that are created from
@@ -22693,7 +22540,7 @@
 </ul>
 </div>
 <table id="event-profiling-info-table" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 37. List of supported param_names by <a href="#clGetEventProfilingInfo">clGetEventProfilingInfo</a></caption>
+<caption class="title">Table 38. List of supported param_names by <a href="#clGetEventProfilingInfo">clGetEventProfilingInfo</a></caption>
 <colgroup>
 <col style="width: 34%;">
 <col style="width: 33%;">
@@ -22701,45 +22548,45 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_profiling_info</strong></th>
+<th class="tableblock halign-left valign-top">Event Profiling Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Info. returned in <em>param_value</em></th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_QUEUED"></a><a href="#CL_PROFILING_COMMAND_QUEUED"><code>CL_&#8203;PROFILING_&#8203;COMMAND_&#8203;QUEUED</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_QUEUED"></a><a href="#CL_PROFILING_COMMAND_QUEUED"><code>CL_PROFILING_<wbr>COMMAND_<wbr>QUEUED</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 64-bit value that describes the current device time counter in
         nanoseconds when the command identified by event is enqueued in a
         command-queue by the host.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_SUBMIT"></a><a href="#CL_PROFILING_COMMAND_SUBMIT"><code>CL_&#8203;PROFILING_&#8203;COMMAND_&#8203;SUBMIT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_SUBMIT"></a><a href="#CL_PROFILING_COMMAND_SUBMIT"><code>CL_PROFILING_<wbr>COMMAND_<wbr>SUBMIT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 64-bit value that describes the current device time counter in
         nanoseconds when the command identified by event that has been
         enqueued is submitted by the host to the device associated with the
         command-queue.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_START"></a><a href="#CL_PROFILING_COMMAND_START"><code>CL_&#8203;PROFILING_&#8203;COMMAND_&#8203;START</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_START"></a><a href="#CL_PROFILING_COMMAND_START"><code>CL_PROFILING_<wbr>COMMAND_<wbr>START</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 64-bit value that describes the current device time counter in
         nanoseconds when the command identified by event starts execution on
         the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_END"></a><a href="#CL_PROFILING_COMMAND_END"><code>CL_&#8203;PROFILING_&#8203;COMMAND_&#8203;END</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_END"></a><a href="#CL_PROFILING_COMMAND_END"><code>CL_PROFILING_<wbr>COMMAND_<wbr>END</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 64-bit value that describes the current device time counter in
         nanoseconds when the command identified by event has finished
         execution on the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_COMPLETE"></a><a href="#CL_PROFILING_COMMAND_COMPLETE"><code>CL_&#8203;PROFILING_&#8203;COMMAND_&#8203;COMPLETE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_COMMAND_COMPLETE"></a><a href="#CL_PROFILING_COMMAND_COMPLETE"><code>CL_PROFILING_<wbr>COMMAND_<wbr>COMPLETE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 64-bit value that describes the current device time counter in
         nanoseconds when the command identified by event and any child
         commands enqueued by this command on the device have finished
@@ -22754,38 +22601,38 @@
 <div class="paragraph">
 <p>OpenCL devices are required to correctly track time across changes in device
 frequency and power states.
-The <a href="#CL_DEVICE_PROFILING_TIMER_RESOLUTION"><code>CL_&#8203;DEVICE_&#8203;PROFILING_&#8203;TIMER_&#8203;RESOLUTION</code></a> specifies the resolution of the
+The <a href="#CL_DEVICE_PROFILING_TIMER_RESOLUTION"><code>CL_DEVICE_<wbr>PROFILING_<wbr>TIMER_<wbr>RESOLUTION</code></a> specifies the resolution of the
 timer i.e. the number of nanoseconds elapsed before the timer is
 incremented.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clGetEventProfilingInfo"><strong>clGetEventProfilingInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function is executed
+<p><a href="#clGetEventProfilingInfo"><strong>clGetEventProfilingInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
 successfully and the profiling information has been recorded.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_PROFILING_INFO_NOT_AVAILABLE"><code>CL_&#8203;PROFILING_&#8203;INFO_&#8203;NOT_&#8203;AVAILABLE</code></a> if the <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a> flag is
+<p><a href="#CL_PROFILING_INFO_NOT_AVAILABLE"><code>CL_PROFILING_<wbr>INFO_<wbr>NOT_<wbr>AVAILABLE</code></a> if the <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a> flag is
 not set for the command-queue, if the execution status of the command
-identified by <em>event</em> is not <a href="#CL_COMPLETE"><code>CL_&#8203;COMPLETE</code></a> or if <em>event</em> is a user event
+identified by <em>event</em> is not <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or if <em>event</em> is a user event
 object.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
+<p><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#event-profiling-info-table">Event Profiling Queries</a> table and
 <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a> if <em>event</em> is a not a valid event object.</p>
+<p><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a> if <em>event</em> is a not a valid event object.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22794,7 +22641,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_flush_and_finish">5.15. Flush and Finish</h3>
+<h3 id="_flush_and_finish"><a class="anchor" href="#_flush_and_finish"></a>5.15. Flush and Finish</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -22825,11 +22672,11 @@
 perform an implicit flush of the command-queue.
 These blocking commands are <a href="#clEnqueueReadBuffer"><strong>clEnqueueReadBuffer</strong></a>,
 <a href="#clEnqueueReadBufferRect"><strong>clEnqueueReadBufferRect</strong></a>, <a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a>, with <em>blocking_read</em> set to
-<a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>; <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a>, <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a>,
-<a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> with <em>blocking_write</em> set to <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>;
+<a href="#CL_TRUE"><code>CL_TRUE</code></a>; <a href="#clEnqueueWriteBuffer"><strong>clEnqueueWriteBuffer</strong></a>, <a href="#clEnqueueWriteBufferRect"><strong>clEnqueueWriteBufferRect</strong></a>,
+<a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> with <em>blocking_write</em> set to <a href="#CL_TRUE"><code>CL_TRUE</code></a>;
 <a href="#clEnqueueMapBuffer"><strong>clEnqueueMapBuffer</strong></a>, <a href="#clEnqueueMapImage"><strong>clEnqueueMapImage</strong></a> with <em>blocking_map</em> set to
-<a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>; <a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a> with <em>blocking_copy</em> set to <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>;
-<a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> with <em>blocking_map</em> set to <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> or <a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a>.</p>
+<a href="#CL_TRUE"><code>CL_TRUE</code></a>; <a href="#clEnqueueSVMMemcpy"><strong>clEnqueueSVMMemcpy</strong></a> with <em>blocking_copy</em> set to <a href="#CL_TRUE"><code>CL_TRUE</code></a>;
+<a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a> with <em>blocking_map</em> set to <a href="#CL_TRUE"><code>CL_TRUE</code></a> or <a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a>.</p>
 </div>
 <div class="paragraph">
 <p>To use event objects that refer to commands enqueued in a command-queue as
@@ -22839,21 +22686,21 @@
 these event objects are enqueued.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clFlush"><strong>clFlush</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function call was executed successfully.
+<p><a href="#clFlush"><strong>clFlush</strong></a> returns  <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function call was executed successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22887,22 +22734,22 @@
 <a href="#clFinish"><strong>clFinish</strong></a> is also a synchronization point.</p>
 </div>
 <div class="paragraph">
-<p><a href="#clFinish"><strong>clFinish</strong></a> returns <a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a> if the function call was executed
+<p><a href="#clFinish"><strong>clFinish</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function call was executed
 successfully.
 Otherwise, it returns one of the following errors:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a> if <em>command_queue</em> is not a valid host
+<p><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> if <em>command_queue</em> is not a valid host
 command-queue.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a> if there is a failure to allocate resources required
+<p><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a> if there is a failure to allocate resources
+<p><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
@@ -22913,10 +22760,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="_associated_opencl_specification">6. Associated OpenCL specification</h2>
+<h2 id="_associated_opencl_specification"><a class="anchor" href="#_associated_opencl_specification"></a>6. Associated OpenCL specification</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="spirv-il">6.1. SPIR-V Intermediate Language</h3>
+<h3 id="spirv-il"><a class="anchor" href="#spirv-il"></a>6.1. SPIR-V Intermediate Language</h3>
 <div class="paragraph">
 <p>OpenCL 2.1 and 2.2 require support for the SPIR-V intermediate
 language that allows offline compilation to a binary
@@ -22928,12 +22775,12 @@
 In addition, platform vendors may support their own IL if this is
 appropriate.
 The OpenCL runtime will return a list of supported IL versions using the
-<a href="#CL_DEVICE_IL_VERSION"><code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION</code></a> or <a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;ILS_&#8203;WITH_&#8203;VERSION</code></a> parameter to
+<a href="#CL_DEVICE_IL_VERSION"><code>CL_DEVICE_<wbr>IL_<wbr>VERSION</code></a> or <a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_DEVICE_<wbr>ILS_<wbr>WITH_<wbr>VERSION</code></a> parameter to
 the <a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a> query.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="opencl-extensions">6.2. Extensions to OpenCL</h3>
+<h3 id="opencl-extensions"><a class="anchor" href="#opencl-extensions"></a>6.2. Extensions to OpenCL</h3>
 <div class="paragraph">
 <p>In addition to the specification of core features, OpenCL provides a number
 of extensions to the API, kernel language or intermediate representation.
@@ -22947,7 +22794,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="opencl-c-kernel-language">6.3. The OpenCL C Kernel Language</h3>
+<h3 id="opencl-c-kernel-language"><a class="anchor" href="#opencl-c-kernel-language"></a>6.3. The OpenCL C Kernel Language</h3>
 <div class="paragraph">
 <p>The OpenCL C kernel language is not defined in the OpenCL unified
 specification.
@@ -22955,8 +22802,8 @@
 OpenCL 1.1, OpenCL 1.2, OpenCL C 2.0 Kernel Language, and OpenCL C 3.0
 Kernel Language specifications.
 When OpenCL devices support one or more versions of the OpenCL C
-kernel language (see <a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a> and
-<a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a>),
+kernel language (see <a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a> and
+<a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a>),
 OpenCL program objects may be created by passing OpenCL C source
 strings to <a href="#clCreateProgramWithSource"><strong>clCreateProgramWithSource</strong></a>.</p>
 </div>
@@ -22964,7 +22811,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="opencl-embedded-profile">7. OpenCL Embedded Profile</h2>
+<h2 id="opencl-embedded-profile"><a class="anchor" href="#opencl-embedded-profile"></a>7. OpenCL Embedded Profile</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The OpenCL specification describes the feature requirements for desktop
@@ -22985,16 +22832,16 @@
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>If <a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a> and
-<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a> are zero, calls to <a href="#clCreateImage"><strong>clCreateImage</strong></a> or
+<p>If <a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a> and
+<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a> are zero, calls to <a href="#clCreateImage"><strong>clCreateImage</strong></a> or
 <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a> will fail to create the 3D image, and
-the <em>errcode_ret</em> argument will return <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a>.
+the <em>errcode_ret</em> argument will return <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a>.
 Declaring arguments of type <code>image3d_t</code> in a kernel will result in a
 compilation error.</p>
 </div>
 <div class="paragraph">
-<p>If <a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a> and
-<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a> are greater than zero 0, calls to
+<p>If <a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a> and
+<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a> are greater than zero 0, calls to
 <a href="#clCreateImage"><strong>clCreateImage</strong></a> and <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a> will behave as
 described for full profile implementations, and the <code>image3d_t</code>
 data type can be used in a kernel.</p>
@@ -23009,23 +22856,11 @@
 </li>
 <li>
 <p>Image and image arrays created with an
-<code>image_channel_data_type</code> value of <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a> or <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a> can only be
-used with samplers that use a filter mode of <a href="#CL_FILTER_NEAREST"><code>CL_&#8203;FILTER_&#8203;NEAREST</code></a>.
-The values returned by <strong>read_imagef</strong> and <strong>read_imageh</strong><sup>1</sup> for 2D and 3D
-images if <code>image_channel_data_type</code> value is <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a> or <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a>
-and sampler with filter_mode = <a href="#CL_FILTER_LINEAR"><code>CL_&#8203;FILTER_&#8203;LINEAR</code></a> are undefined.</p>
-<div class="openblock">
-<div class="content">
-<div class="dlist">
-<dl>
-<dt class="hdlist1">1</dt>
-<dd>
-<p>If <strong>cl_khr_fp16</strong> extension is supported.</p>
-</dd>
-</dl>
-</div>
-</div>
-</div>
+<code>image_channel_data_type</code> value of <a href="#CL_FLOAT"><code>CL_FLOAT</code></a> or <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a> can only be
+used with samplers that use a filter mode of <a href="#CL_FILTER_NEAREST"><code>CL_FILTER_<wbr>NEAREST</code></a>.
+The values returned by <strong>read_imagef</strong> <sup class="footnote">[<a id="_footnoteref_33" class="footnote" href="#_footnotedef_33" title="View footnote.">33</a>]</sup> for 2D and 3D
+images if <code>image_channel_data_type</code> value is <a href="#CL_FLOAT"><code>CL_FLOAT</code></a> or <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a>
+and sampler with filter_mode = <a href="#CL_FILTER_LINEAR"><code>CL_FILTER_<wbr>LINEAR</code></a> are undefined.</p>
 </li>
 </ol>
 </div>
@@ -23038,29 +22873,16 @@
 <li>
 <p>64 bit integers i.e. long, ulong including the appropriate vector data
 types and operations on 64-bit integers are optional.
-The <strong>cles_khr_int64</strong><sup>2</sup> extension string will be reported if the
-embedded profile implementation supports 64-bit integers.
-If double precision is supported i.e. <a href="#CL_DEVICE_DOUBLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;DOUBLE_&#8203;FP_&#8203;CONFIG</code></a> is not
+The <strong>cles_khr_int64</strong> <sup class="footnote">[<a id="_footnoteref_34" class="footnote" href="#_footnotedef_34" title="View footnote.">34</a>]</sup> extension string will
+be reported if the embedded profile implementation supports 64-bit integers.
+If double precision is supported i.e. <a href="#CL_DEVICE_DOUBLE_FP_CONFIG"><code>CL_DEVICE_<wbr>DOUBLE_<wbr>FP_<wbr>CONFIG</code></a> is not
 zero, then <strong>cles_khr_int64</strong> must also be supported.</p>
-<div class="openblock">
-<div class="content">
-<div class="dlist">
-<dl>
-<dt class="hdlist1">2</dt>
-<dd>
-<p>Note that the performance of 64-bit integer arithmetic can vary
-significantly between embedded devices.</p>
-</dd>
-</dl>
-</div>
-</div>
-</div>
 </li>
 <li>
 <p>The mandated minimum single precision floating-point capability given by
-<a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;SINGLE_&#8203;FP_&#8203;CONFIG</code></a> is <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;ZERO</code></a> or
-<a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a>.
-If <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a> is supported, the default rounding mode will
+<a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_DEVICE_<wbr>SINGLE_<wbr>FP_<wbr>CONFIG</code></a> is <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>ZERO</code></a> or
+<a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a>.
+If <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a> is supported, the default rounding mode will
 be round to nearest even; otherwise the default rounding mode will be
 round to zero.</p>
 </li>
@@ -23073,7 +22895,7 @@
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>If <a href="#CL_FP_INF_NAN"><code>CL_&#8203;FP_&#8203;INF_&#8203;NAN</code></a> is not set in <a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;SINGLE_&#8203;FP_&#8203;CONFIG</code></a>, and one of the
+<p>If <a href="#CL_FP_INF_NAN"><code>CL_FP_<wbr>INF_<wbr>NAN</code></a> is not set in <a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_DEVICE_<wbr>SINGLE_<wbr>FP_<wbr>CONFIG</code></a>, and one of the
 operands or the result of addition, subtraction, multiplication or division
 would signal the overflow or invalid exception (see IEEE 754 specification),
 the value of the result is implementation-defined.
@@ -23121,19 +22943,19 @@
 converting a float to a half using variants of the <strong>vstore_half</strong>
 function or when converting from a half to a float using variants of the
 <strong>vload_half</strong> function can be flushed to zero.
-The SPIR-V environment specification for details.</p>
+The OpenCL SPIR-V Environment Specification for details.</p>
 </li>
 <li>
-<p>The precision of conversions from <a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a>, <a href="#CL_SNORM_INT8"><code>CL_&#8203;SNORM_&#8203;INT8</code></a>,
-<a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a>, <a href="#CL_SNORM_INT16"><code>CL_&#8203;SNORM_&#8203;INT16</code></a>, <a href="#CL_UNORM_INT_101010"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010</code></a>, and
-<a href="#CL_UNORM_INT_101010_2"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010_&#8203;2</code></a> to float is ≤ 2 ulp for the embedded profile
+<p>The precision of conversions from <a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a>, <a href="#CL_SNORM_INT8"><code>CL_SNORM_<wbr>INT8</code></a>,
+<a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a>, <a href="#CL_SNORM_INT16"><code>CL_SNORM_<wbr>INT16</code></a>, <a href="#CL_UNORM_INT_101010"><code>CL_UNORM_<wbr>INT_<wbr>101010</code></a>, and
+<a href="#CL_UNORM_INT_101010_2"><code>CL_UNORM_<wbr>INT_<wbr>101010_<wbr>2</code></a> to float is ≤ 2 ulp for the embedded profile
 instead of ≤ 1.5 ulp as defined in the full profile.
 The exception cases described in the full profile and given below apply
 to the embedded profile.</p>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>For <a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a></p>
+<p>For <a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a></p>
 </div>
 <div class="ulist">
 <ul>
@@ -23146,7 +22968,7 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>For <a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a></p>
+<p>For <a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a></p>
 </div>
 <div class="ulist">
 <ul>
@@ -23159,7 +22981,7 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>For <a href="#CL_SNORM_INT8"><code>CL_&#8203;SNORM_&#8203;INT8</code></a></p>
+<p>For <a href="#CL_SNORM_INT8"><code>CL_SNORM_<wbr>INT8</code></a></p>
 </div>
 <div class="ulist">
 <ul>
@@ -23175,7 +22997,7 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>For <a href="#CL_SNORM_INT16"><code>CL_&#8203;SNORM_&#8203;INT16</code></a></p>
+<p>For <a href="#CL_SNORM_INT16"><code>CL_SNORM_<wbr>INT16</code></a></p>
 </div>
 <div class="ulist">
 <ul>
@@ -23191,7 +23013,7 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>For <a href="#CL_UNORM_INT_101010"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010</code></a></p>
+<p>For <a href="#CL_UNORM_INT_101010"><code>CL_UNORM_<wbr>INT_<wbr>101010</code></a></p>
 </div>
 <div class="ulist">
 <ul>
@@ -23204,7 +23026,7 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>For <a href="#CL_UNORM_INT_101010_2"><code>CL_&#8203;UNORM_&#8203;INT_&#8203;101010_&#8203;2</code></a></p>
+<p>For <a href="#CL_UNORM_INT_101010_2"><code>CL_UNORM_<wbr>INT_<wbr>101010_<wbr>2</code></a></p>
 </div>
 <div class="ulist">
 <ul>
@@ -23225,7 +23047,7 @@
 </ol>
 </div>
 <div class="paragraph">
-<p><a href="#CL_PLATFORM_PROFILE"><code>CL_&#8203;PLATFORM_&#8203;PROFILE</code></a> defined in the <a href="#platform-queries-table">OpenCL Platform
+<p><a href="#CL_PLATFORM_PROFILE"><code>CL_PLATFORM_<wbr>PROFILE</code></a> defined in the <a href="#platform-queries-table">OpenCL Platform
 Queries</a> table will return the string EMBEDDED_PROFILE if the OpenCL
 implementation supports the embedded profile only.</p>
 </div>
@@ -23236,7 +23058,7 @@
 Device Queries</a> table.</p>
 </div>
 <table id="embedded-device-queries-table" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 38. List of supported param_names by <a href="#clGetDeviceInfo">clGetDeviceInfo</a> for embedded profile</caption>
+<caption class="title">Table 39. List of supported param_names by <a href="#clGetDeviceInfo">clGetDeviceInfo</a> for embedded profile</caption>
 <colgroup>
 <col style="width: 33.3333%;">
 <col style="width: 33.3333%;">
@@ -23244,169 +23066,169 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>cl_device_info</strong></th>
+<th class="tableblock halign-left valign-top">Device Info</th>
 <th class="tableblock halign-left valign-top">Return Type</th>
 <th class="tableblock halign-left valign-top">Description</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;IMAGE_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>IMAGE_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the
         <code>read_only</code> qualifier.
-        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the
         <code>write_only</code> qualifier.
-        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the
         <code>write_only</code> or <code>read_write</code> qualifier.
-        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;WIDTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>WIDTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max width of 2D image in pixels.
-        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;HEIGHT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>HEIGHT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max height of 2D image in pixels.
-        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max width of 3D image in pixels.
-        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max height of 3D image in pixels.
-        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max depth of 3D image in pixels.
-        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;MAX_&#8203;BUFFER_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"><code>CL_DEVICE_<wbr>IMAGE_<wbr>MAX_<wbr>BUFFER_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of pixels for a 1D image created from a buffer object.</p>
-<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 2048 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;MAX_&#8203;ARRAY_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"><code>CL_DEVICE_<wbr>IMAGE_<wbr>MAX_<wbr>ARRAY_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of images in a 1D or 2D image array.</p>
-<p class="tableblock">        The minimum value is 256 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 256 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;SAMPLERS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_DEVICE_<wbr>MAX_<wbr>SAMPLERS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of samplers that can be used in a kernel.</p>
-<p class="tableblock">        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>,
+<p class="tableblock">        The minimum value is 8 if <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>,
         the value is 0 otherwise.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_PARAMETER_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;PARAMETER_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_PARAMETER_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>PARAMETER_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max size in bytes of all arguments that can be passed to a kernel.
         The minimum value is 256 bytes for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_&#8203;DEVICE_&#8203;SINGLE_&#8203;FP_&#8203;CONFIG</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_fp_config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_SINGLE_FP_CONFIG"><code>CL_DEVICE_<wbr>SINGLE_<wbr>FP_<wbr>CONFIG</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_device_<wbr>fp_<wbr>config</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Describes single precision floating-point capability of the device.
         This is a bit-field that describes one or more of the following
         values:</p>
-<p class="tableblock">        <a href="#CL_FP_DENORM"><code>CL_&#8203;FP_&#8203;DENORM</code></a> - denorms are supported</p>
-<p class="tableblock">        <a href="#CL_FP_INF_NAN"><code>CL_&#8203;FP_&#8203;INF_&#8203;NAN</code></a> - INF and quiet NaNs are supported.</p>
-<p class="tableblock">        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a> - round to nearest even rounding mode
+<p class="tableblock">        <a href="#CL_FP_DENORM"><code>CL_FP_<wbr>DENORM</code></a> - denorms are supported</p>
+<p class="tableblock">        <a href="#CL_FP_INF_NAN"><code>CL_FP_<wbr>INF_<wbr>NAN</code></a> - INF and quiet NaNs are supported.</p>
+<p class="tableblock">        <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a> - round to nearest even rounding mode
         supported</p>
-<p class="tableblock">        <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;ZERO</code></a> - round to zero rounding mode supported</p>
-<p class="tableblock">        <a href="#CL_FP_ROUND_TO_INF"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;INF</code></a> - round to positive and negative infinity
+<p class="tableblock">        <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>ZERO</code></a> - round to zero rounding mode supported</p>
+<p class="tableblock">        <a href="#CL_FP_ROUND_TO_INF"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>INF</code></a> - round to positive and negative infinity
         rounding modes supported</p>
-<p class="tableblock">        <a href="#CL_FP_FMA"><code>CL_&#8203;FP_&#8203;FMA</code></a> - IEEE754-2008 fused multiply-add is supported.</p>
-<p class="tableblock">        <a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_&#8203;FP_&#8203;CORRECTLY_&#8203;ROUNDED_&#8203;DIVIDE_&#8203;SQRT</code></a> - divide and sqrt are correctly
+<p class="tableblock">        <a href="#CL_FP_FMA"><code>CL_FP_<wbr>FMA</code></a> - IEEE754-2008 fused multiply-add is supported.</p>
+<p class="tableblock">        <a href="#CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT"><code>CL_FP_<wbr>CORRECTLY_<wbr>ROUNDED_<wbr>DIVIDE_<wbr>SQRT</code></a> - divide and sqrt are correctly
         rounded as defined by the IEEE754 specification.</p>
-<p class="tableblock">        <a href="#CL_FP_SOFT_FLOAT"><code>CL_&#8203;FP_&#8203;SOFT_&#8203;FLOAT</code></a> - Basic floating-point operations (such as
+<p class="tableblock">        <a href="#CL_FP_SOFT_FLOAT"><code>CL_FP_<wbr>SOFT_<wbr>FLOAT</code></a> - Basic floating-point operations (such as
         addition, subtraction, multiplication) are implemented in software.</p>
 <p class="tableblock">        <a id="embedded-profile-single-fp-config-requirements"></a>
         The mandated minimum floating-point capability is:
-        <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;ZERO</code></a> or <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_&#8203;FP_&#8203;ROUND_&#8203;TO_&#8203;NEAREST</code></a> for devices that are
-        not of type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_FP_ROUND_TO_ZERO"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>ZERO</code></a> or <a href="#CL_FP_ROUND_TO_NEAREST"><code>CL_FP_<wbr>ROUND_<wbr>TO_<wbr>NEAREST</code></a> for devices that are
+        not of type <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CONSTANT_&#8203;BUFFER_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>CONSTANT_<wbr>BUFFER_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max size in bytes of a constant buffer allocation.
         The minimum value is 1 KB for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_CONSTANT_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CONSTANT_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_MAX_CONSTANT_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>CONSTANT_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of arguments declared with the <code>__constant</code> qualifier
         in a kernel.
         The minimum value is 4 for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_LOCAL_MEM_SIZE"><code>CL_&#8203;DEVICE_&#8203;LOCAL_&#8203;MEM_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_LOCAL_MEM_SIZE"><code>CL_DEVICE_<wbr>LOCAL_<wbr>MEM_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_ulong</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Size of local memory arena in bytes.
         The minimum value is 1 KB for devices that are not of type
-        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_&#8203;DEVICE_&#8203;TYPE_&#8203;CUSTOM</code></a>.</p></td>
+        <a href="#CL_DEVICE_TYPE_CUSTOM"><code>CL_DEVICE_<wbr>TYPE_<wbr>CUSTOM</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if the implementation does not have a compiler available
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_FALSE</code></a> if the implementation does not have a compiler available
         to compile the program source.</p>
-<p class="tableblock">        Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the compiler is available.
-        This can be <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> for the embedded platform profile only.</p></td>
+<p class="tableblock">        Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the compiler is available.
+        This can be <a href="#CL_FALSE"><code>CL_FALSE</code></a> for the embedded platform profile only.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;LINKER_&#8203;AVAILABLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if the implementation does not have a linker available.
-        Is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if the linker is available.</p>
-<p class="tableblock">        This can be <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> for the embedded platform profile only.</p>
-<p class="tableblock">        This must be <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> if <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a> is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_DEVICE_<wbr>LINKER_<wbr>AVAILABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is <a href="#CL_FALSE"><code>CL_FALSE</code></a> if the implementation does not have a linker available.
+        Is <a href="#CL_TRUE"><code>CL_TRUE</code></a> if the linker is available.</p>
+<p class="tableblock">        This can be <a href="#CL_FALSE"><code>CL_FALSE</code></a> for the embedded platform profile only.</p>
+<p class="tableblock">        This must be <a href="#CL_TRUE"><code>CL_TRUE</code></a> if <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;MAX_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>MAX_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The max. size of the device queue in bytes.
         The minimum value is 64 KB for the embedded profile</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_PRINTF_BUFFER_SIZE"><code>CL_&#8203;DEVICE_&#8203;PRINTF_&#8203;BUFFER_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_DEVICE_PRINTF_BUFFER_SIZE"><code>CL_DEVICE_<wbr>PRINTF_<wbr>BUFFER_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum size in bytes of the internal buffer that holds the output
         of printf calls from a kernel.
         The minimum value for the EMBEDDED profile is 1 KB.</p></td>
@@ -23414,23 +23236,23 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>If <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the <a href="#device-queries-table">OpenCL
-Device Queries</a> table is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the values assigned to
-<a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;IMAGE_&#8203;ARGS</code></a>, <a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a>,
-<a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE2D_&#8203;MAX_&#8203;HEIGHT</code></a>,
-<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;HEIGHT</code></a>,
-<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_&#8203;DEVICE_&#8203;IMAGE3D_&#8203;MAX_&#8203;DEPTH</code></a>, and <a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;SAMPLERS</code></a> by the implementation
+<p>If <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the <a href="#device-queries-table">OpenCL
+Device Queries</a> table is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the values assigned to
+<a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>IMAGE_<wbr>ARGS</code></a>, <a href="#CL_DEVICE_MAX_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a>,
+<a href="#CL_DEVICE_IMAGE2D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE2D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE2D_<wbr>MAX_<wbr>HEIGHT</code></a>,
+<a href="#CL_DEVICE_IMAGE3D_MAX_WIDTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>WIDTH</code></a>, <a href="#CL_DEVICE_IMAGE3D_MAX_HEIGHT"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>HEIGHT</code></a>,
+<a href="#CL_DEVICE_IMAGE3D_MAX_DEPTH"><code>CL_DEVICE_<wbr>IMAGE3D_<wbr>MAX_<wbr>DEPTH</code></a>, and <a href="#CL_DEVICE_MAX_SAMPLERS"><code>CL_DEVICE_<wbr>MAX_<wbr>SAMPLERS</code></a> by the implementation
 must be greater than or equal to the minimum values specified in the
 <a href="#embedded-device-queries-table">OpenCL Embedded Device Queries</a> table.</p>
 </div>
 <div class="paragraph">
-<p>If <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code></a> specified in the <a href="#device-queries-table">OpenCL
-Device Queries</a> table is <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a>, the minimum list of supported
+<p>If <a href="#CL_DEVICE_IMAGE_SUPPORT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code></a> specified in the <a href="#device-queries-table">OpenCL
+Device Queries</a> table is <a href="#CL_TRUE"><code>CL_TRUE</code></a>, the minimum list of supported
 image formats for either reading or writing in a kernel for embedded
 profile devices is:</p>
 </div>
 <table id="min-supported-image-formats-embedded-profile" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 39. Minimum list of supported image formats for reading or writing (embedded profile)</caption>
+<caption class="title">Table 40. Minimum list of supported image formats for reading or writing (embedded profile)</caption>
 <colgroup>
 <col style="width: 34%;">
 <col style="width: 33%;">
@@ -23446,32 +23268,32 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_&#8203;RGBA</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_&#8203;UNORM_&#8203;INT8</code></a><br>
-        <a href="#CL_UNORM_INT16"><code>CL_&#8203;UNORM_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT8"><code>CL_&#8203;SIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_SIGNED_INT16"><code>CL_&#8203;SIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_SIGNED_INT32"><code>CL_&#8203;SIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_UNSIGNED_INT8"><code>CL_&#8203;UNSIGNED_&#8203;INT8</code></a><br>
-        <a href="#CL_UNSIGNED_INT16"><code>CL_&#8203;UNSIGNED_&#8203;INT16</code></a><br>
-        <a href="#CL_UNSIGNED_INT32"><code>CL_&#8203;UNSIGNED_&#8203;INT32</code></a><br>
-        <a href="#CL_HALF_FLOAT"><code>CL_&#8203;HALF_&#8203;FLOAT</code></a><br>
-        <a href="#CL_FLOAT"><code>CL_&#8203;FLOAT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_RGBA"><code>CL_RGBA</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#CL_UNORM_INT8"><code>CL_UNORM_<wbr>INT8</code></a><br>
+        <a href="#CL_UNORM_INT16"><code>CL_UNORM_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT8"><code>CL_SIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_SIGNED_INT16"><code>CL_SIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_SIGNED_INT32"><code>CL_SIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_UNSIGNED_INT8"><code>CL_UNSIGNED_<wbr>INT8</code></a><br>
+        <a href="#CL_UNSIGNED_INT16"><code>CL_UNSIGNED_<wbr>INT16</code></a><br>
+        <a href="#CL_UNSIGNED_INT32"><code>CL_UNSIGNED_<wbr>INT32</code></a><br>
+        <a href="#CL_HALF_FLOAT"><code>CL_HALF_<wbr>FLOAT</code></a><br>
+        <a href="#CL_FLOAT"><code>CL_FLOAT</code></a></p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
 <p>For embedded profiles devices that support reading from and writing to the same
-image object from the same kernel instance (see <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a>)
+image object from the same kernel instance (see <a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a>)
 there is no required minimum list of supported image formats.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_host_environment_and_thread_safety">Appendix A: Host environment and thread safety</h2>
+<h2 id="_host_environment_and_thread_safety"><a class="anchor" href="#_host_environment_and_thread_safety"></a>Appendix A: Host environment and thread safety</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="shared-opencl-objects">Shared OpenCL Objects</h3>
+<h3 id="shared-opencl-objects"><a class="anchor" href="#shared-opencl-objects"></a>Shared OpenCL Objects</h3>
 <div class="paragraph">
 <p>This section describes which objects can be shared across multiple
 command-queues created within a host process.</p>
@@ -23529,45 +23351,22 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_multiple_host_threads">Multiple Host Threads</h3>
+<h3 id="_multiple_host_threads"><a class="anchor" href="#_multiple_host_threads"></a>Multiple Host Threads</h3>
 <div class="paragraph">
-<p>All OpenCL API calls are thread-safe<sup>1</sup> except those that modify the state
-of cl_kernel objects: <a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a>, <a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a>,
-<a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> and <a href="#clCloneKernel"><strong>clCloneKernel</strong></a>.
-<a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a> , <a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a>, <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> and
+<p>All OpenCL API calls are thread-safe <sup class="footnote">[<a id="_footnoteref_35" class="footnote" href="#_footnotedef_35" title="View footnote.">35</a>]</sup> except those
+that modify the state of <code>cl_kernel</code> objects: <a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a>,
+<a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a>, <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> and <a href="#clCloneKernel"><strong>clCloneKernel</strong></a>.
+<a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a>, <a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a>, <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> and
 <a href="#clCloneKernel"><strong>clCloneKernel</strong></a> are safe to call from any host thread, and safe to call
 re-entrantly so long as concurrent calls to any combination of these API
-calls operate on different cl_kernel objects.
-The state of the cl_kernel object is undefined if <a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a>,
+calls operate on different <code>cl_kernel</code> objects.
+The state of the <code>cl_kernel</code> object is undefined if <a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a>,
 <a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a>, <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a> or <a href="#clCloneKernel"><strong>clCloneKernel</strong></a> are
-called from multiple host threads on the same cl_kernel object at the same
-time<sup>2</sup>.
+called from multiple host threads on the same <code>cl_kernel</code> object at the same
+time <sup class="footnote">[<a id="_footnoteref_36" class="footnote" href="#_footnotedef_36" title="View footnote.">36</a>]</sup>.
 Please note that there are additional limitations as to which OpenCL APIs
 may be called from <a href="#event-objects">OpenCL callback functions</a>.</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">1</dt>
-<dd>
-<p>Please refer to the OpenCL glossary for the OpenCL definition of
-thread-safe.
-This definition may be different from usage of the term in other
-contexts.</p>
-</dd>
-<dt class="hdlist1">2</dt>
-<dd>
-<p>There is an inherent race condition in the design of OpenCL that occurs
-between setting a kernel argument and using the kernel with
-<a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>.
-Another host thread might change the kernel arguments between when a
-host thread sets the kernel arguments and then enqueues the kernel,
-causing the wrong kernel arguments to be enqueued.
-Rather than attempt to share cl_kernel objects among multiple host
-threads, applications are strongly encouraged to make additional
-cl_kernel objects for kernel functions for each host thread.</p>
-</dd>
-</dl>
-</div>
 <div class="paragraph">
 <p>The behavior of OpenCL APIs called from an interrupt or signal handler is
 implementation-defined</p>
@@ -23579,7 +23378,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_global_constructors_and_destructors">Global constructors and destructors</h3>
+<h3 id="_global_constructors_and_destructors"><a class="anchor" href="#_global_constructors_and_destructors"></a>Global constructors and destructors</h3>
 <div class="paragraph">
 <p>The execution order of global constructors and destructors is left undefined
 by the C and C++ standards. It is therefore not possible to know the relative
@@ -23594,7 +23393,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="_portability">Appendix B: Portability</h2>
+<h2 id="_portability"><a class="anchor" href="#_portability"></a>Appendix B: Portability</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>OpenCL is designed to be portable to other architectures and hardware
@@ -23736,21 +23535,9 @@
 vector.
 That is the transformation is equally valid whether that vector was a
 <code>uchar16</code> or a <code>ulong2</code>.
-Of course, as is well known, little-endian machines actually<sup>1</sup> store their
-data in reverse byte order to compensate for the little-endian storage
-format of the array elements:</p>
-</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">1</dt>
-<dd>
-<p>Note that we are talking about the programming model here.
-In reality, little endian systems might choose to simply address their
-bytes from "the right" or reverse the "order" of the bits in the byte.
-Either of these choices would mean that no big swap would need to occur
-in hardware.</p>
-</dd>
-</dl>
+Of course, as is well known, little-endian machines
+actually <sup class="footnote">[<a id="_footnoteref_37" class="footnote" href="#_footnotedef_37" title="View footnote.">37</a>]</sup> store their data in reverse byte order to
+compensate for the little-endian storage format of the array elements:</p>
 </div>
 <div class="paragraph">
 <p>Memory (big-endian):</p>
@@ -23905,7 +23692,7 @@
 implementations depending on whether the system is big-endian, or
 little-endian or indeed has no vector unit at all.
 (Thus, the behavior of bitcasts to vectors of different numbers of elements
-is implementation-defined, see section 6.2.4 of OpenCL 2.0 C specification.)</p>
+is implementation-defined, see section 6.4.4 of OpenCL C specification.)</p>
 </div>
 <div class="paragraph">
 <p>An example follows:</p>
@@ -24056,14 +23843,14 @@
 <li>
 <p>A number of edge cases for math library functions are more rigorously
 defined than in C99.
-Please see <em>section 7.5</em> of the OpenCL 2.0 C specification.</p>
+Please see <em>section 7.5</em> of the OpenCL C specification.</p>
 </li>
 </ul>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="data-types">Appendix C: Application Data Types</h2>
+<h2 id="data-types"><a class="anchor" href="#data-types"></a>Appendix C: Application Data Types</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section documents the provided host application types and constant
@@ -24075,7 +23862,7 @@
 supplied headers.</p>
 </div>
 <div class="sect2">
-<h3 id="scalar-data-types">Supported Application Scalar Data Types</h3>
+<h3 id="scalar-data-types"><a class="anchor" href="#scalar-data-types"></a>Supported Application Scalar Data Types</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -24101,7 +23888,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="vector-data-types">Supported Application Vector Data Types</h3>
+<h3 id="vector-data-types"><a class="anchor" href="#vector-data-types"></a>Supported Application Vector Data Types</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -24136,25 +23923,25 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="alignment-app-data-types">Alignment of Application Data Types</h3>
+<h3 id="alignment-app-data-types"><a class="anchor" href="#alignment-app-data-types"></a>Alignment of Application Data Types</h3>
 <div class="paragraph">
 <p>The user is responsible for ensuring that pointers passed into and out of
 OpenCL kernels are natively aligned relative to the data type of the
 parameter as defined in the kernel language and SPIR-V specifications.
-This implies that OpenCL buffers created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> need to
+This implies that OpenCL buffers created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> need to
 provide an appropriately aligned host memory pointer that is aligned to the
 data types used to access these buffers in a kernel(s), that SVM allocations
 must correctly align and that pointers into SVM allocations must also be
 correctly aligned.
 The user is also responsible for ensuring image data passed is aligned to
 the granularity of the data representing a single pixel (e.g.
-<code>image_num_channels * sizeof(image_channel_data_type)</code>) except for <a href="#CL_RGB"><code>CL_&#8203;RGB</code></a>
-and <a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a> images where the data must be aligned to the granularity of a
+<code>image_num_channels * sizeof(image_channel_data_type)</code>) except for <a href="#CL_RGB"><code>CL_RGB</code></a>
+and <a href="#CL_RGBx"><code>CL_RGBx</code></a> images where the data must be aligned to the granularity of a
 single channel in a pixel (i.e. <code>sizeof(image_channel_data_type)</code>).
-This implies that OpenCL images created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_&#8203;MEM_&#8203;USE_&#8203;HOST_&#8203;PTR</code></a> must align
+This implies that OpenCL images created with <a href="#CL_MEM_USE_HOST_PTR"><code>CL_MEM_<wbr>USE_<wbr>HOST_<wbr>PTR</code></a> must align
 correctly.
 The image alignment value can be queried using the
-<a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;BASE_&#8203;ADDRESS_&#8203;ALIGNMENT</code></a> query.
+<a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>BASE_<wbr>ADDRESS_<wbr>ALIGNMENT</code></a> query.
 In addition, source pointers for <a href="#clEnqueueWriteImage"><strong>clEnqueueWriteImage</strong></a> and other operations
 that copy to the OpenCL runtime, as well as destination pointers for
 <a href="#clEnqueueReadImage"><strong>clEnqueueReadImage</strong></a> and other operations that copy from the OpenCL runtime
@@ -24172,7 +23959,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_vector_literals">Vector Literals</h3>
+<h3 id="_vector_literals"><a class="anchor" href="#_vector_literals"></a>Vector Literals</h3>
 <div class="paragraph">
 <p>Application vector literals may be used in assignments of individual vector
 components.
@@ -24186,7 +23973,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="vector-components">Vector Components</h3>
+<h3 id="vector-components"><a class="anchor" href="#vector-components"></a>Vector Components</h3>
 <div class="paragraph">
 <p>The components of application vector types can be addressed using the
 <code>&lt;vector_name&gt;.s[&lt;index&gt;]</code> notation.</p>
@@ -24208,7 +23995,7 @@
 preprocessor symbol.</p>
 </div>
 <div class="sect3">
-<h4 id="_named_vector_components_notation">Named vector components notation</h4>
+<h4 id="_named_vector_components_notation"><a class="anchor" href="#_named_vector_components_notation"></a>Named vector components notation</h4>
 <div class="paragraph">
 <p>Vector data type components may be accessed using the <code>.sN</code>, <code>.sn</code> or
 <code>.xyzw</code> field naming convention, similar to how they are used within the
@@ -24269,7 +24056,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_highlow_vector_component_notation">High/Low vector component notation</h4>
+<h4 id="_highlow_vector_component_notation"><a class="anchor" href="#_highlow_vector_component_notation"></a>High/Low vector component notation</h4>
 <div class="paragraph">
 <p>Vector data type components may be accessed using the <code>.hi</code> and <code>.lo</code>
 notation similar to that supported within the language types.
@@ -24289,7 +24076,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_native_vector_type_notation">Native vector type notation</h4>
+<h4 id="_native_vector_type_notation"><a class="anchor" href="#_native_vector_type_notation"></a>Native vector type notation</h4>
 <div class="paragraph">
 <p>Certain native vector types are defined for providing a mapping of vector
 types to architecturally built-in vector types.
@@ -24336,13 +24123,13 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_implicit_conversions">Implicit Conversions</h3>
+<h3 id="_implicit_conversions"><a class="anchor" href="#_implicit_conversions"></a>Implicit Conversions</h3>
 <div class="paragraph">
 <p>Implicit conversions between application vector types are not supported.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_explicit_casts">Explicit Casts</h3>
+<h3 id="_explicit_casts"><a class="anchor" href="#_explicit_casts"></a>Explicit Casts</h3>
 <div class="paragraph">
 <p>Explicit casting of application vector types (<code>cl_typen</code>) is not supported.
 Explicit casting of native vector types (<code>__cl_typen</code>) is defined by the
@@ -24350,7 +24137,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_other_operators_and_functions">Other operators and functions</h3>
+<h3 id="_other_operators_and_functions"><a class="anchor" href="#_other_operators_and_functions"></a>Other operators and functions</h3>
 <div class="paragraph">
 <p>The behavior of standard operators and function on both application vector
 types (<code>cl_typen</code>) and native vector types (<code>__cl_typen</code>) is defined by
@@ -24358,7 +24145,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_application_constant_definitions">Application constant definitions</h3>
+<h3 id="_application_constant_definitions"><a class="anchor" href="#_application_constant_definitions"></a>Application constant definitions</h3>
 <div class="paragraph">
 <p>In addition to the above application type definitions, the following literal
 definitions are also available.</p>
@@ -24370,195 +24157,195 @@
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><a id="CL_CHAR_BIT"></a><a href="#CL_CHAR_BIT"><code>CL_&#8203;CHAR_&#8203;BIT</code></a></th>
+<th class="tableblock halign-left valign-top"><a id="CL_CHAR_BIT"></a><a href="#CL_CHAR_BIT"><code>CL_CHAR_<wbr>BIT</code></a></th>
 <th class="tableblock halign-left valign-top">Bit width of a character</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SCHAR_MAX"></a><a href="#CL_SCHAR_MAX"><code>CL_&#8203;SCHAR_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SCHAR_MAX"></a><a href="#CL_SCHAR_MAX"><code>CL_SCHAR_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_char</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SCHAR_MIN"></a><a href="#CL_SCHAR_MIN"><code>CL_&#8203;SCHAR_&#8203;MIN</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SCHAR_MIN"></a><a href="#CL_SCHAR_MIN"><code>CL_SCHAR_<wbr>MIN</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum value of a type <code>cl_char</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CHAR_MAX"></a><a href="#CL_CHAR_MAX"><code>CL_&#8203;CHAR_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CHAR_MAX"></a><a href="#CL_CHAR_MAX"><code>CL_CHAR_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_char</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CHAR_MIN"></a><a href="#CL_CHAR_MIN"><code>CL_&#8203;CHAR_&#8203;MIN</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_CHAR_MIN"></a><a href="#CL_CHAR_MIN"><code>CL_CHAR_<wbr>MIN</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum value of a type <code>cl_char</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UCHAR_MAX"></a><a href="#CL_UCHAR_MAX"><code>CL_&#8203;UCHAR_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UCHAR_MAX"></a><a href="#CL_UCHAR_MAX"><code>CL_UCHAR_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_uchar</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SHRT_MAX"></a><a href="#CL_SHRT_MAX"><code>CL_&#8203;SHRT_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SHRT_MAX"></a><a href="#CL_SHRT_MAX"><code>CL_SHRT_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_short</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SHRT_MIN"></a><a href="#CL_SHRT_MIN"><code>CL_&#8203;SHRT_&#8203;MIN</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SHRT_MIN"></a><a href="#CL_SHRT_MIN"><code>CL_SHRT_<wbr>MIN</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum value of a type <code>cl_short</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_USHRT_MAX"></a><a href="#CL_USHRT_MAX"><code>CL_&#8203;USHRT_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_USHRT_MAX"></a><a href="#CL_USHRT_MAX"><code>CL_USHRT_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_ushort</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INT_MAX"></a><a href="#CL_INT_MAX"><code>CL_&#8203;INT_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INT_MAX"></a><a href="#CL_INT_MAX"><code>CL_INT_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_int</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INT_MIN"></a><a href="#CL_INT_MIN"><code>CL_&#8203;INT_&#8203;MIN</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INT_MIN"></a><a href="#CL_INT_MIN"><code>CL_INT_<wbr>MIN</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum value of a type <code>cl_int</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UINT_MAX"></a><a href="#CL_UINT_MAX"><code>CL_&#8203;UINT_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_UINT_MAX"></a><a href="#CL_UINT_MAX"><code>CL_UINT_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_uint</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LONG_MAX"></a><a href="#CL_LONG_MAX"><code>CL_&#8203;LONG_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LONG_MAX"></a><a href="#CL_LONG_MAX"><code>CL_LONG_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_long</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LONG_MIN"></a><a href="#CL_LONG_MIN"><code>CL_&#8203;LONG_&#8203;MIN</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LONG_MIN"></a><a href="#CL_LONG_MIN"><code>CL_LONG_<wbr>MIN</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum value of a type <code>cl_long</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_ULONG_MAX"></a><a href="#CL_ULONG_MAX"><code>CL_&#8203;ULONG_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_ULONG_MAX"></a><a href="#CL_ULONG_MAX"><code>CL_ULONG_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of a type <code>cl_ulong</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_DIG"></a><a href="#CL_FLT_DIG"><code>CL_&#8203;FLT_&#8203;DIG</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_DIG"></a><a href="#CL_FLT_DIG"><code>CL_FLT_<wbr>DIG</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Number of decimal digits of precision for the type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MANT_DIG"></a><a href="#CL_FLT_MANT_DIG"><code>CL_&#8203;FLT_&#8203;MANT_&#8203;DIG</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MANT_DIG"></a><a href="#CL_FLT_MANT_DIG"><code>CL_FLT_<wbr>MANT_<wbr>DIG</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Number of digits in the mantissa of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MAX_10_EXP"></a><a href="#CL_FLT_MAX_10_EXP"><code>CL_&#8203;FLT_&#8203;MAX_&#8203;10_&#8203;EXP</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MAX_10_EXP"></a><a href="#CL_FLT_MAX_10_EXP"><code>CL_FLT_<wbr>MAX_<wbr>10_<wbr>EXP</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum positive integer such that 10 raised to this power minus one can
     be represented as a normalized floating-point number of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MAX_EXP"></a><a href="#CL_FLT_MAX_EXP"><code>CL_&#8203;FLT_&#8203;MAX_&#8203;EXP</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MAX_EXP"></a><a href="#CL_FLT_MAX_EXP"><code>CL_FLT_<wbr>MAX_<wbr>EXP</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum exponent value of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MIN_10_EXP"></a><a href="#CL_FLT_MIN_10_EXP"><code>CL_&#8203;FLT_&#8203;MIN_&#8203;10_&#8203;EXP</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MIN_10_EXP"></a><a href="#CL_FLT_MIN_10_EXP"><code>CL_FLT_<wbr>MIN_<wbr>10_<wbr>EXP</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum negative integer such that 10 raised to this power minus one can
     be represented as a normalized floating-point number of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MIN_EXP"></a><a href="#CL_FLT_MIN_EXP"><code>CL_&#8203;FLT_&#8203;MIN_&#8203;EXP</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MIN_EXP"></a><a href="#CL_FLT_MIN_EXP"><code>CL_FLT_<wbr>MIN_<wbr>EXP</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum exponent value of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_RADIX"></a><a href="#CL_FLT_RADIX"><code>CL_&#8203;FLT_&#8203;RADIX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_RADIX"></a><a href="#CL_FLT_RADIX"><code>CL_FLT_<wbr>RADIX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Base value of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MAX"></a><a href="#CL_FLT_MAX"><code>CL_&#8203;FLT_&#8203;MAX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MAX"></a><a href="#CL_FLT_MAX"><code>CL_FLT_<wbr>MAX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MIN"></a><a href="#CL_FLT_MIN"><code>CL_&#8203;FLT_&#8203;MIN</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_MIN"></a><a href="#CL_FLT_MIN"><code>CL_FLT_<wbr>MIN</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum value of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_EPSILON"></a><a href="#CL_FLT_EPSILON"><code>CL_&#8203;FLT_&#8203;EPSILON</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FLT_EPSILON"></a><a href="#CL_FLT_EPSILON"><code>CL_FLT_<wbr>EPSILON</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum positive floating-point number of type <code>cl_float</code> such that <code>1.0
-    +  <a href="#CL_FLT_EPSILON"><code>CL_&#8203;FLT_&#8203;EPSILON</code></a> != 1</code> is true.</p></td>
+    +  <a href="#CL_FLT_EPSILON"><code>CL_FLT_<wbr>EPSILON</code></a> != 1</code> is true.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_DIG"></a><a href="#CL_DBL_DIG"><code>CL_&#8203;DBL_&#8203;DIG</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_DIG"></a><a href="#CL_DBL_DIG"><code>CL_DBL_<wbr>DIG</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Number of decimal digits of precision for the type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MANT_DIG"></a><a href="#CL_DBL_MANT_DIG"><code>CL_&#8203;DBL_&#8203;MANT_&#8203;DIG</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MANT_DIG"></a><a href="#CL_DBL_MANT_DIG"><code>CL_DBL_<wbr>MANT_<wbr>DIG</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Number of digits in the mantissa of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MAX_10_EXP"></a><a href="#CL_DBL_MAX_10_EXP"><code>CL_&#8203;DBL_&#8203;MAX_&#8203;10_&#8203;EXP</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MAX_10_EXP"></a><a href="#CL_DBL_MAX_10_EXP"><code>CL_DBL_<wbr>MAX_<wbr>10_<wbr>EXP</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum positive integer such that 10 raised to this power minus one can
     be represented as a normalized floating-point number of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MAX_EXP"></a><a href="#CL_DBL_MAX_EXP"><code>CL_&#8203;DBL_&#8203;MAX_&#8203;EXP</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MAX_EXP"></a><a href="#CL_DBL_MAX_EXP"><code>CL_DBL_<wbr>MAX_<wbr>EXP</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum exponent value of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MIN_10_EXP"></a><a href="#CL_DBL_MIN_10_EXP"><code>CL_&#8203;DBL_&#8203;MIN_&#8203;10_&#8203;EXP</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MIN_10_EXP"></a><a href="#CL_DBL_MIN_10_EXP"><code>CL_DBL_<wbr>MIN_<wbr>10_<wbr>EXP</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum negative integer such that 10 raised to this power minus one can
     be represented as a normalized floating-point number of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MIN_EXP"></a><a href="#CL_DBL_MIN_EXP"><code>CL_&#8203;DBL_&#8203;MIN_&#8203;EXP</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MIN_EXP"></a><a href="#CL_DBL_MIN_EXP"><code>CL_DBL_<wbr>MIN_<wbr>EXP</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum exponent value of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_RADIX"></a><a href="#CL_DBL_RADIX"><code>CL_&#8203;DBL_&#8203;RADIX</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_RADIX"></a><a href="#CL_DBL_RADIX"><code>CL_DBL_<wbr>RADIX</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Base value of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MAX"></a><a href="#CL_DBL_MAX"><code>CL_&#8203;DBL_&#8203;MAX</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MAX"></a><a href="#CL_DBL_MAX"><code>CL_DBL_<wbr>MAX</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MIN"></a><a href="#CL_DBL_MIN"><code>CL_&#8203;DBL_&#8203;MIN</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_MIN"></a><a href="#CL_DBL_MIN"><code>CL_DBL_<wbr>MIN</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum value of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_EPSILON"></a><a href="#CL_DBL_EPSILON"><code>CL_&#8203;DBL_&#8203;EPSILON</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DBL_EPSILON"></a><a href="#CL_DBL_EPSILON"><code>CL_DBL_<wbr>EPSILON</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.
 Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Minimum positive floating-point number of type <code>cl_double</code> such that
-    <code>1.0 +  <a href="#CL_DBL_EPSILON"><code>CL_&#8203;DBL_&#8203;EPSILON</code></a> != 1</code> is true.</p></td>
+    <code>1.0 +  <a href="#CL_DBL_EPSILON"><code>CL_DBL_<wbr>EPSILON</code></a> != 1</code> is true.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_NAN"></a><a href="#CL_NAN"><code>CL_&#8203;NAN</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_NAN"></a><a href="#CL_NAN"><code>CL_NAN</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Macro expanding to a value representing NaN</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_HUGE_VALF"></a><a href="#CL_HUGE_VALF"><code>CL_&#8203;HUGE_&#8203;VALF</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_HUGE_VALF"></a><a href="#CL_HUGE_VALF"><code>CL_HUGE_<wbr>VALF</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Largest representative value of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_HUGE_VAL"></a><a href="#CL_HUGE_VAL"><code>CL_&#8203;HUGE_&#8203;VAL</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_HUGE_VAL"></a><a href="#CL_HUGE_VAL"><code>CL_HUGE_<wbr>VAL</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Largest representative value of type <code>cl_double</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAXFLOAT"></a><a href="#CL_MAXFLOAT"><code>CL_&#8203;MAXFLOAT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAXFLOAT"></a><a href="#CL_MAXFLOAT"><code>CL_MAXFLOAT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum value of type <code>cl_float</code></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INFINITY"></a><a href="#CL_INFINITY"><code>CL_&#8203;INFINITY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INFINITY"></a><a href="#CL_INFINITY"><code>CL_INFINITY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Macro expanding to a value representing infinity</p></td>
 </tr>
@@ -24571,7 +24358,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="check-copy-overlap">Appendix D: Checking for Memory Copy Overlap</h2>
+<h2 id="check-copy-overlap"><a class="anchor" href="#check-copy-overlap"></a>Appendix D: Checking for Memory Copy Overlap</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The following code describes how to determine if there is overlap between
@@ -24646,14 +24433,14 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="changes_to_opencl">Appendix E: Changes to OpenCL</h2>
+<h2 id="changes_to_opencl"><a class="anchor" href="#changes_to_opencl"></a>Appendix E: Changes to OpenCL</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Changes to the OpenCL API and OpenCL C between successive versions are
 summarized below.</p>
 </div>
 <div class="sect2">
-<h3 id="_summary_of_changes_from_opencl_1_0_to_opencl_1_1">Summary of changes from OpenCL 1.0 to OpenCL 1.1</h3>
+<h3 id="_summary_of_changes_from_opencl_1_0_to_opencl_1_1"><a class="anchor" href="#_summary_of_changes_from_opencl_1_0_to_opencl_1_1"></a>Summary of changes from OpenCL 1.0 to OpenCL 1.1</h3>
 <div class="paragraph">
 <p>The following features are added to the OpenCL 1.1 platform layer and
 runtime (<em>sections 4 and 5</em>):</p>
@@ -24665,29 +24452,29 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;CHAR</code></a>,
-<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;SHORT</code></a>,
-<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_INT"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;INT</code></a>,
-<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;LONG</code></a>,
-<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;FLOAT</code></a>,
-<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;DOUBLE</code></a>,
-<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"><code>CL_&#8203;DEVICE_&#8203;NATIVE_&#8203;VECTOR_&#8203;WIDTH_&#8203;HALF</code></a></p>
+<p><a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>CHAR</code></a>,
+<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>SHORT</code></a>,
+<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_INT"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>INT</code></a>,
+<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>LONG</code></a>,
+<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>FLOAT</code></a>,
+<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>DOUBLE</code></a>,
+<a href="#CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"><code>CL_DEVICE_<wbr>NATIVE_<wbr>VECTOR_<wbr>WIDTH_<wbr>HALF</code></a></p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_HOST_UNIFIED_MEMORY"><code>CL_&#8203;DEVICE_&#8203;HOST_&#8203;UNIFIED_&#8203;MEMORY</code></a></p>
+<p><a href="#CL_DEVICE_HOST_UNIFIED_MEMORY"><code>CL_DEVICE_<wbr>HOST_<wbr>UNIFIED_<wbr>MEMORY</code></a></p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;VERSION</code></a></p>
+<p><a href="#CL_DEVICE_OPENCL_C_VERSION"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>VERSION</code></a></p>
 </li>
 </ul>
 </div>
 </li>
 <li>
-<p><a href="#CL_CONTEXT_NUM_DEVICES"><code>CL_&#8203;CONTEXT_&#8203;NUM_&#8203;DEVICES</code></a> to the list of queries specified to
+<p><a href="#CL_CONTEXT_NUM_DEVICES"><code>CL_CONTEXT_<wbr>NUM_<wbr>DEVICES</code></a> to the list of queries specified to
 <a href="#clGetContextInfo"><strong>clGetContextInfo</strong></a>.</p>
 </li>
 <li>
-<p>Optional image formats: <a href="#CL_Rx"><code>CL_&#8203;Rx</code></a>, <a href="#CL_RGx"><code>CL_&#8203;RGx</code></a>, and <a href="#CL_RGBx"><code>CL_&#8203;RGBx</code></a>.</p>
+<p>Optional image formats: <a href="#CL_Rx"><code>CL_Rx</code></a>, <a href="#CL_RGx"><code>CL_RGx</code></a>, and <a href="#CL_RGBx"><code>CL_RGBx</code></a>.</p>
 </li>
 <li>
 <p>Support for sub-buffer objects ability to create a buffer object that
@@ -24709,7 +24496,7 @@
 when building a program executable.</p>
 </li>
 <li>
-<p><a href="#CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_&#8203;KERNEL_&#8203;PREFERRED_&#8203;WORK_&#8203;GROUP_&#8203;SIZE_&#8203;MULTIPLE</code></a> to the list of queries
+<p><a href="#CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_KERNEL_<wbr>PREFERRED_<wbr>WORK_<wbr>GROUP_<wbr>SIZE_<wbr>MULTIPLE</code></a> to the list of queries
 specified to <a href="#clGetKernelWorkGroupInfo"><strong>clGetKernelWorkGroupInfo</strong></a>.</p>
 </li>
 <li>
@@ -24736,10 +24523,12 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_DEVICE_MAX_PARAMETER_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;PARAMETER_&#8203;SIZE</code></a> from 256 to 1024 bytes</p>
+<p>The minimum FULL_PROFILE value for <a href="#CL_DEVICE_MAX_PARAMETER_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>PARAMETER_<wbr>SIZE</code></a>
+increased from 256 to 1024 bytes</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_LOCAL_MEM_SIZE"><code>CL_&#8203;DEVICE_&#8203;LOCAL_&#8203;MEM_&#8203;SIZE</code></a> from 16 KB to 32 KB.</p>
+<p>The minimum FULL_PROFILE value for <a href="#CL_DEVICE_LOCAL_MEM_SIZE"><code>CL_DEVICE_<wbr>LOCAL_<wbr>MEM_<wbr>SIZE</code></a> increased
+from 16 KB to 32 KB.</p>
 </li>
 </ul>
 </div>
@@ -24767,23 +24556,23 @@
 <div class="ulist">
 <ul>
 <li>
-<p><strong>get_global_offset</strong> work-item function defined in section <em>6.12.1</em>.</p>
+<p><strong>get_global_offset</strong> work-item function defined in section <em>6.15.1</em>.</p>
 </li>
 <li>
-<p><strong>minmag</strong>, <strong>maxmag</strong> math functions defined in section <em>6.12.2</em>.</p>
+<p><strong>minmag</strong>, <strong>maxmag</strong> math functions defined in section <em>6.15.2</em>.</p>
 </li>
 <li>
-<p><strong>clamp</strong> integer function defined in <em>section 6.12.3</em>.</p>
+<p><strong>clamp</strong> integer function defined in <em>section 6.15.3</em>.</p>
 </li>
 <li>
 <p>(vector, scalar) variant of integer functions <strong>min</strong> and <strong>max</strong> in
 <em>section 6.12.3</em>.</p>
 </li>
 <li>
-<p><strong>async_work_group_strided_copy</strong> defined in section <em>6.12.10</em>.</p>
+<p><strong>async_work_group_strided_copy</strong> defined in section <em>6.15.11</em>.</p>
 </li>
 <li>
-<p><strong>vec_step</strong>, <strong>shuffle</strong> and <strong>shuffle2</strong> defined in section <em>6.12.12</em>.</p>
+<p><strong>vec_step</strong>, <strong>shuffle</strong> and <strong>shuffle2</strong> defined in section <em>6.15.13</em>.</p>
 </li>
 </ul>
 </div>
@@ -24854,7 +24643,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_summary_of_changes_from_opencl_1_1_to_opencl_1_2">Summary of changes from OpenCL 1.1 to OpenCL 1.2</h3>
+<h3 id="_summary_of_changes_from_opencl_1_1_to_opencl_1_2"><a class="anchor" href="#_summary_of_changes_from_opencl_1_1_to_opencl_1_2"></a>Summary of changes from OpenCL 1.1 to OpenCL 1.2</h3>
 <div class="paragraph">
 <p>The following features are added to the OpenCL 1.2 platform layer and
 runtime (<em>sections 4 and 5</em>):</p>
@@ -24864,12 +24653,12 @@
 <li>
 <p>Custom devices and built-in kernels are supported.
 <a href="#clCreateProgramWithBuiltInKernels"><strong>clCreateProgramWithBuiltInKernels</strong></a> has been added to allow creation of
-<em>cl_program</em> using built-in kernels.</p>
+a <code>cl_program</code> using built-in kernels.</p>
 </li>
 <li>
 <p>Device partitioning that allows a device to be partitioned based on a
 number of partitioning schemes supported by the device.  This is done by
-using <a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a> to create a new <em>cl_device_id</em> based on a
+using <a href="#clCreateSubDevices"><strong>clCreateSubDevices</strong></a> to create a new <code>cl_device_<wbr>id</code> based on a
 partitioning.</p>
 </li>
 <li>
@@ -24877,16 +24666,16 @@
 <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> separately.</p>
 </li>
 <li>
-<p>Extend <em>cl_mem_flags</em> to describe how the host accesses the data in a
-cl_mem object.</p>
+<p>Extend <code>cl_mem_<wbr>flags</code> to describe how the host accesses the data in a
+<code>cl_mem</code> object.</p>
 </li>
 <li>
 <p><a href="#clEnqueueFillBuffer"><strong>clEnqueueFillBuffer</strong></a> and <a href="#clEnqueueFillImage"><strong>clEnqueueFillImage</strong></a> to support filling a
 buffer with a pattern or an image with a color.</p>
 </li>
 <li>
-<p>Add <a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_&#8203;MAP_&#8203;WRITE_&#8203;INVALIDATE_&#8203;REGION</code></a> to <em>cl_map_flags</em>.
-Appropriate clarification to the behavior of <a href="#CL_MAP_WRITE"><code>CL_&#8203;MAP_&#8203;WRITE</code></a> has been added
+<p>Add <a href="#CL_MAP_WRITE_INVALIDATE_REGION"><code>CL_MAP_<wbr>WRITE_<wbr>INVALIDATE_<wbr>REGION</code></a> to <code>cl_map_<wbr>flags</code>.
+Appropriate clarification to the behavior of <a href="#CL_MAP_WRITE"><code>CL_MAP_<wbr>WRITE</code></a> has been added
 to the spec.</p>
 </li>
 <li>
@@ -24921,7 +24710,7 @@
 </li>
 <li>
 <p><a href="#clUnloadPlatformCompiler"><strong>clUnloadPlatformCompiler</strong></a> to request that a single platform&#8217;s compiler is
-unloaded.  This is compatible with the <code>cl_khr_icd</code> extension if that is
+unloaded.  This is compatible with the <strong>cl_khr_icd</strong> extension if that is
 supported, unlike <a href="#clUnloadCompiler"><strong>clUnloadCompiler</strong></a>.</p>
 </li>
 </ul>
@@ -24937,8 +24726,8 @@
 extension.</p>
 </li>
 <li>
-<p>New built in image types: <strong>image1d_t</strong>, <strong>image1d_array_t</strong> and
-<strong>image2d_array_t</strong> .</p>
+<p>New built in image types: <strong>image1d_t</strong>, <strong>image1d_buffer_t</strong>,
+<strong>image1d_array_t</strong>, and <strong>image2d_array_t</strong>.</p>
 </li>
 <li>
 <p>New built-in functions</p>
@@ -24946,23 +24735,23 @@
 <ul>
 <li>
 <p>Functions to read from and write to a 1D image, 1D and 2D image arrays
-described in <em>sections 6.12.14.2</em>, <em>6.12.14.3</em> and <em>6.12.14.4</em>.</p>
+described in <em>sections 6.15.15.2</em>, <em>6.15.15.3</em> and <em>6.15.15.4</em>.</p>
 </li>
 <li>
-<p>Sampler-less image read functions described in <em>section 6.12.14.3</em>.</p>
+<p>Sampler-less image read functions described in <em>section 6.15.15.3</em>.</p>
 </li>
 <li>
-<p><strong>popcount</strong> integer function described in <em>section 6.12.3</em>.</p>
+<p><strong>popcount</strong> integer function described in <em>section 6.15.3</em>.</p>
 </li>
 <li>
-<p><strong>printf</strong> function described in <em>section 6.12.13</em>.</p>
+<p><strong>printf</strong> function described in <em>section 6.15.14</em>.</p>
 </li>
 </ul>
 </div>
 </li>
 <li>
 <p>Storage class specifiers extern and static as described in <em>section
-6.8</em>.</p>
+6.10</em>.</p>
 </li>
 <li>
 <p>Macros <code>CL_VERSION_1_2</code> and <code>__OPENCL_C_VERSION__</code>.</p>
@@ -24991,7 +24780,7 @@
 <li>
 <p><a href="#clUnloadCompiler"><strong>clUnloadCompiler</strong></a> and <a href="#clGetExtensionFunctionAddress"><strong>clGetExtensionFunctionAddress</strong></a> APIs are deprecated.
 The <a href="#clUnloadPlatformCompiler"><strong>clUnloadPlatformCompiler</strong></a> and <a href="#clGetExtensionFunctionAddressForPlatform"><strong>clGetExtensionFunctionAddressForPlatform</strong></a>
-APIs provide equivalent functionality are compatible with the <code>cl_khr_icd</code>
+APIs provide equivalent functionality are compatible with the <strong>cl_khr_icd</strong>
 extension.</p>
 </li>
 </ul>
@@ -25002,15 +24791,15 @@
 <div class="ulist">
 <ul>
 <li>
-<p>The <a href="#CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE"><code>CL_&#8203;DEVICE_&#8203;MIN_&#8203;DATA_&#8203;TYPE_&#8203;ALIGN_&#8203;SIZE</code></a> query is deprecated.
+<p>The <a href="#CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE"><code>CL_DEVICE_<wbr>MIN_<wbr>DATA_<wbr>TYPE_<wbr>ALIGN_<wbr>SIZE</code></a> query is deprecated.
 The minimum data type alignment can be derived from
-<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a>.</p>
+<a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a>.</p>
 </li>
 </ul>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_summary_of_changes_from_opencl_1_2_to_opencl_2_0">Summary of changes from OpenCL 1.2 to OpenCL 2.0</h3>
+<h3 id="_summary_of_changes_from_opencl_1_2_to_opencl_2_0"><a class="anchor" href="#_summary_of_changes_from_opencl_1_2_to_opencl_2_0"></a>Summary of changes from OpenCL 1.2 to OpenCL 2.0</h3>
 <div class="paragraph">
 <p>The following features are added to the OpenCL 2.0 platform layer and
 runtime (<em>sections 4 and 5</em>):</p>
@@ -25107,7 +24896,7 @@
 <p>C1x atomics.</p>
 </li>
 <li>
-<p>New built-in functions (sections 6.13.9, 6.13.11, 6.13.15 and 6.14).</p>
+<p>New built-in functions (sections 6.15.10, 6.15.12, and 6.15.16).</p>
 </li>
 <li>
 <p>Support images with the read_write qualifier.</p>
@@ -25116,7 +24905,7 @@
 <p>3D image writes are a core feature.</p>
 </li>
 <li>
-<p>The <code>CL_VERSION_2_0</code> macro.</p>
+<p>The <code>CL_VERSION_2_0</code> and <code>NULL</code> macros.</p>
 </li>
 </ul>
 </div>
@@ -25151,19 +24940,19 @@
 <div class="ulist">
 <ul>
 <li>
-<p>The <a href="#CL_DEVICE_HOST_UNIFIED_MEMORY"><code>CL_&#8203;DEVICE_&#8203;HOST_&#8203;UNIFIED_&#8203;MEMORY</code></a> query is deprecated.
+<p>The <a href="#CL_DEVICE_HOST_UNIFIED_MEMORY"><code>CL_DEVICE_<wbr>HOST_<wbr>UNIFIED_<wbr>MEMORY</code></a> query is deprecated.
 This query was purely informational and had different meanings
 for different implementations.
 Its use is no longer recommended.</p>
 </li>
 <li>
-<p>The <a href="#CL_IMAGE_BUFFER"><code>CL_&#8203;IMAGE_&#8203;BUFFER</code></a> query has been deprecated to simplify the API.
-The <a href="#CL_MEM_ASSOCIATED_MEMOBJECT"><code>CL_&#8203;MEM_&#8203;ASSOCIATED_&#8203;MEMOBJECT</code></a> query provides equivalent
+<p>The <a href="#CL_IMAGE_BUFFER"><code>CL_IMAGE_<wbr>BUFFER</code></a> query has been deprecated to simplify the API.
+The <a href="#CL_MEM_ASSOCIATED_MEMOBJECT"><code>CL_MEM_<wbr>ASSOCIATED_<wbr>MEMOBJECT</code></a> query provides equivalent
 functionality.</p>
 </li>
 <li>
-<p>The <a href="#CL_DEVICE_QUEUE_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;PROPERTIES</code></a> query has been deprecated and
-replaced by <a href="#CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;HOST_&#8203;PROPERTIES</code></a>.</p>
+<p>The <a href="#CL_DEVICE_QUEUE_PROPERTIES"><code>CL_DEVICE_<wbr>QUEUE_<wbr>PROPERTIES</code></a> query has been deprecated and
+replaced by <a href="#CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>HOST_<wbr>PROPERTIES</code></a>.</p>
 </li>
 <li>
 <p>Atomics and Fences</p>
@@ -25174,14 +24963,18 @@
 OpenCL 1.2 specification have been deprecated to simplify the
 programming language.
 The <strong>atomic_work_item_fence</strong> function provides equivalent
-functionality.</p>
+functionality.
+The deprecated functions are still described in section 6.15.9 of this
+specification.</p>
 </li>
 <li>
 <p>The Atomic Functions defined in section 6.12.11 of the OpenCL 1.2
 specification have been deprecated to simplify the programming
 language.
 The <strong>atomic_fetch</strong> and modify functions provide equivalent
-functionality.</p>
+functionality.
+The deprecated functions are still described in section 6.15.12.8 of this
+specification.</p>
 </li>
 </ul>
 </div>
@@ -25190,7 +24983,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_summary_of_changes_from_opencl_2_0_to_opencl_2_1">Summary of changes from OpenCL 2.0 to OpenCL 2.1</h3>
+<h3 id="_summary_of_changes_from_opencl_2_0_to_opencl_2_1"><a class="anchor" href="#_summary_of_changes_from_opencl_2_0_to_opencl_2_1"></a>Summary of changes from OpenCL 2.0 to OpenCL 2.1</h3>
 <div class="paragraph">
 <p>The following features are added to the OpenCL 2.1 platform layer and
 runtime (<em>sections 4 and 5</em>):</p>
@@ -25201,7 +24994,7 @@
 <p><a href="#clGetKernelSubGroupInfo"><strong>clGetKernelSubGroupInfo</strong></a> API call.</p>
 </li>
 <li>
-<p><a href="#CL_KERNEL_MAX_NUM_SUB_GROUPS"><code>CL_&#8203;KERNEL_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code></a>, <a href="#CL_KERNEL_COMPILE_NUM_SUB_GROUPS"><code>CL_&#8203;KERNEL_&#8203;COMPILE_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code></a>
+<p><a href="#CL_KERNEL_MAX_NUM_SUB_GROUPS"><code>CL_KERNEL_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a>, <a href="#CL_KERNEL_COMPILE_NUM_SUB_GROUPS"><code>CL_KERNEL_<wbr>COMPILE_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a>
 additions to table 5.21 of the API specification.</p>
 </li>
 <li>
@@ -25220,25 +25013,25 @@
 <p><a href="#clSetDefaultDeviceCommandQueue"><strong>clSetDefaultDeviceCommandQueue</strong></a> API call.</p>
 </li>
 <li>
-<p><a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_&#8203;PLATFORM_&#8203;HOST_&#8203;TIMER_&#8203;RESOLUTION</code></a> added to table 4.1 of the API
+<p><a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_PLATFORM_<wbr>HOST_<wbr>TIMER_<wbr>RESOLUTION</code></a> added to table 4.1 of the API
 specification.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_IL_VERSION"><code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION</code></a>, <a href="#CL_DEVICE_MAX_NUM_SUB_GROUPS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code></a>,
-<a href="#CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"><code>CL_&#8203;DEVICE_&#8203;SUB_&#8203;GROUP_&#8203;INDEPENDENT_&#8203;FORWARD_&#8203;PROGRESS</code></a> added to table 4.3 of
+<p><a href="#CL_DEVICE_IL_VERSION"><code>CL_DEVICE_<wbr>IL_<wbr>VERSION</code></a>, <a href="#CL_DEVICE_MAX_NUM_SUB_GROUPS"><code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a>,
+<a href="#CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"><code>CL_DEVICE_<wbr>SUB_<wbr>GROUP_<wbr>INDEPENDENT_<wbr>FORWARD_<wbr>PROGRESS</code></a> added to table 4.3 of
 the API specification.</p>
 </li>
 <li>
-<p><a href="#CL_PROGRAM_IL"><code>CL_&#8203;PROGRAM_&#8203;IL</code></a> to table 5.17 of the API specification.</p>
+<p><a href="#CL_PROGRAM_IL"><code>CL_PROGRAM_<wbr>IL</code></a> to table 5.17 of the API specification.</p>
 </li>
 <li>
-<p><a href="#CL_QUEUE_DEVICE_DEFAULT"><code>CL_&#8203;QUEUE_&#8203;DEVICE_&#8203;DEFAULT</code></a> added to table 5.2 of the API specification.</p>
+<p><a href="#CL_QUEUE_DEVICE_DEFAULT"><code>CL_QUEUE_<wbr>DEVICE_<wbr>DEFAULT</code></a> added to table 5.2 of the API specification.</p>
 </li>
 <li>
 <p>Added table 5.22 to the API specification with the enums:
-<a href="#CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"><code>CL_&#8203;KERNEL_&#8203;MAX_&#8203;SUB_&#8203;GROUP_&#8203;SIZE_&#8203;FOR_&#8203;NDRANGE</code></a>,
-<a href="#CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE"><code>CL_&#8203;KERNEL_&#8203;SUB_&#8203;GROUP_&#8203;COUNT_&#8203;FOR_&#8203;NDRANGE</code></a> and
-<a href="#CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT"><code>CL_&#8203;KERNEL_&#8203;LOCAL_&#8203;SIZE_&#8203;FOR_&#8203;SUB_&#8203;GROUP_&#8203;COUNT</code></a></p>
+<a href="#CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"><code>CL_KERNEL_<wbr>MAX_<wbr>SUB_<wbr>GROUP_<wbr>SIZE_<wbr>FOR_<wbr>NDRANGE</code></a>,
+<a href="#CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE"><code>CL_KERNEL_<wbr>SUB_<wbr>GROUP_<wbr>COUNT_<wbr>FOR_<wbr>NDRANGE</code></a> and
+<a href="#CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT"><code>CL_KERNEL_<wbr>LOCAL_<wbr>SIZE_<wbr>FOR_<wbr>SUB_<wbr>GROUP_<wbr>COUNT</code></a></p>
 </li>
 </ul>
 </div>
@@ -25266,7 +25059,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_summary_of_changes_from_opencl_2_1_to_opencl_2_2">Summary of changes from OpenCL 2.1 to OpenCL 2.2</h3>
+<h3 id="_summary_of_changes_from_opencl_2_1_to_opencl_2_2"><a class="anchor" href="#_summary_of_changes_from_opencl_2_1_to_opencl_2_2"></a>Summary of changes from OpenCL 2.1 to OpenCL 2.2</h3>
 <div class="paragraph">
 <p>The following changes have been made to the OpenCL 2.2 execution model
 (section 3)</p>
@@ -25292,8 +25085,8 @@
 <p><a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a> API call</p>
 </li>
 <li>
-<p>Queries for <a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_&#8203;PROGRAM_&#8203;SCOPE_&#8203;GLOBAL_&#8203;CTORS_&#8203;PRESENT</code></a> and
-<a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_&#8203;PROGRAM_&#8203;SCOPE_&#8203;GLOBAL_&#8203;DTORS_&#8203;PRESENT</code></a></p>
+<p>Queries for <a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>CTORS_<wbr>PRESENT</code></a> and
+<a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>DTORS_<wbr>PRESENT</code></a></p>
 </li>
 </ul>
 </div>
@@ -25304,10 +25097,10 @@
 <div class="ulist">
 <ul>
 <li>
-<p>Modified description of <a href="#CL_DEVICE_MAX_CLOCK_FREQUENCY"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;CLOCK_&#8203;FREQUENCY</code></a> query.</p>
+<p>Modified description of <a href="#CL_DEVICE_MAX_CLOCK_FREQUENCY"><code>CL_DEVICE_<wbr>MAX_<wbr>CLOCK_<wbr>FREQUENCY</code></a> query.</p>
 </li>
 <li>
-<p>Added a new error code <a href="#CL_MAX_SIZE_RESTRICTION_EXCEEDED"><code>CL_&#8203;MAX_&#8203;SIZE_&#8203;RESTRICTION_&#8203;EXCEEDED</code></a> to
+<p>Added a new error code <a href="#CL_MAX_SIZE_RESTRICTION_EXCEEDED"><code>CL_MAX_<wbr>SIZE_<wbr>RESTRICTION_<wbr>EXCEEDED</code></a> to
 <a href="#clSetKernelArg"><strong>clSetKernelArg</strong></a> API call</p>
 </li>
 </ul>
@@ -25318,7 +25111,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_summary_of_changes_from_opencl_2_2_to_opencl_3_0">Summary of changes from OpenCL 2.2 to OpenCL 3.0</h3>
+<h3 id="_summary_of_changes_from_opencl_2_2_to_opencl_3_0"><a class="anchor" href="#_summary_of_changes_from_opencl_2_2_to_opencl_3_0"></a>Summary of changes from OpenCL 2.2 to OpenCL 3.0</h3>
 <div class="paragraph">
 <p>OpenCL 3.0 is a major revision that breaks backwards compatibility with
 previous versions of OpenCL, see
@@ -25332,33 +25125,33 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code></a> and
-<a href="#CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code></a> to determine the
+<p><a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code></a> and
+<a href="#CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code></a> to determine the
 atomic memory and atomic fence capabilities of a device.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;NON_&#8203;UNIFORM_&#8203;WORK_&#8203;GROUP_&#8203;SUPPORT</code></a> to
+<p><a href="#CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"><code>CL_DEVICE_<wbr>NON_<wbr>UNIFORM_<wbr>WORK_<wbr>GROUP_<wbr>SUPPORT</code></a> to
 determine if a device supports non-uniform work group sizes.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;WORK_&#8203;GROUP_&#8203;COLLECTIVE_&#8203;FUNCTIONS_&#8203;SUPPORT</code></a>
+<p><a href="#CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"><code>CL_DEVICE_<wbr>WORK_<wbr>GROUP_<wbr>COLLECTIVE_<wbr>FUNCTIONS_<wbr>SUPPORT</code></a>
 to determine whether a device supports optional work group
 collective functions, such as broadcasts, scans, and reductions.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;GENERIC_&#8203;ADDRESS_&#8203;SPACE_&#8203;SUPPORT</code></a> to
+<p><a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_DEVICE_<wbr>GENERIC_<wbr>ADDRESS_<wbr>SPACE_<wbr>SUPPORT</code></a> to
 determine whether a device supports the generic address space.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_DEVICE_ENQUEUE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;DEVICE_&#8203;ENQUEUE_&#8203;SUPPORT</code></a> to determine whether a device
-supports device queues and device-side enqueue.</p>
+<p><a href="#CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES"><code>CL_DEVICE_<wbr>DEVICE_<wbr>ENQUEUE_<wbr>CAPABILITIES</code></a> to determine the device-side enqueue
+capabilities of a device.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;SUPPORT</code></a> to determine whether a device supports
+<p><a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_DEVICE_<wbr>PIPE_<wbr>SUPPORT</code></a> to determine whether a device supports
 pipe memory objects.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_&#8203;DEVICE_&#8203;PREFERRED_&#8203;WORK_&#8203;GROUP_&#8203;SIZE_&#8203;MULTIPLE</code></a> to determine the
+<p><a href="#CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"><code>CL_DEVICE_<wbr>PREFERRED_<wbr>WORK_<wbr>GROUP_<wbr>SIZE_<wbr>MULTIPLE</code></a> to determine the
 the preferred work-group size multiple for a device.</p>
 </li>
 </ul>
@@ -25370,34 +25163,48 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_PLATFORM_NUMERIC_VERSION"><code>CL_&#8203;PLATFORM_&#8203;NUMERIC_&#8203;VERSION</code></a> to describe the platform
+<p><a href="#CL_PLATFORM_NUMERIC_VERSION"><code>CL_PLATFORM_<wbr>NUMERIC_<wbr>VERSION</code></a> to describe the platform
 version as a numeric value.</p>
 </li>
 <li>
-<p><a href="#CL_PLATFORM_EXTENSIONS_WITH_VERSION"><code>CL_&#8203;PLATFORM_&#8203;EXTENSIONS_&#8203;WITH_&#8203;VERSION</code></a> to describe supported
+<p><a href="#CL_PLATFORM_EXTENSIONS_WITH_VERSION"><code>CL_PLATFORM_<wbr>EXTENSIONS_<wbr>WITH_<wbr>VERSION</code></a> to describe supported
 platform extensions and their supported version.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_NUMERIC_VERSION"><code>CL_&#8203;DEVICE_&#8203;NUMERIC_&#8203;VERSION</code></a> to describe the device version
+<p><a href="#CL_DEVICE_NUMERIC_VERSION"><code>CL_DEVICE_<wbr>NUMERIC_<wbr>VERSION</code></a> to describe the device version
 as a numeric value.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_EXTENSIONS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS_&#8203;WITH_&#8203;VERSION</code></a> to describe supported
+<p><a href="#CL_DEVICE_EXTENSIONS_WITH_VERSION"><code>CL_DEVICE_<wbr>EXTENSIONS_<wbr>WITH_<wbr>VERSION</code></a> to describe supported
 device extensions and their supported version.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;ILS_&#8203;WITH_&#8203;VERSION</code></a> to describe supported
+<p><a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_DEVICE_<wbr>ILS_<wbr>WITH_<wbr>VERSION</code></a> to describe supported
 intermediate languages (ILs) and their supported version.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;BUILT_&#8203;IN_&#8203;KERNELS_&#8203;WITH_&#8203;VERSION</code></a> to describe supported
+<p><a href="#CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION"><code>CL_DEVICE_<wbr>BUILT_<wbr>IN_<wbr>KERNELS_<wbr>WITH_<wbr>VERSION</code></a> to describe supported
 built-in kernels and their supported version.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
+<p>OpenCL 3.0 adds a new API to register a function that will be called
+when a context is destroyed, enabling an application to safely free
+user data associated with a context callback function.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#clSetContextDestructorCallback"><strong>clSetContextDestructorCallback</strong></a></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
 <p>OpenCL 3.0 adds two new APIs to support creating buffer and image
-memory objects with additional properties:</p>
+memory objects with additional properties.
+Although no new properties are added in OpenCL 3.0, these APIs enable
+new buffer and image extensions to be added easily and consistently:</p>
 </div>
 <div class="ulist">
 <ul>
@@ -25416,16 +25223,35 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_MEM_PROPERTIES"><code>CL_&#8203;MEM_&#8203;PROPERTIES</code></a></p>
+<p><a href="#CL_MEM_PROPERTIES"><code>CL_MEM_<wbr>PROPERTIES</code></a></p>
 </li>
 <li>
-<p><a href="#CL_PIPE_PROPERTIES"><code>CL_&#8203;PIPE_&#8203;PROPERTIES</code></a></p>
+<p><a href="#CL_PIPE_PROPERTIES"><code>CL_PIPE_<wbr>PROPERTIES</code></a></p>
 </li>
 <li>
-<p><a href="#CL_SAMPLER_PROPERTIES"><code>CL_&#8203;SAMPLER_&#8203;PROPERTIES</code></a></p>
+<p><a href="#CL_SAMPLER_PROPERTIES"><code>CL_SAMPLER_<wbr>PROPERTIES</code></a></p>
 </li>
 <li>
-<p><a href="#CL_QUEUE_PROPERTIES_ARRAY"><code>CL_&#8203;QUEUE_&#8203;PROPERTIES_&#8203;ARRAY</code></a></p>
+<p><a href="#CL_QUEUE_PROPERTIES_ARRAY"><code>CL_QUEUE_<wbr>PROPERTIES_<wbr>ARRAY</code></a></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Program initialization and clean-up kernels are not supported in OpenCL
+3.0 due to implementation complexity and lack of demand.
+The following APIs and queries for program initialization and clean-up
+kernels are deprecated in OpenCL 3.0:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>CTORS_<wbr>PRESENT</code></a></p>
+</li>
+<li>
+<p><a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>DTORS_<wbr>PRESENT</code></a></p>
+</li>
+<li>
+<p><a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a></p>
 </li>
 </ul>
 </div>
@@ -25435,29 +25261,47 @@
 Please refer to the OpenCL C specification for details.</p>
 </div>
 <div class="paragraph">
+<p>Scalar input arguments to the <strong>any</strong> and <strong>all</strong> built-in functions have
+been deprecated in the OpenCL 3.0 C kernel language.
+These functions behaved inconsistently with the C language&#8217;s use of
+scalar integers as logical values.</p>
+</div>
+<div class="paragraph">
 <p>OpenCL 3.0 adds new queries to determine supported OpenCL C language
 versions and supported OpenCL C features:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;ALL_&#8203;VERSIONS</code></a> to determine the set
+<p><a href="#CL_DEVICE_OPENCL_C_ALL_VERSIONS"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>ALL_<wbr>VERSIONS</code></a> to determine the set
 of OpenCL C language versions supported by a device.</p>
 </li>
 <li>
-<p><a href="#CL_DEVICE_OPENCL_C_FEATURES"><code>CL_&#8203;DEVICE_&#8203;OPENCL_&#8203;C_&#8203;FEATURES</code></a> to determine
+<p><a href="#CL_DEVICE_OPENCL_C_FEATURES"><code>CL_DEVICE_<wbr>OPENCL_<wbr>C_<wbr>FEATURES</code></a> to determine
 optional OpenCL C language features supported by a device.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>Finally, OpenCL 3.0 adds an event command type to identify events
+<p>OpenCL 3.0 adds an event command type to identify events
 associated with the OpenCL 2.1 command <a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a>:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="#CL_COMMAND_SVM_MIGRATE_MEM"><code>CL_&#8203;COMMAND_&#8203;SVM_&#8203;MIGRATE_&#8203;MEM</code></a></p>
+<p><a href="#CL_COMMAND_SVM_MIGRATE_MEM"><code>CL_COMMAND_<wbr>SVM_<wbr>MIGRATE_<wbr>MEM</code></a></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>OpenCL 3.0 adds a new query to determine the latest version of the conformance
+test suite that the device has fully passed in accordance with the official
+conformance process:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED"><code>CL_DEVICE_<wbr>LATEST_<wbr>CONFORMANCE_<wbr>VERSION_<wbr>PASSED</code></a></p>
 </li>
 </ul>
 </div>
@@ -25465,7 +25309,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="error_codes">Appendix F: Error Codes</h2>
+<h2 id="error_codes"><a class="anchor" href="#error_codes"></a>Appendix F: Error Codes</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section lists OpenCL error codes and their meanings.</p>
@@ -25483,271 +25327,271 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SUCCESS"></a><a href="#CL_SUCCESS"><code>CL_&#8203;SUCCESS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_SUCCESS"></a><a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This is a special error code to indicate that the API executed successfully, without errors.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_BUILD_PROGRAM_FAILURE"></a><a href="#CL_BUILD_PROGRAM_FAILURE"><code>CL_&#8203;BUILD_&#8203;PROGRAM_&#8203;FAILURE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_BUILD_PROGRAM_FAILURE"></a><a href="#CL_BUILD_PROGRAM_FAILURE"><code>CL_BUILD_<wbr>PROGRAM_<wbr>FAILURE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> failed to build the specified program.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMPILE_PROGRAM_FAILURE"></a><a href="#CL_COMPILE_PROGRAM_FAILURE"><code>CL_&#8203;COMPILE_&#8203;PROGRAM_&#8203;FAILURE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMPILE_PROGRAM_FAILURE"></a><a href="#CL_COMPILE_PROGRAM_FAILURE"><code>CL_COMPILE_<wbr>PROGRAM_<wbr>FAILURE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> failed to compile the specified program.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMPILER_NOT_AVAILABLE"></a><a href="#CL_COMPILER_NOT_AVAILABLE"><code>CL_&#8203;COMPILER_&#8203;NOT_&#8203;AVAILABLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when compiling or building a program from source or IL when <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;COMPILER_&#8203;AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_COMPILER_NOT_AVAILABLE"></a><a href="#CL_COMPILER_NOT_AVAILABLE"><code>CL_COMPILER_<wbr>NOT_<wbr>AVAILABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when compiling or building a program from source or IL when <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NOT_FOUND"></a><a href="#CL_DEVICE_NOT_FOUND"><code>CL_&#8203;DEVICE_&#8203;NOT_&#8203;FOUND</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NOT_FOUND"></a><a href="#CL_DEVICE_NOT_FOUND"><code>CL_DEVICE_<wbr>NOT_<wbr>FOUND</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when no devices were found that match the specified device type.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NOT_AVAILABLE"></a><a href="#CL_DEVICE_NOT_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;NOT_&#8203;AVAILABLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to use a device when <a href="#CL_DEVICE_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_NOT_AVAILABLE"></a><a href="#CL_DEVICE_NOT_AVAILABLE"><code>CL_DEVICE_<wbr>NOT_<wbr>AVAILABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to use a device when <a href="#CL_DEVICE_AVAILABLE"><code>CL_DEVICE_<wbr>AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_FAILED"></a><a href="#CL_DEVICE_PARTITION_FAILED"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;FAILED</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_DEVICE_PARTITION_FAILED"></a><a href="#CL_DEVICE_PARTITION_FAILED"><code>CL_DEVICE_<wbr>PARTITION_<wbr>FAILED</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when device partitioning is supported but the device could not be further partitioned.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"></a><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_&#8203;EXEC_&#8203;STATUS_&#8203;ERROR_&#8203;FOR_&#8203;EVENTS_&#8203;IN_&#8203;WAIT_&#8203;LIST</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"></a><a href="#CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"><code>CL_EXEC_<wbr>STATUS_<wbr>ERROR_<wbr>FOR_<wbr>EVENTS_<wbr>IN_<wbr>WAIT_<wbr>LIST</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned by blocking APIs when an event in the event wait list has a negative value, indicating it is in an error state.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_FORMAT_MISMATCH"></a><a href="#CL_IMAGE_FORMAT_MISMATCH"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;MISMATCH</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_FORMAT_MISMATCH"></a><a href="#CL_IMAGE_FORMAT_MISMATCH"><code>CL_IMAGE_<wbr>FORMAT_<wbr>MISMATCH</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to copy images that do not use the same image format.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_FORMAT_NOT_SUPPORTED"></a><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_&#8203;IMAGE_&#8203;FORMAT_&#8203;NOT_&#8203;SUPPORTED</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_IMAGE_FORMAT_NOT_SUPPORTED"></a><a href="#CL_IMAGE_FORMAT_NOT_SUPPORTED"><code>CL_IMAGE_<wbr>FORMAT_<wbr>NOT_<wbr>SUPPORTED</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to create or use an image format that is not supported.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_ARG_INDEX"></a><a href="#CL_INVALID_ARG_INDEX"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;INDEX</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_ARG_INDEX"></a><a href="#CL_INVALID_ARG_INDEX"><code>CL_INVALID_<wbr>ARG_<wbr>INDEX</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to get or set a kernel argument using an invalid index for the specified kernel.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_ARG_SIZE"></a><a href="#CL_INVALID_ARG_SIZE"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_ARG_SIZE"></a><a href="#CL_INVALID_ARG_SIZE"><code>CL_INVALID_<wbr>ARG_<wbr>SIZE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified size of a kernel argument does not match the size of the kernel argument.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_ARG_VALUE"></a><a href="#CL_INVALID_ARG_VALUE"><code>CL_&#8203;INVALID_&#8203;ARG_&#8203;VALUE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_ARG_VALUE"></a><a href="#CL_INVALID_ARG_VALUE"><code>CL_INVALID_<wbr>ARG_<wbr>VALUE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to set a kernel argument that is not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_BINARY"></a><a href="#CL_INVALID_BINARY"><code>CL_&#8203;INVALID_&#8203;BINARY</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_BINARY"></a><a href="#CL_INVALID_BINARY"><code>CL_INVALID_<wbr>BINARY</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a program binary is not valid for a device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_BUFFER_SIZE"></a><a href="#CL_INVALID_BUFFER_SIZE"><code>CL_&#8203;INVALID_&#8203;BUFFER_&#8203;SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_BUFFER_SIZE"></a><a href="#CL_INVALID_BUFFER_SIZE"><code>CL_INVALID_<wbr>BUFFER_<wbr>SIZE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to create a buffer or a sub-buffer with an invalid size.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_BUILD_OPTIONS"></a><a href="#CL_INVALID_BUILD_OPTIONS"><code>CL_&#8203;INVALID_&#8203;BUILD_&#8203;OPTIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_BUILD_OPTIONS"></a><a href="#CL_INVALID_BUILD_OPTIONS"><code>CL_INVALID_<wbr>BUILD_<wbr>OPTIONS</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when build options passed to <a href="#clBuildProgram"><strong>clBuildProgram</strong></a> are not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_COMMAND_QUEUE"></a><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_&#8203;INVALID_&#8203;COMMAND_&#8203;QUEUE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_COMMAND_QUEUE"></a><a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified command queue is not a valid command queue.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_COMPILER_OPTIONS"></a><a href="#CL_INVALID_COMPILER_OPTIONS"><code>CL_&#8203;INVALID_&#8203;COMPILER_&#8203;OPTIONS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_COMPILER_OPTIONS"></a><a href="#CL_INVALID_COMPILER_OPTIONS"><code>CL_INVALID_<wbr>COMPILER_<wbr>OPTIONS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when compiler options passed to <a href="#clCompileProgram"><strong>clCompileProgram</strong></a> are not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_CONTEXT"></a><a href="#CL_INVALID_CONTEXT"><code>CL_&#8203;INVALID_&#8203;CONTEXT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_CONTEXT"></a><a href="#CL_INVALID_CONTEXT"><code>CL_INVALID_<wbr>CONTEXT</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a specified context is not a valid context, or when mixing objects from multiple contexts.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE"></a><a href="#CL_INVALID_DEVICE"><code>CL_&#8203;INVALID_&#8203;DEVICE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE"></a><a href="#CL_INVALID_DEVICE"><code>CL_INVALID_<wbr>DEVICE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a specified device is not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE_PARTITION_COUNT"></a><a href="#CL_INVALID_DEVICE_PARTITION_COUNT"><code>CL_&#8203;INVALID_&#8203;DEVICE_&#8203;PARTITION_&#8203;COUNT</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE_PARTITION_COUNT"></a><a href="#CL_INVALID_DEVICE_PARTITION_COUNT"><code>CL_INVALID_<wbr>DEVICE_<wbr>PARTITION_<wbr>COUNT</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the requested device partitioning using <a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_&#8203;DEVICE_&#8203;PARTITION_&#8203;BY_&#8203;COUNTS</code></a> is not valid.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the requested device partitioning using <a href="#CL_DEVICE_PARTITION_BY_COUNTS"><code>CL_DEVICE_<wbr>PARTITION_<wbr>BY_<wbr>COUNTS</code></a> is not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE_QUEUE"></a><a href="#CL_INVALID_DEVICE_QUEUE"><code>CL_&#8203;INVALID_&#8203;DEVICE_&#8203;QUEUE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE_QUEUE"></a><a href="#CL_INVALID_DEVICE_QUEUE"><code>CL_INVALID_<wbr>DEVICE_<wbr>QUEUE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when setting a device queue kernel argument to a value that is not a valid device command queue.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE_TYPE"></a><a href="#CL_INVALID_DEVICE_TYPE"><code>CL_&#8203;INVALID_&#8203;DEVICE_&#8203;TYPE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_DEVICE_TYPE"></a><a href="#CL_INVALID_DEVICE_TYPE"><code>CL_INVALID_<wbr>DEVICE_<wbr>TYPE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the requested device type is not a valid value.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_EVENT"></a><a href="#CL_INVALID_EVENT"><code>CL_&#8203;INVALID_&#8203;EVENT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_EVENT"></a><a href="#CL_INVALID_EVENT"><code>CL_INVALID_<wbr>EVENT</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a specified event object is not a valid event object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_EVENT_WAIT_LIST"></a><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_&#8203;INVALID_&#8203;EVENT_&#8203;WAIT_&#8203;LIST</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_EVENT_WAIT_LIST"></a><a href="#CL_INVALID_EVENT_WAIT_LIST"><code>CL_INVALID_<wbr>EVENT_<wbr>WAIT_<wbr>LIST</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified event wait list or number of events in the wait list is not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_GLOBAL_OFFSET"></a><a href="#CL_INVALID_GLOBAL_OFFSET"><code>CL_&#8203;INVALID_&#8203;GLOBAL_&#8203;OFFSET</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_GLOBAL_OFFSET"></a><a href="#CL_INVALID_GLOBAL_OFFSET"><code>CL_INVALID_<wbr>GLOBAL_<wbr>OFFSET</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified global offset and global work size exceeds the limits of the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_GLOBAL_WORK_SIZE"></a><a href="#CL_INVALID_GLOBAL_WORK_SIZE"><code>CL_&#8203;INVALID_&#8203;GLOBAL_&#8203;WORK_&#8203;SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_GLOBAL_WORK_SIZE"></a><a href="#CL_INVALID_GLOBAL_WORK_SIZE"><code>CL_INVALID_<wbr>GLOBAL_<wbr>WORK_<wbr>SIZE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified global work size exceeds the limits of the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_HOST_PTR"></a><a href="#CL_INVALID_HOST_PTR"><code>CL_&#8203;INVALID_&#8203;HOST_&#8203;PTR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_HOST_PTR"></a><a href="#CL_INVALID_HOST_PTR"><code>CL_INVALID_<wbr>HOST_<wbr>PTR</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified host pointer is not valid for the specified flags.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_IMAGE_DESCRIPTOR"></a><a href="#CL_INVALID_IMAGE_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;DESCRIPTOR</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_IMAGE_DESCRIPTOR"></a><a href="#CL_INVALID_IMAGE_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>DESCRIPTOR</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified image descriptor is <code>NULL</code> or specifies invalid values.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"></a><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;FORMAT_&#8203;DESCRIPTOR</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"></a><a href="#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"><code>CL_INVALID_<wbr>IMAGE_<wbr>FORMAT_<wbr>DESCRIPTOR</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified image format descriptor is <code>NULL</code> or specifies invalid value.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_IMAGE_SIZE"></a><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_&#8203;INVALID_&#8203;IMAGE_&#8203;SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_IMAGE_SIZE"></a><a href="#CL_INVALID_IMAGE_SIZE"><code>CL_INVALID_<wbr>IMAGE_<wbr>SIZE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified image dimensions exceed the maximum dimensions for a device or all devices in a context.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL"></a><a href="#CL_INVALID_KERNEL"><code>CL_&#8203;INVALID_&#8203;KERNEL</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL"></a><a href="#CL_INVALID_KERNEL"><code>CL_INVALID_<wbr>KERNEL</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified kernel is not a valid kernel.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL_ARGS"></a><a href="#CL_INVALID_KERNEL_ARGS"><code>CL_&#8203;INVALID_&#8203;KERNEL_&#8203;ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL_ARGS"></a><a href="#CL_INVALID_KERNEL_ARGS"><code>CL_INVALID_<wbr>KERNEL_<wbr>ARGS</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when enqueing a kernel when some kernel arguments have not been set or are invalid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL_DEFINITION"></a><a href="#CL_INVALID_KERNEL_DEFINITION"><code>CL_&#8203;INVALID_&#8203;KERNEL_&#8203;DEFINITION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL_DEFINITION"></a><a href="#CL_INVALID_KERNEL_DEFINITION"><code>CL_INVALID_<wbr>KERNEL_<wbr>DEFINITION</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when creating a kernel for multiple devices where the number of kernel arguments or kernel argument types are not the same for all devices.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL_NAME"></a><a href="#CL_INVALID_KERNEL_NAME"><code>CL_&#8203;INVALID_&#8203;KERNEL_&#8203;NAME</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_KERNEL_NAME"></a><a href="#CL_INVALID_KERNEL_NAME"><code>CL_INVALID_<wbr>KERNEL_<wbr>NAME</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when creating a kernel when no kernel with the specified name exists in the program object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_LINKER_OPTIONS"></a><a href="#CL_INVALID_LINKER_OPTIONS"><code>CL_&#8203;INVALID_&#8203;LINKER_&#8203;OPTIONS</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_LINKER_OPTIONS"></a><a href="#CL_INVALID_LINKER_OPTIONS"><code>CL_INVALID_<wbr>LINKER_<wbr>OPTIONS</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when build options passed to <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> are not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_MEM_OBJECT"></a><a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_MEM_OBJECT"></a><a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a specified memory object is not a valid memory object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_OPERATION"></a><a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_OPERATION"></a><a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This is a generic error code that is returned when the requested operation is not a valid operation.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PIPE_SIZE"></a><a href="#CL_INVALID_PIPE_SIZE"><code>CL_&#8203;INVALID_&#8203;PIPE_&#8203;SIZE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PIPE_SIZE"></a><a href="#CL_INVALID_PIPE_SIZE"><code>CL_INVALID_<wbr>PIPE_<wbr>SIZE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.0.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when attempting to create a pipe with an invalid packet size or number of packets.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PLATFORM"></a><a href="#CL_INVALID_PLATFORM"><code>CL_&#8203;INVALID_&#8203;PLATFORM</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PLATFORM"></a><a href="#CL_INVALID_PLATFORM"><code>CL_INVALID_<wbr>PLATFORM</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified platform is not a valid platform.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PROGRAM"></a><a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PROGRAM"></a><a href="#CL_INVALID_PROGRAM"><code>CL_INVALID_<wbr>PROGRAM</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a specified program is not a valid program object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PROGRAM_EXECUTABLE"></a><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_&#8203;INVALID_&#8203;PROGRAM_&#8203;EXECUTABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PROGRAM_EXECUTABLE"></a><a href="#CL_INVALID_PROGRAM_EXECUTABLE"><code>CL_INVALID_<wbr>PROGRAM_<wbr>EXECUTABLE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified program is valid but has not been successfully built.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PROPERTY"></a><a href="#CL_INVALID_PROPERTY"><code>CL_&#8203;INVALID_&#8203;PROPERTY</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_PROPERTY"></a><a href="#CL_INVALID_PROPERTY"><code>CL_INVALID_<wbr>PROPERTY</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a specified property name is invalid, when the value for a property name is invalid, or when the same property name is specified more than once.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_QUEUE_PROPERTIES"></a><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_&#8203;INVALID_&#8203;QUEUE_&#8203;PROPERTIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_QUEUE_PROPERTIES"></a><a href="#CL_INVALID_QUEUE_PROPERTIES"><code>CL_INVALID_<wbr>QUEUE_<wbr>PROPERTIES</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when specified queue properties are valid but are not supported by the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_SAMPLER"></a><a href="#CL_INVALID_SAMPLER"><code>CL_&#8203;INVALID_&#8203;SAMPLER</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_SAMPLER"></a><a href="#CL_INVALID_SAMPLER"><code>CL_INVALID_<wbr>SAMPLER</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a specified sampler is not a valid sampler object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_SPEC_ID"></a><a href="#CL_INVALID_SPEC_ID"><code>CL_&#8203;INVALID_&#8203;SPEC_&#8203;ID</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_SPEC_ID"></a><a href="#CL_INVALID_SPEC_ID"><code>CL_INVALID_<wbr>SPEC_<wbr>ID</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the specified specialization constant ID is not valid for the specified program.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_VALUE"></a><a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_VALUE"></a><a href="#CL_INVALID_VALUE"><code>CL_INVALID_<wbr>VALUE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This is a generic error that is returned when a specified value is not a valid value.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_WORK_DIMENSION"></a><a href="#CL_INVALID_WORK_DIMENSION"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;DIMENSION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_WORK_DIMENSION"></a><a href="#CL_INVALID_WORK_DIMENSION"><code>CL_INVALID_<wbr>WORK_<wbr>DIMENSION</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> when the specified work dimension is not valid.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_WORK_GROUP_SIZE"></a><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;GROUP_&#8203;SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_WORK_GROUP_SIZE"></a><a href="#CL_INVALID_WORK_GROUP_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>GROUP_<wbr>SIZE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> when the specified total work group size is not valid for the specified kernel or device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_WORK_ITEM_SIZE"></a><a href="#CL_INVALID_WORK_ITEM_SIZE"><code>CL_&#8203;INVALID_&#8203;WORK_&#8203;ITEM_&#8203;SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_INVALID_WORK_ITEM_SIZE"></a><a href="#CL_INVALID_WORK_ITEM_SIZE"><code>CL_INVALID_<wbr>WORK_<wbr>ITEM_<wbr>SIZE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a> when the specified work group size in one dimension is not valid for the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_INFO_NOT_AVAILABLE"></a><a href="#CL_KERNEL_ARG_INFO_NOT_AVAILABLE"><code>CL_&#8203;KERNEL_&#8203;ARG_&#8203;INFO_&#8203;NOT_&#8203;AVAILABLE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_KERNEL_ARG_INFO_NOT_AVAILABLE"></a><a href="#CL_KERNEL_ARG_INFO_NOT_AVAILABLE"><code>CL_KERNEL_<wbr>ARG_<wbr>INFO_<wbr>NOT_<wbr>AVAILABLE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clGetKernelArgInfo"><strong>clGetKernelArgInfo</strong></a> when kernel argument information is not available for the specified kernel.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LINK_PROGRAM_FAILURE"></a><a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_&#8203;LINK_&#8203;PROGRAM_&#8203;FAILURE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LINK_PROGRAM_FAILURE"></a><a href="#CL_LINK_PROGRAM_FAILURE"><code>CL_LINK_<wbr>PROGRAM_<wbr>FAILURE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> when there is a failure to link the specified binaries or libraries.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LINKER_NOT_AVAILABLE"></a><a href="#CL_LINKER_NOT_AVAILABLE"><code>CL_&#8203;LINKER_&#8203;NOT_&#8203;AVAILABLE</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_LINKER_NOT_AVAILABLE"></a><a href="#CL_LINKER_NOT_AVAILABLE"><code>CL_LINKER_<wbr>NOT_<wbr>AVAILABLE</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> when <a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_&#8203;DEVICE_&#8203;LINKER_&#8203;AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clLinkProgram"><strong>clLinkProgram</strong></a> when <a href="#CL_DEVICE_LINKER_AVAILABLE"><code>CL_DEVICE_<wbr>LINKER_<wbr>AVAILABLE</code></a> is <a href="#CL_FALSE"><code>CL_FALSE</code></a>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_FAILURE"></a><a href="#CL_MAP_FAILURE"><code>CL_&#8203;MAP_&#8203;FAILURE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAP_FAILURE"></a><a href="#CL_MAP_FAILURE"><code>CL_MAP_<wbr>FAILURE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when there is a failure to map the specified region into the host address space.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_COPY_OVERLAP"></a><a href="#CL_MEM_COPY_OVERLAP"><code>CL_&#8203;MEM_&#8203;COPY_&#8203;OVERLAP</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_COPY_OVERLAP"></a><a href="#CL_MEM_COPY_OVERLAP"><code>CL_MEM_<wbr>COPY_<wbr>OVERLAP</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when copying from one region of a memory object to another where the source and destination regions overlap.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_ALLOCATION_FAILURE"></a><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;ALLOCATION_&#8203;FAILURE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MEM_OBJECT_ALLOCATION_FAILURE"></a><a href="#CL_MEM_OBJECT_ALLOCATION_FAILURE"><code>CL_MEM_<wbr>OBJECT_<wbr>ALLOCATION_<wbr>FAILURE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when there is a failure to allocate memory for a memory object.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MISALIGNED_SUB_BUFFER_OFFSET"></a><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_&#8203;MISALIGNED_&#8203;SUB_&#8203;BUFFER_&#8203;OFFSET</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MISALIGNED_SUB_BUFFER_OFFSET"></a><a href="#CL_MISALIGNED_SUB_BUFFER_OFFSET"><code>CL_MISALIGNED_<wbr>SUB_<wbr>BUFFER_<wbr>OFFSET</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.1.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a sub-buffer object is created or used that is not aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_&#8203;DEVICE_&#8203;MEM_&#8203;BASE_&#8203;ADDR_&#8203;ALIGN</code></a> for the device.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returned when a sub-buffer object is created or used that is not aligned to <a href="#CL_DEVICE_MEM_BASE_ADDR_ALIGN"><code>CL_DEVICE_<wbr>MEM_<wbr>BASE_<wbr>ADDR_<wbr>ALIGN</code></a> for the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_OUT_OF_HOST_MEMORY"></a><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_OUT_OF_HOST_MEMORY"></a><a href="#CL_OUT_OF_HOST_MEMORY"><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This is a generic error that is returned when memory could not be allocated on the host.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_OUT_OF_RESOURCES"></a><a href="#CL_OUT_OF_RESOURCES"><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_OUT_OF_RESOURCES"></a><a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">This is a generic error that is returned when resources could not be allocated on the device.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAX_SIZE_RESTRICTION_EXCEEDED"></a><a href="#CL_MAX_SIZE_RESTRICTION_EXCEEDED"><code>CL_&#8203;MAX_&#8203;SIZE_&#8203;RESTRICTION_&#8203;EXCEEDED</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_MAX_SIZE_RESTRICTION_EXCEEDED"></a><a href="#CL_MAX_SIZE_RESTRICTION_EXCEEDED"><code>CL_MAX_<wbr>SIZE_<wbr>RESTRICTION_<wbr>EXCEEDED</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 2.2.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returned when the size of the specified kernel argument value exceeds the maximum size defined for the kernel argument.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_INFO_NOT_AVAILABLE"></a><a href="#CL_PROFILING_INFO_NOT_AVAILABLE"><code>CL_&#8203;PROFILING_&#8203;INFO_&#8203;NOT_&#8203;AVAILABLE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clGetEventProfilingInfo"><strong>clGetEventProfilingInfo</strong></a> when the command associated with the specified event was not enqueued into a command queue with <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_&#8203;QUEUE_&#8203;PROFILING_&#8203;ENABLE</code></a>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_PROFILING_INFO_NOT_AVAILABLE"></a><a href="#CL_PROFILING_INFO_NOT_AVAILABLE"><code>CL_PROFILING_<wbr>INFO_<wbr>NOT_<wbr>AVAILABLE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returned by <a href="#clGetEventProfilingInfo"><strong>clGetEventProfilingInfo</strong></a> when the command associated with the specified event was not enqueued into a command queue with <a href="#CL_QUEUE_PROFILING_ENABLE"><code>CL_QUEUE_<wbr>PROFILING_<wbr>ENABLE</code></a>.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 </div>
 <div class="sect1">
-<h2 id="error_other_misc_enums">Appendix G: Other Miscellaneous Enums</h2>
+<h2 id="error_other_misc_enums"><a class="anchor" href="#error_other_misc_enums"></a>Appendix G: Other Miscellaneous Enums</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section lists other miscellaneous OpenCL enumerants and their meanings.</p>
@@ -25765,27 +25609,27 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_TRUE"></a><a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_TRUE"></a><a href="#CL_TRUE"><code>CL_TRUE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Indicates a boolean "true" value.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FALSE"></a><a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_FALSE"></a><a href="#CL_FALSE"><code>CL_FALSE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Indicates a boolean "false" value.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_NONE"></a><a href="#CL_NONE"><code>CL_&#8203;NONE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_NONE"></a><a href="#CL_NONE"><code>CL_NONE</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that none of the other enumerations or conditions are applicable.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_BLOCKING"></a><a href="#CL_BLOCKING"><code>CL_&#8203;BLOCKING</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_BLOCKING"></a><a href="#CL_BLOCKING"><code>CL_BLOCKING</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Alias of <a href="#CL_TRUE"><code>CL_&#8203;TRUE</code></a> that can be used to improve the readability of calls to
+<td class="tableblock halign-left valign-top"><p class="tableblock">Alias of <a href="#CL_TRUE"><code>CL_TRUE</code></a> that can be used to improve the readability of calls to
 enqueue functions that can block.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_NON_BLOCKING"></a><a href="#CL_NON_BLOCKING"><code>CL_&#8203;NON_&#8203;BLOCKING</code></a></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a id="CL_NON_BLOCKING"></a><a href="#CL_NON_BLOCKING"><code>CL_NON_<wbr>BLOCKING</code></a></p>
 <p class="tableblock"><a href="#unified-spec">Missing before</a> version 1.2.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Alias of <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> that can be used to improve the readability of calls to
+<td class="tableblock halign-left valign-top"><p class="tableblock">Alias of <a href="#CL_FALSE"><code>CL_FALSE</code></a> that can be used to improve the readability of calls to
 enqueue function that can block.</p></td>
 </tr>
 </tbody>
@@ -25793,14 +25637,14 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="opencl-3.0-backwards-compatibility">Appendix H: OpenCL 3.0 Backwards Compatibility</h2>
+<h2 id="opencl-3.0-backwards-compatibility"><a class="anchor" href="#opencl-3.0-backwards-compatibility"></a>Appendix H: OpenCL 3.0 Backwards Compatibility</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>OpenCL 3.0 breaks backwards compatibility with earlier versions of OpenCL by making some features that were previously required for FULL_PROFILE or EMBEDDED_PROFILE devices optional.
 This appendix describes the features that were previously required that are now optional, how to detect whether an optional feature is supported, and expected behavior when an optional feature is not supported.</p>
 </div>
 <div class="sect2">
-<h3 id="_shared_virtual_memory_2">Shared Virtual Memory</h3>
+<h3 id="_shared_virtual_memory_2"><a class="anchor" href="#_shared_virtual_memory_2"></a>Shared Virtual Memory</h3>
 <div class="paragraph">
 <p>Shared Virtual Memory (SVM) is optional for devices supporting OpenCL 3.0.
 When Shared Virtual Memory is not supported:</p>
@@ -25819,13 +25663,13 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_SVM_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;SVM_&#8203;CAPABILITIES</code></a></p></td>
+<a href="#CL_DEVICE_SVM_CAPABILITIES"><code>CL_DEVICE_<wbr>SVM_<wbr>CAPABILITIES</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support Shared Virtual Memory.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetMemObjectInfo"><strong>clGetMemObjectInfo</strong></a>, passing<br>
-<a href="#CL_MEM_USES_SVM_POINTER"><code>CL_&#8203;MEM_&#8203;USES_&#8203;SVM_&#8203;POINTER</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if no devices in the context associated with <em>memobj</em> support Shared Virtual Memory.</p></td>
+<a href="#CL_MEM_USES_SVM_POINTER"><code>CL_MEM_<wbr>USES_<wbr>SVM_<wbr>POINTER</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_FALSE"><code>CL_FALSE</code></a> if no devices in the context associated with <em>memobj</em> support Shared Virtual Memory.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clSVMAlloc"><strong>clSVMAlloc</strong></a></p></td>
@@ -25842,18 +25686,18 @@
   <a href="#clEnqueueSVMMap"><strong>clEnqueueSVMMap</strong></a>,<br>
   <a href="#clEnqueueSVMUnmap"><strong>clEnqueueSVMUnmap</strong></a>,<br>
   <a href="#clEnqueueSVMMigrateMem"><strong>clEnqueueSVMMigrateMem</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the device associated with <em>command_queue</em> does not support Shared Virtual Memory.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the device associated with <em>command_queue</em> does not support Shared Virtual Memory.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clSetKernelArgSVMPointer"><strong>clSetKernelArgSVMPointer</strong></a>,<br>
   <a href="#clSetKernelExecInfo"><strong>clSetKernelExecInfo</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in the context associated with <em>kernel</em> support Shared Virtual Memory.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in the context associated with <em>kernel</em> support Shared Virtual Memory.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_memory_consistency_model">Memory Consistency Model</h3>
+<h3 id="_memory_consistency_model"><a class="anchor" href="#_memory_consistency_model"></a>Memory Consistency Model</h3>
 <div class="paragraph">
 <p>Some aspects of the OpenCL memory consistency model are optional for devices supporting OpenCL 3.0.
 New device queries were added to <a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a> to allow capabilities to be precisely reported.
@@ -25873,35 +25717,35 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code></a></p></td>
+<a href="#CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">May return:</p>
-<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code></a></p>
+<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code></a></p>
 <p class="tableblock">indicating that <em>device</em> does not support the full memory consistency model for atomic memory operations.</p>
 <p class="tableblock">Note that a device that provides the same level of capabilities as an OpenCL 2.x device would be expected to return:</p>
-<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;ACQ_&#8203;REL</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_ORDER_SEQ_CST"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;SEQ_&#8203;CST</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_DEVICE"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;DEVICE</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;ALL_&#8203;DEVICES</code></a></p></td>
+<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>ACQ_<wbr>REL</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_ORDER_SEQ_CST"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>SEQ_<wbr>CST</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_DEVICE"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>DEVICE</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>ALL_<wbr>DEVICES</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code></a></p></td>
+<a href="#CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code></a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">May return:</p>
-<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;ACQ_&#8203;REL</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code></a></p>
+<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>ACQ_<wbr>REL</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code></a></p>
 <p class="tableblock">indicating that <em>device</em> does not support the full memory consistency model for atomic fence operations.</p>
 <p class="tableblock">Note that a device that provides the same level of capabilities as an OpenCL 2.x device would be expected to return:</p>
-<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;ACQ_&#8203;REL</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_ORDER_SEQ_CST"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;SEQ_&#8203;CST</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;ITEM</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_DEVICE"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;DEVICE</code></a> |<br>
-<a href="#CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"><code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;ALL_&#8203;DEVICES</code></a></p></td>
+<p class="tableblock"><a href="#CL_DEVICE_ATOMIC_ORDER_RELAXED"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_ORDER_ACQ_REL"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>ACQ_<wbr>REL</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_ORDER_SEQ_CST"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>SEQ_<wbr>CST</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>ITEM</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_DEVICE"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>DEVICE</code></a> |<br>
+<a href="#CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES"><code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>ALL_<wbr>DEVICES</code></a></p></td>
 </tr>
 </tbody>
 </table>
@@ -25909,32 +25753,28 @@
 <p>OpenCL C compilers supporting atomics orders or scopes beyond the mandated
 minimum will define some or all of following feature macros as appropriate:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><code>__opencl_c_atomic_order_acq_rel</code>&#8201;&#8212;&#8201;Indicating atomic operations support acquire-release orderings.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><code>__opencl_c_atomic_order_seq_cst</code>&#8201;&#8212;&#8201;Indicating atomic operations and fences support acquire sequentially consistent orderings.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><code>__opencl_c_atomic_scope_device</code>&#8201;&#8212;&#8201;Indicating atomic operations and fences support device-wide memory ordering constraints.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><code>__opencl_c_atomic_scope_all_devices</code>&#8201;&#8212;&#8201;Indicating atomic operations and fences support all-device memory ordering constraints, across any host threads and all devices that can share SVM memory with each other and the host process.</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_device_side_enqueue">Device-Side Enqueue</h3>
+<h3 id="_device_side_enqueue"><a class="anchor" href="#_device_side_enqueue"></a>Device-Side Enqueue</h3>
 <div class="paragraph">
-<p>Device-Side Enqueue and On-Device Queues are optional for devices supporting OpenCL 3.0.
-When Device-Side Enqueue is not supported:</p>
+<p>Device-side enqueue and on-device queues are optional for devices supporting OpenCL 3.0.
+When device-side enqueue is not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -25950,49 +25790,45 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_DEVICE_ENQUEUE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;DEVICE_&#8203;ENQUEUE_&#8203;SUPPORT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, indicating that <em>device</em> does not support Device-Side Enqueue and On-Device Queues.</p></td>
+<a href="#CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES"><code>CL_DEVICE_<wbr>DEVICE_<wbr>ENQUEUE_<wbr>CAPABILITIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support device-side enqueue and on-device queues.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;PROPERTIES</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support Device-Side Enqueue and On-Device Queues.</p></td>
+<a href="#CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>PROPERTIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support device-side enqueue and on-device queues.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;PREFERRED_&#8203;SIZE</code></a>,<br>
-<a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_&#8203;DEVICE_&#8203;QUEUE_&#8203;ON_&#8203;DEVICE_&#8203;MAX_&#8203;SIZE</code></a>,<br>
-<a href="#CL_DEVICE_MAX_ON_DEVICE_QUEUES"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;ON_&#8203;DEVICE_&#8203;QUEUES</code></a>, or<br>
-<a href="#CL_DEVICE_MAX_ON_DEVICE_EVENTS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;ON_&#8203;DEVICE_&#8203;EVENTS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support Device-Side Enqueue and On-Device Queues.</p></td>
+<a href="#CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>PREFERRED_<wbr>SIZE</code></a>,<br>
+<a href="#CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"><code>CL_DEVICE_<wbr>QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>MAX_<wbr>SIZE</code></a>,<br>
+<a href="#CL_DEVICE_MAX_ON_DEVICE_QUEUES"><code>CL_DEVICE_<wbr>MAX_<wbr>ON_<wbr>DEVICE_<wbr>QUEUES</code></a>, or<br>
+<a href="#CL_DEVICE_MAX_ON_DEVICE_EVENTS"><code>CL_DEVICE_<wbr>MAX_<wbr>ON_<wbr>DEVICE_<wbr>EVENTS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support device-side enqueue and on-device queues.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetCommandQueueInfo"><strong>clGetCommandQueueInfo</strong></a>, passing<br>
-<a href="#CL_QUEUE_SIZE"><code>CL_&#8203;QUEUE_&#8203;SIZE</code></a> or<br>
-<a href="#CL_QUEUE_DEVICE_DEFAULT"><code>CL_&#8203;QUEUE_&#8203;DEVICE_&#8203;DEFAULT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> or <code>NULL</code> if the device associated with <em>command_queue</em> does not support On-Device Queues.</p></td>
+<a href="#CL_QUEUE_SIZE"><code>CL_QUEUE_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_COMMAND_QUEUE"><code>CL_INVALID_<wbr>COMMAND_<wbr>QUEUE</code></a> since <em>command_queue</em> cannot be a valid device command-queue.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetCommandQueueInfo"><strong>clGetCommandQueueInfo</strong></a>, passing<br>
+<a href="#CL_QUEUE_DEVICE_DEFAULT"><code>CL_QUEUE_<wbr>DEVICE_<wbr>DEFAULT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>NULL</code> if the device associated with <em>command_queue</em> does not support on-device queues.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetEventProfilingInfo"><strong>clGetEventProfilingInfo</strong></a>, passing<br>
-<a href="#CL_PROFILING_COMMAND_COMPLETE"><code>CL_&#8203;PROFILING_&#8203;COMMAND_&#8203;COMPLETE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns a value equivalent to passing <a href="#CL_PROFILING_COMMAND_END"><code>CL_&#8203;PROFILING_&#8203;COMMAND_&#8203;END</code></a> if the device associated with <em>event</em> does not support On-Device Enqueue.</p></td>
+<a href="#CL_PROFILING_COMMAND_COMPLETE"><code>CL_PROFILING_<wbr>COMMAND_<wbr>COMPLETE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns a value equivalent to passing <a href="#CL_PROFILING_COMMAND_END"><code>CL_PROFILING_<wbr>COMMAND_<wbr>END</code></a> if the device associated with <em>event</em> does not support device-side enqueue.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clSetDefaultDeviceCommandQueue"><strong>clSetDefaultDeviceCommandQueue</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>device</em> does not support On-Device Queues.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>device</em> does not support on-device queues.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting Device-Side Enqueue and On-Device Queues will define the feature macro <code>__opencl_c_device_enqueue</code>.
-OpenCL C compilers that define the feature macro <code>__opencl_c_device_enqueue</code> must also define the feature macro <code>__opencl_c_generic_address_space</code> because some OpenCL C functions for Device-Side Enqueue accept pointers to the generic address space.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_pipes_2">Pipes</h3>
-<div class="paragraph">
-<p>Pipe memory objects are optional for devices supporting OpenCL 3.0.
-When Pipes are not supported:</p>
+<p>When device-side enqueue is supported but a replaceable default on-device queue is not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26008,36 +25844,70 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;SUPPORT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, indicating that <em>device</em> does not support Pipes.</p></td>
+<a href="#CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES"><code>CL_DEVICE_<wbr>DEVICE_<wbr>ENQUEUE_<wbr>CAPABILITIES</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May omit <a href="#CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT"><code>CL_DEVICE_<wbr>QUEUE_<wbr>REPLACEABLE_<wbr>DEFAULT</code></a>, indicating that <em>device</em> does not support a replaceable default on-device queue.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clSetDefaultDeviceCommandQueue"><strong>clSetDefaultDeviceCommandQueue</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>device</em> does not support a replaceable default on-device queue.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>OpenCL C compilers supporting device-side enqueue and on-device queues will define the feature macro <code>__opencl_c_device_enqueue</code>.
+OpenCL C compilers that define the feature macro <code>__opencl_c_device_enqueue</code> must also define the feature macro <code>__opencl_c_generic_address_space</code> because some OpenCL C functions for device-side Enqueue accept pointers to the generic address space.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_pipes_2"><a class="anchor" href="#_pipes_2"></a>Pipes</h3>
+<div class="paragraph">
+<p>Pipe memory objects are optional for devices supporting OpenCL 3.0.
+When pipes are not supported:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>API</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Behavior</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
+<a href="#CL_DEVICE_PIPE_SUPPORT"><code>CL_DEVICE_<wbr>PIPE_<wbr>SUPPORT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_FALSE</code></a>, indicating that <em>device</em> does not support pipes.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_MAX_PIPE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;PIPE_&#8203;ARGS</code></a>,<br>
-<a href="#CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;MAX_&#8203;ACTIVE_&#8203;RESERVATIONS</code></a>, or<br>
-<a href="#CL_DEVICE_PIPE_MAX_PACKET_SIZE"><code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;MAX_&#8203;PACKET_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support Pipes.</p></td>
+<a href="#CL_DEVICE_MAX_PIPE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>PIPE_<wbr>ARGS</code></a>,<br>
+<a href="#CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS"><code>CL_DEVICE_<wbr>PIPE_<wbr>MAX_<wbr>ACTIVE_<wbr>RESERVATIONS</code></a>, or<br>
+<a href="#CL_DEVICE_PIPE_MAX_PACKET_SIZE"><code>CL_DEVICE_<wbr>PIPE_<wbr>MAX_<wbr>PACKET_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support pipes.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clCreatePipe"><strong>clCreatePipe</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in <em>context</em> support Pipes.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in <em>context</em> support pipes.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetPipeInfo"><strong>clGetPipeInfo</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_MEM_OBJECT"><code>CL_&#8203;INVALID_&#8203;MEM_&#8203;OBJECT</code></a> since <em>pipe</em> cannot be a valid pipe object.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_MEM_OBJECT"><code>CL_INVALID_<wbr>MEM_<wbr>OBJECT</code></a> since <em>pipe</em> cannot be a valid pipe object.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting Pipes will define the feature macro <code>__opencl_c_pipes</code>.
-OpenCL C compilers that define the feature macro <code>__opencl_c_pipes</code> must also define the feature macro <code>__opencl_c_generic_address_space</code> because some OpenCL C functions for Pipes accept pointers to the generic address space.</p>
+<p>OpenCL C compilers supporting pipes will define the feature macro <code>__opencl_c_pipes</code>.
+OpenCL C compilers that define the feature macro <code>__opencl_c_pipes</code> must also define the feature macro <code>__opencl_c_generic_address_space</code> because some OpenCL C functions for pipes accept pointers to the generic address space.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_program_scope_global_variables">Program Scope Global Variables</h3>
+<h3 id="_program_scope_global_variables"><a class="anchor" href="#_program_scope_global_variables"></a>Program Scope Global Variables</h3>
 <div class="paragraph">
-<p>Program Scope Global Variables are optional for devices supporting OpenCL 3.0.
-When Program Scope Global Variables are not supported:</p>
+<p>Program scope global variables are optional for devices supporting OpenCL 3.0.
+When program scope global variables are not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26053,30 +25923,30 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;GLOBAL_&#8203;VARIABLE_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May returns <code>0</code>, indicating that <em>device</em> does not support Program Scope Global Variables.</p></td>
+<a href="#CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE"><code>CL_DEVICE_<wbr>MAX_<wbr>GLOBAL_<wbr>VARIABLE_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support program scope global variables.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE"><code>CL_&#8203;DEVICE_&#8203;GLOBAL_&#8203;VARIABLE_&#8203;PREFERRED_&#8203;TOTAL_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support Program Scope Global Variables.</p></td>
+<a href="#CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE"><code>CL_DEVICE_<wbr>GLOBAL_<wbr>VARIABLE_<wbr>PREFERRED_<wbr>TOTAL_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support program scope global variables.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetProgramBuildInfo"><strong>clGetProgramBuildInfo</strong></a>, passing<br>
-<a href="#CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE"><code>CL_&#8203;PROGRAM_&#8203;BUILD_&#8203;GLOBAL_&#8203;VARIABLE_&#8203;TOTAL_&#8203;SIZE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support Program Scope Global Variables.</p></td>
+<a href="#CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE"><code>CL_PROGRAM_<wbr>BUILD_<wbr>GLOBAL_<wbr>VARIABLE_<wbr>TOTAL_<wbr>SIZE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support program scope global variables.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting Program Scope Global Variables will define the feature macro <code>__opencl_c_program_scope_global_variables</code>.</p>
+<p>OpenCL C compilers supporting program scope global variables will define the feature macro <code>__opencl_c_program_scope_global_variables</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_non_uniform_work_groups">Non-Uniform Work Groups</h3>
+<h3 id="_non_uniform_work_groups"><a class="anchor" href="#_non_uniform_work_groups"></a>Non-Uniform Work Groups</h3>
 <div class="paragraph">
-<p>Support for Non-Uniform Work Groups is optional for devices supporting OpenCL 3.0.
-When Non-Uniform Work Groups are not supported:</p>
+<p>Support for non-uniform work groups is optional for devices supporting OpenCL 3.0.
+When non-uniform work groups are not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26092,21 +25962,21 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;NON_&#8203;UNIFORM_&#8203;WORK_&#8203;GROUP_&#8203;SUPPORT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, indicating that <em>device</em> does not support Non-Uniform Work Groups.</p></td>
+<a href="#CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"><code>CL_DEVICE_<wbr>NON_<wbr>UNIFORM_<wbr>WORK_<wbr>GROUP_<wbr>SUPPORT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_FALSE</code></a>, indicating that <em>device</em> does not support non-uniform work groups.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Behaves as though Non-Uniform Work Groups were not enabled for <em>kernel</em>, if the device associated with <em>command_queue</em> does not support Non-Uniform Work Groups.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Behaves as though non-uniform Work Groups were not enabled for <em>kernel</em>, if the device associated with <em>command_queue</em> does not support non-uniform work groups.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_read_write_images">Read-Write Images</h3>
+<h3 id="_read_write_images"><a class="anchor" href="#_read_write_images"></a>Read-Write Images</h3>
 <div class="paragraph">
-<p>Read-Write Images, that may be read from and written to in the same kernel, are optional for devices supporting OpenCL 3.0.
-When Read-Write Images are not supported:</p>
+<p>Read-write images, that may be read from and written to in the same kernel, are optional for devices supporting OpenCL 3.0.
+When read-write images are not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26122,25 +25992,25 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support Read-Write Images.</p></td>
+<a href="#CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support read-write images.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetSupportedImageFormats"><strong>clGetSupportedImageFormats</strong></a>, passing<br>
-<a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_&#8203;MEM_&#8203;KERNEL_&#8203;READ_&#8203;AND_&#8203;WRITE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an empty set (such as <em>num_image_formats</em> equal to <code>0</code>), indicating that no image formats are supported for reading and writing in the same kernel, if no devices in <em>context</em> support Read-Write Images.</p></td>
+<a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_MEM_<wbr>KERNEL_<wbr>READ_<wbr>AND_<wbr>WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an empty set (such as <em>num_image_formats</em> equal to <code>0</code>), indicating that no image formats are supported for reading and writing in the same kernel, if no devices in <em>context</em> support read-write images.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting Read-Write Images will define the feature macro <code>__opencl_c_read_write_images</code>.</p>
+<p>OpenCL C compilers supporting read-write images will define the feature macro <code>__opencl_c_read_write_images</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_creating_2d_images_from_buffers">Creating 2D Images from Buffers</h3>
+<h3 id="_creating_2d_images_from_buffers"><a class="anchor" href="#_creating_2d_images_from_buffers"></a>Creating 2D Images from Buffers</h3>
 <div class="paragraph">
-<p>Creating a 2D Image from a Buffer is optional for devices supporting OpenCL 3.0.
-When Creating a 2D Image from a Buffer is not supported:</p>
+<p>Creating a 2D image from a buffer is optional for devices supporting OpenCL 3.0.
+When creating a 2D image from a buffer is not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26156,42 +26026,80 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_IMAGE_PITCH_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;PITCH_&#8203;ALIGNMENT</code></a> or<br>
-<a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;BASE_&#8203;ADDRESS_&#8203;ALIGNMENT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support Creating a 2D Image from a Buffer.</p></td>
+<a href="#CL_DEVICE_IMAGE_PITCH_ALIGNMENT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>PITCH_<wbr>ALIGNMENT</code></a> or<br>
+<a href="#CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"><code>CL_DEVICE_<wbr>IMAGE_<wbr>BASE_<wbr>ADDRESS_<wbr>ALIGNMENT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support creating a 2D image from a Buffer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_EXTENSIONS"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Will not describe support for the <code>cl_khr_image2d_from_buffer</code> extension if <em>device</em> does not support Creating a 2D Image from a Buffer.</p></td>
+<a href="#CL_DEVICE_EXTENSIONS"><code>CL_DEVICE_<wbr>EXTENSIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Will not describe support for the <code>cl_khr_image2d_from_buffer</code> extension if <em>device</em> does not support creating a 2D image from a buffer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clCreateImage"><strong>clCreateImage</strong></a> or<br>
 <a href="#clCreateImageWithProperties"><strong>clCreateImageWithProperties</strong></a>, passing<br>
-<em>image_type</em> equal to <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE2D</code></a> and<br>
+<em>image_type</em> equal to <a href="#CL_MEM_OBJECT_IMAGE2D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE2D</code></a> and<br>
 <em>mem_object</em> not equal to <code>NULL</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in <em>context</em> support Creating a 2D Image from a Buffer.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in <em>context</em> support creating a 2D image from a buffer.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_srgb_images">sRGB Images</h3>
+<h3 id="_srgb_images"><a class="anchor" href="#_srgb_images"></a>sRGB Images</h3>
 <div class="paragraph">
-<p>All of the sRGB Image Channel Orders (such as <a href="#CL_sRGBA"><code>CL_&#8203;sRGBA</code></a>) are optional for devices supporting OpenCL 3.0.</p>
+<p>All of the sRGB image channel orders (such as <a href="#CL_sRGBA"><code>CL_sRGBA</code></a>) are optional for devices supporting OpenCL 3.0.
+When sRGB images are not supported:</p>
 </div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>API</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Behavior</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetSupportedImageFormats"><strong>clGetSupportedImageFormats</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Will not return return any image formats with <code>image_channel_order</code> equal to an sRGB image channel order if no devices in <em>context</em> support sRGB images.</p></td>
+</tr>
+</tbody>
+</table>
 </div>
 <div class="sect2">
-<h3 id="_depth_images">Depth Images</h3>
+<h3 id="_depth_images"><a class="anchor" href="#_depth_images"></a>Depth Images</h3>
 <div class="paragraph">
-<p>The <a href="#CL_DEPTH"><code>CL_&#8203;DEPTH</code></a> Image Channel Order is optional for devices supporting OpenCL 3.0.</p>
+<p>The <a href="#CL_DEPTH"><code>CL_DEPTH</code></a> image channel order is optional for devices supporting OpenCL 3.0.
+When depth images are not supported:</p>
 </div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>API</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Behavior</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetSupportedImageFormats"><strong>clGetSupportedImageFormats</strong></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Will not return any image formats with <code>image_channel_order</code> equal to <a href="#CL_DEPTH"><code>CL_DEPTH</code></a> if no devices in <em>context</em> support depth images.</p></td>
+</tr>
+</tbody>
+</table>
 </div>
 <div class="sect2">
-<h3 id="_device_and_host_timer_synchronization">Device and Host Timer Synchronization</h3>
+<h3 id="_device_and_host_timer_synchronization"><a class="anchor" href="#_device_and_host_timer_synchronization"></a>Device and Host Timer Synchronization</h3>
 <div class="paragraph">
-<p>Synchronizing the Device and Host Timers is optional for platforms supporting OpenCL 3.0.
-When Device and Host Timer Synchronization is not supported:</p>
+<p>Synchronizing the device and host timers is optional for platforms supporting OpenCL 3.0.
+When device and host timer synchronization is not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26207,22 +26115,22 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetPlatformInfo"><strong>clGetPlatformInfo</strong></a>, passing<br>
-<a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_&#8203;PLATFORM_&#8203;HOST_&#8203;TIMER_&#8203;RESOLUTION</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May returns <code>0</code>, indicating that <em>platform</em> does not support Device and Host Timer Synchronization.</p></td>
+<a href="#CL_PLATFORM_HOST_TIMER_RESOLUTION"><code>CL_PLATFORM_<wbr>HOST_<wbr>TIMER_<wbr>RESOLUTION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>platform</em> does not support device and host timer synchronization.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceAndHostTimer"><strong>clGetDeviceAndHostTimer</strong></a>,
 <a href="#clGetHostTimer"><strong>clGetHostTimer</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if the platform associated with <em>device</em> does not support Device and Host Timer Synchronization.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if the platform associated with <em>device</em> does not support device and host timer synchronization.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_intermediate_language_programs">Intermediate Language Programs</h3>
+<h3 id="_intermediate_language_programs"><a class="anchor" href="#_intermediate_language_programs"></a>Intermediate Language Programs</h3>
 <div class="paragraph">
-<p>Creating Programs from an Intermediate Language (such as SPIR-V) is optional for devices supporting OpenCL 3.0.
-When Intermediate Language Programs are not supported:</p>
+<p>Creating programs from an intermediate language (such as SPIR-V) is optional for devices supporting OpenCL 3.0.
+When intermediate language programs are not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26238,31 +26146,36 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_IL_VERSION"><code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION</code></a> or<br>
-<a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_&#8203;DEVICE_&#8203;ILS_&#8203;WITH_&#8203;VERSION</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return an empty string and empty array, indicating that <em>device</em> does not support Intermediate Language Programs.</p></td>
+<a href="#CL_DEVICE_IL_VERSION"><code>CL_DEVICE_<wbr>IL_<wbr>VERSION</code></a> or<br>
+<a href="#CL_DEVICE_ILS_WITH_VERSION"><code>CL_DEVICE_<wbr>ILS_<wbr>WITH_<wbr>VERSION</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return an empty string and empty array, indicating that <em>device</em> does not support intermediate language programs.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a>, passing<br>
-<a href="#CL_PROGRAM_IL"><code>CL_&#8203;PROGRAM_&#8203;IL</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an empty buffer (such as <em>param_value_size_ret</em> equal to <code>0</code>) if no devices in the context associated with <em>program</em> support Intermediate Language Programs.</p></td>
+<a href="#CL_PROGRAM_IL"><code>CL_PROGRAM_<wbr>IL</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an empty buffer (such as <em>param_value_size_ret</em> equal to <code>0</code>) if no devices in the context associated with <em>program</em> support intermediate language programs.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clCreateProgramWithIL"><strong>clCreateProgramWithIL</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_VALUE"><code>CL_&#8203;INVALID_&#8203;VALUE</code></a> if no devices in <em>context</em> support Intermediate Language Programs.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in <em>context</em> support intermediate language programs.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clSetProgramSpecializationConstant"><strong>clSetProgramSpecializationConstant</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_PROGRAM"><code>CL_&#8203;INVALID_&#8203;PROGRAM</code></a>, since <em>program</em> cannot have been created from an Intermediate Language.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices associated with <em>program</em> support intermediate language programs.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetKernelSubGroupInfo"><strong>clGetKernelSubGroupInfo</strong></a>, passing<br>
+<a href="#CL_KERNEL_COMPILE_NUM_SUB_GROUPS"><code>CL_KERNEL_<wbr>COMPILE_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>0</code> if <em>device</em> does not support intermediate language programs, since there is currently no way to require a number of subgroups per work-group for programs created from source.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_subgroups">Subgroups</h3>
+<h3 id="_subgroups"><a class="anchor" href="#_subgroups"></a>Subgroups</h3>
 <div class="paragraph">
 <p>Subgroups are optional for devices supporting OpenCL 3.0.
-When Subgroups are not supported:</p>
+When subgroups are not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26278,34 +26191,34 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_MAX_NUM_SUB_GROUPS"><code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support Subgroups.</p></td>
+<a href="#CL_DEVICE_MAX_NUM_SUB_GROUPS"><code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <code>0</code>, indicating that <em>device</em> does not support subgroups.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"><code>CL_&#8203;DEVICE_&#8203;SUB_&#8203;GROUP_&#8203;INDEPENDENT_&#8203;FORWARD_&#8203;PROGRESS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if <em>device</em> does not support Subgroups.</p></td>
+<a href="#CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"><code>CL_DEVICE_<wbr>SUB_<wbr>GROUP_<wbr>INDEPENDENT_<wbr>FORWARD_<wbr>PROGRESS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_FALSE"><code>CL_FALSE</code></a> if <em>device</em> does not support subgroups.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_EXTENSIONS"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Will not describe support for the <code>cl_khr_subgroups</code> extension if <em>device</em> does not support Subgroups.</p></td>
+<a href="#CL_DEVICE_EXTENSIONS"><code>CL_DEVICE_<wbr>EXTENSIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Will not describe support for the <code>cl_khr_subgroups</code> extension if <em>device</em> does not support subgroups.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetKernelSubGroupInfo"><strong>clGetKernelSubGroupInfo</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if <em>device</em> does not support Subgroups.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if <em>device</em> does not support subgroups.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting Subgroups will define the feature macro <code>__opencl_c_subgroups</code>.</p>
+<p>OpenCL C compilers supporting subgroups will define the feature macro <code>__opencl_c_subgroups</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_program_initialization_and_clean_up_kernels">Program Initialization and Clean-Up Kernels</h3>
+<h3 id="_program_initialization_and_clean_up_kernels"><a class="anchor" href="#_program_initialization_and_clean_up_kernels"></a>Program Initialization and Clean-Up Kernels</h3>
 <div class="paragraph">
-<p>Program Initialization and Clean-Up Kernels are not supported in OpenCL 3.0.
-When Program Initialization and Clean-Up Kernels are not supported:</p>
+<p>Program initialization and clean-up kernels are not supported in OpenCL 3.0, and the APIs and queries for program initialization and clean-up kernels are deprecated in OpenCL 3.0.
+When program initialization and clean-up kernels are not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26321,22 +26234,22 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetProgramInfo"><strong>clGetProgramInfo</strong></a>, passing<br>
-<a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_&#8203;PROGRAM_&#8203;SCOPE_&#8203;GLOBAL_&#8203;CTORS_&#8203;PRESENT</code></a> or<br>
-<a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_&#8203;PROGRAM_&#8203;SCOPE_&#8203;GLOBAL_&#8203;DTORS_&#8203;PRESENT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a> if no devices in the context associated with <em>program</em> support Program Initialization and Clean-Up Kernels.</p></td>
+<a href="#CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>CTORS_<wbr>PRESENT</code></a> or<br>
+<a href="#CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"><code>CL_PROGRAM_<wbr>SCOPE_<wbr>GLOBAL_<wbr>DTORS_<wbr>PRESENT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_FALSE"><code>CL_FALSE</code></a> if no devices in the context associated with <em>program</em> support program initialization and clean-up kernels.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clSetProgramReleaseCallback"><strong>clSetProgramReleaseCallback</strong></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_&#8203;INVALID_&#8203;OPERATION</code></a> if no devices in the context associated with <em>program</em> support Program Initialization and Clean-Up Kernels.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <a href="#CL_INVALID_OPERATION"><code>CL_INVALID_<wbr>OPERATION</code></a> if no devices in the context associated with <em>program</em> support program initialization and clean-up kernels.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect2">
-<h3 id="_3d_image_writes">3D Image Writes</h3>
+<h3 id="_3d_image_writes"><a class="anchor" href="#_3d_image_writes"></a>3D Image Writes</h3>
 <div class="paragraph">
-<p>Kernel built-in functions for Writing to 3D Image Objects are optional for devices supporting OpenCL 3.0.
-When Writing to 3D Image Objects is not supported:</p>
+<p>Kernel built-in functions for writing to 3D image objects are optional for devices supporting OpenCL 3.0.
+When writing to 3D image objects is not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26352,28 +26265,28 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_EXTENSIONS"><code>CL_&#8203;DEVICE_&#8203;EXTENSIONS</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Will not describe support for the <code>cl_khr_3d_image_writes</code> extension if <em>device</em> does not support Writing to 3D Image Objects.</p></td>
+<a href="#CL_DEVICE_EXTENSIONS"><code>CL_DEVICE_<wbr>EXTENSIONS</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Will not describe support for the <code>cl_khr_3d_image_writes</code> extension if <em>device</em> does not support writing to 3D image objects.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetSupportedImageFormats"><strong>clGetSupportedImageFormats</strong></a>, passing<br>
-<a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_&#8203;MEM_&#8203;OBJECT_&#8203;IMAGE3D</code></a> and one of<br>
-<a href="#CL_MEM_WRITE_ONLY"><code>CL_&#8203;MEM_&#8203;WRITE_&#8203;ONLY</code></a>,<br>
-<a href="#CL_MEM_READ_WRITE"><code>CL_&#8203;MEM_&#8203;READ_&#8203;WRITE</code></a>, or<br>
-<a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_&#8203;MEM_&#8203;KERNEL_&#8203;READ_&#8203;AND_&#8203;WRITE</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an empty set (such as <em>num_image_formats</em> equal to <code>0</code>), indicating that no image formats are supported for writing to 3D image objects, if no devices in <em>context</em> support Writing to 3D Image Objects.</p></td>
+<a href="#CL_MEM_OBJECT_IMAGE3D"><code>CL_MEM_<wbr>OBJECT_<wbr>IMAGE3D</code></a> and one of<br>
+<a href="#CL_MEM_WRITE_ONLY"><code>CL_MEM_<wbr>WRITE_<wbr>ONLY</code></a>,<br>
+<a href="#CL_MEM_READ_WRITE"><code>CL_MEM_<wbr>READ_<wbr>WRITE</code></a>, or<br>
+<a href="#CL_MEM_KERNEL_READ_AND_WRITE"><code>CL_MEM_<wbr>KERNEL_<wbr>READ_<wbr>AND_<wbr>WRITE</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an empty set (such as <em>num_image_formats</em> equal to <code>0</code>), indicating that no image formats are supported for writing to 3D image objects, if no devices in <em>context</em> support writing to 3D image objects.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting Writing to 3D Image Objects will define the feature macro <code>__opencl_c_3d_image_writes</code>.</p>
+<p>OpenCL C compilers supporting writing to 3D image objects will define the feature macro <code>__opencl_c_3d_image_writes</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_work_group_collective_functions">Work Group Collective Functions</h3>
+<h3 id="_work_group_collective_functions"><a class="anchor" href="#_work_group_collective_functions"></a>Work Group Collective Functions</h3>
 <div class="paragraph">
-<p>Work Group Collective Functions for broadcasts, scans, and reductions are optional for devices supporting OpenCL 3.0.
-When Work Group Collective Functions are not supported:</p>
+<p>Work group collective functions for broadcasts, scans, and reductions are optional for devices supporting OpenCL 3.0.
+When work group collective functions are not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26389,20 +26302,20 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;WORK_&#8203;GROUP_&#8203;COLLECTIVE_&#8203;FUNCTIONS_&#8203;SUPPORT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, indicating that <em>device</em> does not support Work Group Collective Functions.</p></td>
+<a href="#CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"><code>CL_DEVICE_<wbr>WORK_<wbr>GROUP_<wbr>COLLECTIVE_<wbr>FUNCTIONS_<wbr>SUPPORT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_FALSE</code></a>, indicating that <em>device</em> does not support work group collective functions.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting Work Group Collective Functions will define the feature macro <code>__opencl_c_work_group_collective_functions</code>.</p>
+<p>OpenCL C compilers supporting work group collective functions will define the feature macro <code>__opencl_c_work_group_collective_functions</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_generic_address_space">Generic Address Space</h3>
+<h3 id="_generic_address_space"><a class="anchor" href="#_generic_address_space"></a>Generic Address Space</h3>
 <div class="paragraph">
-<p>Support for the Generic Address Space is optional for devices supporting OpenCL 3.0.
-When the Generic Address Space is not supported:</p>
+<p>Support for the generic address space is optional for devices supporting OpenCL 3.0.
+When the generic address space is not supported:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -26418,20 +26331,32 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#clGetDeviceInfo"><strong>clGetDeviceInfo</strong></a>, passing<br>
-<a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_&#8203;DEVICE_&#8203;GENERIC_&#8203;ADDRESS_&#8203;SPACE_&#8203;SUPPORT</code></a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_&#8203;FALSE</code></a>, indicating that <em>device</em> does not support the Generic Address Space.</p></td>
+<a href="#CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"><code>CL_DEVICE_<wbr>GENERIC_<wbr>ADDRESS_<wbr>SPACE_<wbr>SUPPORT</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">May return <a href="#CL_FALSE"><code>CL_FALSE</code></a>, indicating that <em>device</em> does not support the generic address space.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>OpenCL C compilers supporting the Generic Address Space will define the feature macro <code>__opencl_c_generic_address_space</code>.</p>
+<p>OpenCL C compilers supporting the generic address space will define the feature macro <code>__opencl_c_generic_address_space</code>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_language_features_that_were_already_optional"><a class="anchor" href="#_language_features_that_were_already_optional"></a>Language Features that Were Already Optional</h3>
+<div class="paragraph">
+<p>Some OpenCL C language features were already optional before OpenCL 3.0, the API mechanisms for querying these have not changed.</p>
+</div>
+<div class="paragraph">
+<p>New feature macros for these optional features have been added to OpenCL C to provide a consistent mechanism for using optional features in OpenCL C 3.0.
+OpenCL C compilers supporting images will define the feature macro <code>__opencl_c_images</code>.
+OpenCL C compilers supporting the <code>double</code> type will define the feature macro <code>__opencl_c_fp64</code>.
+OpenCL C compilers supporting the <code>long</code>, <code>unsigned long</code> and <code>ulong</code> types will define the feature macro <code>__opencl_c_int64</code>, note that compilers for FULL_PROFILE devices must support these types and define the macro unconditionally.</p>
 </div>
 <div style="page-break-after: always;"></div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_acknowledgements">Acknowledgements</h2>
+<h2 id="_acknowledgements"><a class="anchor" href="#_acknowledgements"></a>Acknowledgements</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The OpenCL specification is the result of the contributions of many people,
@@ -26508,7 +26433,7 @@
 Jon Parr, Imagination Technologies<br>
 Paul Fradgley, Imagination Technologies<br>
 Robert Quill, Imagination Technologies<br>
-James McCarthy, Imagination Technologie<br>
+James McCarthy, Imagination Technologies<br>
 Jon Leech, Independent<br>
 Aaron Kunze, Intel<br>
 Aaron Lefohn, Intel<br>
@@ -26521,13 +26446,16 @@
 Ben Ashbaugh, Intel<br>
 Boaz Ouriel, Intel<br>
 Brian Lewis, Intel<br>
+Filip Hazubski, Intel<br>
 Geoff Berry, Intel<br>
+Grzegorz Wawiorko, Intel<br>
 Hong Jiang, Intel<br>
 Jayanth Rao, Intel<br>
 Josh Fryman, Intel<br>
 Kevin Stevens, Intel<br>
 Larry Seiler, Intel<br>
 Michael Kinsner, Intel<br>
+Michal Mrozek, Intel<br>
 Mike MacPherson, Intel<br>
 Murali Sundaresan, Intel<br>
 Paul Lalonde, Intel<br>
@@ -26584,11 +26512,13 @@
 Hongqiang Wang, QUALCOMM<br>
 Jay Yun, QUALCOMM<br>
 Jian Liu, QUALCOMM<br>
+Joshua Kelly, QUALCOMM<br>
 Lee Howes, QUALCOMM<br>
 Lihan Bin, QUALCOMM<br>
 Richard Ruigrok, QUALCOMM<br>
 Robert J. Simpson, QUALCOMM<br>
 Ruihao Zhang, QUALCOMM<br>
+Samuel Pauls, QUALCOMM<br>
 Sreelakshmi Haridas, QUALCOMM<br>
 Sumesh Udayakumaran, QUALCOMM<br>
 Vineet Goel, QUALCOMM<br>
@@ -26629,10 +26559,124 @@
 </div>
 </div>
 </div>
+<div id="footnotes">
+<hr>
+<div class="footnote" id="_footnotedef_1">
+<a href="#_footnoteref_1">1</a>. This value for memory_scope can only be used with atomic_work_item_fence with flags set to CLK_IMAGE_MEM_FENCE.
+</div>
+<div class="footnote" id="_footnotedef_2">
+<a href="#_footnoteref_2">2</a>. The platform profile returns the profile that is implemented by the OpenCL framework. If the platform profile returned is FULL_PROFILE, the OpenCL framework will support devices that are FULL_PROFILE and may also support devices that are EMBEDDED_PROFILE. The compiler must be available for all devices i.e. <a href="#CL_DEVICE_COMPILER_AVAILABLE"><code>CL_DEVICE_<wbr>COMPILER_<wbr>AVAILABLE</code></a> is <a href="#CL_TRUE"><code>CL_TRUE</code></a>. If the platform profile returned is EMBEDDED_PROFILE, then devices that are only EMBEDDED_PROFILE are supported.
+</div>
+<div class="footnote" id="_footnotedef_3">
+<a href="#_footnoteref_3">3</a>. A null terminated string is returned by OpenCL query function calls if the return type of the information being queried is a <code>char</code>[].
+</div>
+<div class="footnote" id="_footnotedef_4">
+<a href="#_footnoteref_4">4</a>. The OpenCL specification does not describe the order of precedence for error codes returned by API calls.
+</div>
+<div class="footnote" id="_footnotedef_5">
+<a href="#_footnoteref_5">5</a>. <a href="#clGetDeviceIDs"><strong>clGetDeviceIDs</strong></a> may return all or a subset of the actual physical devices present in the platform and that match <em>device_type</em>.
+</div>
+<div class="footnote" id="_footnotedef_6">
+<a href="#_footnoteref_6">6</a>. OpenCL adopters must report a valid vendor ID for their implementation. If there is no valid PCI vendor ID defined for the physical device, implementations must obtain a Khronos vendor ID. This is a unique identifier greater than the largest PCI vendor ID (<code>0x10000</code>) and is representable by a <code>cl_uint</code>. Khronos vendor IDs are synchronized across APIs by utilizing Vulkan&#8217;s vk.xml as the central Khronos vendor ID registry. An ID must be reserved here prior to use in OpenCL, regardless of whether a vendor implements Vulkan. Only once the ID has been allotted may it be exposed to OpenCL by proposing a merge request against cl.xml, in the master branch of the OpenCL-Docs project. The merge must define a new enumerant by adding an <code>&lt;enum&gt;</code> tag to the <code>cl_khronos_<wbr>vendor_<wbr>id</code> <code>&lt;enums&gt;</code> tag, with the <code>&lt;value&gt;</code> attribute set as the acquired Khronos vendor ID. The <code>&lt;name&gt;</code> attribute must identify the vendor/adopter, and be of the form <code>CL_KHRONOS_VENDOR_ID_&lt;vendor&gt;</code>.
+</div>
+<div class="footnote" id="_footnotedef_7">
+<a href="#_footnoteref_7">7</a>. A kernel that uses an image argument with the write_only or read_write image qualifier may result in additional read_only images resources being created internally by an implementation. The internally created read_only image resources will count against the max supported read image arguments given by <a href="#CL_DEVICE_MAX_READ_IMAGE_ARGS"><code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>IMAGE_<wbr>ARGS</code></a>. Enqueuing a kernel that requires more images than the implementation can support will result in a <a href="#CL_OUT_OF_RESOURCES"><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code></a> error being returned.
+</div>
+<div class="footnote" id="_footnotedef_8">
+<a href="#_footnoteref_8">8</a>. The optional rounding modes should be included as a device capability only if it is supported natively. All explicit conversion functions with specific rounding modes must still operate correctly.
+</div>
+<div class="footnote" id="_footnotedef_9">
+<a href="#_footnoteref_9">9</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_10">
+<a href="#_footnoteref_10">10</a>. Note that this flag does not provide meaning for atomic memory operations, but only for atomic fence operations in certain circumstances, refer to the Memory Scope section of the OpenCL C specification.
+</div>
+<div class="footnote" id="_footnotedef_11">
+<a href="#_footnoteref_11">11</a>. Duplicate devices specified in <em>devices</em> are ignored.
+</div>
+<div class="footnote" id="_footnotedef_12">
+<a href="#_footnoteref_12">12</a>. <a href="#clCreateContextFromType"><strong>clCreateContextFromType</strong></a> may may create a context for all or a subset of the actual physical devices present in the platform that match <em>device_type</em>.
+</div>
+<div class="footnote" id="_footnotedef_13">
+<a href="#_footnoteref_13">13</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_14">
+<a href="#_footnoteref_14">14</a>. Only out-of-order device queues are supported.
+</div>
+<div class="footnote" id="_footnotedef_15">
+<a href="#_footnoteref_15">15</a>. The application must create a default device queue if any kernels containing calls to <code>get_default_queue</code> are enqueued. There can only be one default device queue for each device within a context. If a default device queue has already been created, calling <a href="#clCreateCommandQueueWithProperties"><strong>clCreateCommandQueueWithProperties</strong></a> with <a href="#CL_QUEUE_PROPERTIES"><code>CL_QUEUE_<wbr>PROPERTIES</code></a> set to <a href="#CL_QUEUE_ON_DEVICE"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE</code></a> and <a href="#CL_QUEUE_ON_DEVICE_DEFAULT"><code>CL_QUEUE_<wbr>ON_<wbr>DEVICE_<wbr>DEFAULT</code></a> will return the default device queue that has already been created and increment its reference count by 1.
+</div>
+<div class="footnote" id="_footnotedef_16">
+<a href="#_footnoteref_16">16</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_17">
+<a href="#_footnoteref_17">17</a>. Note that reading and writing 2D image arrays from a kernel with <code>image_array_size</code> equal to one may perform worse than 2D images.
+</div>
+<div class="footnote" id="_footnotedef_18">
+<a href="#_footnoteref_18">18</a>. To create a 2D image from a buffer object that share the data store between the image and buffer object.
+</div>
+<div class="footnote" id="_footnotedef_19">
+<a href="#_footnoteref_19">19</a>. To create an image object from another image object that share the data store between these image objects.
+</div>
+<div class="footnote" id="_footnotedef_20">
+<a href="#_footnoteref_20">20</a>. This allows creation of a sRGB view of the image from a linear RGB view or vice-versa, i.e. the pixels stored in the image can be accessed as linear RGB or sRGB values.
+</div>
+<div class="footnote" id="_footnotedef_21">
+<a href="#_footnoteref_21">21</a>. Support for the <a href="#CL_DEPTH"><code>CL_DEPTH</code></a> image channel order is required only for 2D images and 2D image arrays.
+</div>
+<div class="footnote" id="_footnotedef_22">
+<a href="#_footnoteref_22">22</a>. Support for reading from the <a href="#CL_sRGBA"><code>CL_sRGBA</code></a> image channel order is optional for 1D image buffers. Support for writing to the <a href="#CL_sRGBA"><code>CL_sRGBA</code></a> image channel order is optional for all image types.
+</div>
+<div class="footnote" id="_footnotedef_23">
+<a href="#_footnoteref_23">23</a>. The map count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for debugging.
+</div>
+<div class="footnote" id="_footnotedef_24">
+<a href="#_footnoteref_24">24</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_25">
+<a href="#_footnoteref_25">25</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_26">
+<a href="#_footnoteref_26">26</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_27">
+<a href="#_footnoteref_27">27</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_28">
+<a href="#_footnoteref_28">28</a>. <a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>CONST</code></a> is returned if the argument is a pointer and the referenced type is declared with the const qualifier. For example, a kernel argument declared as <code>global int const *x</code> returns <a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>CONST</code></a> but a kernel argument declared as <code>global int * const x</code> does not.<br> Similarly, <a href="#CL_KERNEL_ARG_TYPE_RESTRICT"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>RESTRICT</code></a> will be returned if the pointer type is marked <code>restrict</code>. For example, <code>global int * restrict x</code> returns <a href="#CL_KERNEL_ARG_TYPE_RESTRICT"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>RESTRICT</code></a>.<br> <a href="#CL_KERNEL_ARG_TYPE_VOLATILE"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>VOLATILE</code></a> is returned for <a href="#CL_KERNEL_ARG_TYPE_QUALIFIER"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>QUALIFIER</code></a> if the argument is a pointer and the referenced type is declared with the volatile qualifier. For example, a kernel argument declared as <code>global int volatile *x</code> returns <a href="#CL_KERNEL_ARG_TYPE_VOLATILE"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>VOLATILE</code></a> but a kernel argument declared as <code>global int * volatile x</code> does not.
+</div>
+<div class="footnote" id="_footnotedef_29">
+<a href="#_footnoteref_29">29</a>. <a href="#CL_KERNEL_ARG_TYPE_CONST"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>CONST</code></a> is returned for <a href="#CL_KERNEL_ARG_TYPE_QUALIFIER"><code>CL_KERNEL_<wbr>ARG_<wbr>TYPE_<wbr>QUALIFIER</code></a> if the argument is declared with the <code>constant</code> address space qualifier.
+</div>
+<div class="footnote" id="_footnotedef_30">
+<a href="#_footnoteref_30">30</a>. The error code values are negative, and event state values are positive. The event state values are ordered from the largest value <a href="#CL_QUEUED"><code>CL_QUEUED</code></a> for the first or initial state to the smallest value (<a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> or negative integer value) for the last or complete state. The value of <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> and <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> are the same.
+</div>
+<div class="footnote" id="_footnotedef_31">
+<a href="#_footnoteref_31">31</a>. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
+</div>
+<div class="footnote" id="_footnotedef_32">
+<a href="#_footnoteref_32">32</a>. The callback function registered for a <em>command_exec_callback_type</em> value of <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> will be called when the command has completed successfully or is abnormally terminated.
+</div>
+<div class="footnote" id="_footnotedef_33">
+<a href="#_footnoteref_33">33</a>. And <strong>read_imageh</strong>, if the <strong>cl_khr_fp16</strong> extension is supported.
+</div>
+<div class="footnote" id="_footnotedef_34">
+<a href="#_footnoteref_34">34</a>. Note that the performance of 64-bit integer arithmetic can vary significantly between embedded devices.
+</div>
+<div class="footnote" id="_footnotedef_35">
+<a href="#_footnoteref_35">35</a>. Please refer to the OpenCL glossary for the OpenCL definition of thread-safe. This definition may be different from usage of the term in other contexts.
+</div>
+<div class="footnote" id="_footnotedef_36">
+<a href="#_footnoteref_36">36</a>. There is an inherent race condition in the design of OpenCL that occurs between setting a kernel argument and using the kernel with <a href="#clEnqueueNDRangeKernel"><strong>clEnqueueNDRangeKernel</strong></a>. Another host thread might change the kernel arguments between when a host thread sets the kernel arguments and then enqueues the kernel, causing the wrong kernel arguments to be enqueued. Rather than attempt to share <code>cl_kernel</code> objects among multiple host threads, applications are strongly encouraged to make additional <code>cl_kernel</code> objects for kernel functions for each host thread.
+</div>
+<div class="footnote" id="_footnotedef_37">
+<a href="#_footnoteref_37">37</a>. Note that we are talking about the programming model here. In reality, little endian systems might choose to simply address their bytes from "the right" or reverse the "order" of the bits in the byte. Either of these choices would mean that no big swap would need to occur in hardware.
+</div>
+</div>
 <div id="footer">
 <div id="footer-text">
-Version v3.0.1-Provisional<br>
-Last updated 2020-04-26 21:05:33 -0700
+Version v3.0.5<br>
+Last updated 2020-09-28 14:46:56 -0700
 </div>
 </div>
 
diff --git a/specs/3.0-unified/html/OpenCL_C.html b/specs/3.0-unified/html/OpenCL_C.html
index d3bf461..d8fdd08 100644
--- a/specs/3.0-unified/html/OpenCL_C.html
+++ b/specs/3.0-unified/html/OpenCL_C.html
@@ -6,7 +6,7 @@
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta name="generator" content="Asciidoctor 1.5.8">
 <meta name="author" content="Khronos&#174; OpenCL Working Group">
-<title>The OpenCL&#8482; C 3.0 Specification (Provisional)</title>
+<title>The OpenCL&#8482; C Specification</title>
 <style>
 /*! normalize.css v2.1.2 | MIT License | git.io/normalize */
 /* ========================================================================== HTML5 display definitions ========================================================================== */
@@ -838,120 +838,128 @@
 </script></head>
 <body class="book toc2 toc-left" style="max-width: 100;">
 <div id="header">
-<h1>The OpenCL<sup>&#8482;</sup> C 3.0 Specification (Provisional)</h1>
+<h1>The OpenCL<sup>&#8482;</sup> C Specification</h1>
 <div class="details">
 <span id="author" class="author">Khronos<sup>&#174;</sup> OpenCL Working Group</span><br>
-<span id="revnumber">version v3.0.1-Provisional,</span>
-<span id="revdate">Mon, 27 Apr 2020 04:09:43 +0000</span>
-<br><span id="revremark">from git branch: master commit: fafc202e2b6a80bd2276596227317696d76e1f63</span>
+<span id="revnumber">version v3.0.5,</span>
+<span id="revdate">Wed, 30 Sep 2020 00:00:00 +0000</span>
+<br><span id="revremark">from git branch: master commit: 4d8a36725aa8af9658ab5cb62fdbf52adb44bcca</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Table of Contents</div>
 <ul class="sectlevel1">
 <li><a href="#the-opencl-c-programming-language">6. The OpenCL C Programming Language</a>
 <ul class="sectlevel2">
-<li><a href="#supported-data-types">6.1. Supported Data Types</a>
+<li><a href="#unified-spec">6.1. Unified Specification</a></li>
+<li><a href="#optional-functionality">6.2. Optional functionality</a>
 <ul class="sectlevel3">
-<li><a href="#built-in-scalar-data-types">6.1.1. Built-in Scalar Data Types</a></li>
-<li><a href="#built-in-vector-data-types">6.1.2. Built-in Vector Data Types<sup>4</sup></a></li>
-<li><a href="#other-built-in-data-types">6.1.3. Other Built-in Data Types</a></li>
-<li><a href="#reserved-data-types">6.1.4. Reserved Data Types</a></li>
-<li><a href="#alignment-of-types">6.1.5. Alignment of Types</a></li>
-<li><a href="#vector-literals">6.1.6. Vector Literals</a></li>
-<li><a href="#vector-components">6.1.7. Vector Components</a></li>
-<li><a href="#aliasing-rules">6.1.8. Aliasing Rules</a></li>
-<li><a href="#keywords">6.1.9. Keywords</a></li>
+<li><a href="#features">6.2.1. Features</a></li>
+<li><a href="#extensions">6.2.2. Extensions</a></li>
 </ul>
 </li>
-<li><a href="#conversions-and-type-casting">6.2. Conversions and Type Casting</a>
+<li><a href="#supported-data-types">6.3. Supported Data Types</a>
 <ul class="sectlevel3">
-<li><a href="#implicit-conversions">6.2.1. Implicit Conversions</a></li>
-<li><a href="#explicit-casts">6.2.2. Explicit Casts</a></li>
-<li><a href="#explicit-conversions">6.2.3. Explicit Conversions</a></li>
-<li><a href="#reinterpreting-data-as-another-type">6.2.4. Reinterpreting Data As Another Type</a></li>
-<li><a href="#pointer-casting">6.2.5. Pointer Casting</a></li>
-<li><a href="#usual-arithmetic-conversions">6.2.6. Usual Arithmetic Conversions</a></li>
+<li><a href="#built-in-scalar-data-types">6.3.1. Built-in Scalar Data Types</a></li>
+<li><a href="#built-in-vector-data-types">6.3.2. Built-in Vector Data Types</a></li>
+<li><a href="#other-built-in-data-types">6.3.3. Other Built-in Data Types</a></li>
+<li><a href="#reserved-data-types">6.3.4. Reserved Data Types</a></li>
+<li><a href="#alignment-of-types">6.3.5. Alignment of Types</a></li>
+<li><a href="#vector-literals">6.3.6. Vector Literals</a></li>
+<li><a href="#vector-components">6.3.7. Vector Components</a></li>
+<li><a href="#aliasing-rules">6.3.8. Aliasing Rules</a></li>
+<li><a href="#keywords">6.3.9. Keywords</a></li>
 </ul>
 </li>
-<li><a href="#operators">6.3. Operators</a>
+<li><a href="#conversions-and-type-casting">6.4. Conversions and Type Casting</a>
 <ul class="sectlevel3">
-<li><a href="#operators-arithmetic">6.3.1. Arithmetic Operators</a></li>
-<li><a href="#operators-unary">6.3.2. Unary Operators</a></li>
-<li><a href="#operators-prepost">6.3.3. Pre- and Post-Operators</a></li>
-<li><a href="#operators-relational">6.3.4. Relational Operators</a></li>
-<li><a href="#operators-equality">6.3.5. Equality Operators</a></li>
-<li><a href="#operators-bitwise">6.3.6. Bitwise Operators</a></li>
-<li><a href="#operators-logical">6.3.7. Logical Operators</a></li>
-<li><a href="#operators-logical-unary">6.3.8. Unary Logical Operator</a></li>
-<li><a href="#operators-ternary-selection">6.3.9. Ternary Selection Operator</a></li>
-<li><a href="#operators-shift">6.3.10. Shift Operators</a></li>
-<li><a href="#operators-sizeof">6.3.11. Sizeof Operator</a></li>
-<li><a href="#operators-comma">6.3.12. Comma Operator</a></li>
-<li><a href="#operators-indirection">6.3.13. Indirection Operator</a></li>
-<li><a href="#operators-address">6.3.14. Address Operator</a></li>
-<li><a href="#operators-assignment">6.3.15. Assignment Operator</a></li>
+<li><a href="#implicit-conversions">6.4.1. Implicit Conversions</a></li>
+<li><a href="#explicit-casts">6.4.2. Explicit Casts</a></li>
+<li><a href="#explicit-conversions">6.4.3. Explicit Conversions</a></li>
+<li><a href="#reinterpreting-data-as-another-type">6.4.4. Reinterpreting Data As Another Type</a></li>
+<li><a href="#pointer-casting">6.4.5. Pointer Casting</a></li>
+<li><a href="#usual-arithmetic-conversions">6.4.6. Usual Arithmetic Conversions</a></li>
 </ul>
 </li>
-<li><a href="#vector-operations">6.4. Vector Operations</a></li>
-<li><a href="#address-space-qualifiers">6.5. Address Space Qualifiers</a>
+<li><a href="#operators">6.5. Operators</a>
 <ul class="sectlevel3">
-<li><a href="#global-or-global">6.5.1. <code>__global</code> (or <code>global</code>)</a></li>
-<li><a href="#local-or-local">6.5.2. <code>__local</code> (or <code>local</code>)</a></li>
-<li><a href="#constant-or-constant">6.5.3. <code>__constant</code> (or <code>constant</code>)</a></li>
-<li><a href="#private-or-private">6.5.4. <code>__private</code> (or <code>private</code>)</a></li>
-<li><a href="#the-generic-address-space">6.5.5. The Generic Address Space</a></li>
-<li><a href="#changes-to-C99">6.5.6. Changes to C99</a></li>
+<li><a href="#operators-arithmetic">6.5.1. Arithmetic Operators</a></li>
+<li><a href="#operators-unary">6.5.2. Unary Operators</a></li>
+<li><a href="#operators-prepost">6.5.3. Pre- and Post-Operators</a></li>
+<li><a href="#operators-relational">6.5.4. Relational Operators</a></li>
+<li><a href="#operators-equality">6.5.5. Equality Operators</a></li>
+<li><a href="#operators-bitwise">6.5.6. Bitwise Operators</a></li>
+<li><a href="#operators-logical">6.5.7. Logical Operators</a></li>
+<li><a href="#operators-logical-unary">6.5.8. Unary Logical Operator</a></li>
+<li><a href="#operators-ternary-selection">6.5.9. Ternary Selection Operator</a></li>
+<li><a href="#operators-shift">6.5.10. Shift Operators</a></li>
+<li><a href="#operators-sizeof">6.5.11. Sizeof Operator</a></li>
+<li><a href="#operators-comma">6.5.12. Comma Operator</a></li>
+<li><a href="#operators-indirection">6.5.13. Indirection Operator</a></li>
+<li><a href="#operators-address">6.5.14. Address Operator</a></li>
+<li><a href="#operators-assignment">6.5.15. Assignment Operator</a></li>
 </ul>
 </li>
-<li><a href="#access-qualifiers">6.6. Access Qualifiers</a></li>
-<li><a href="#function-qualifiers">6.7. Function Qualifiers</a>
+<li><a href="#vector-operations">6.6. Vector Operations</a></li>
+<li><a href="#address-space-qualifiers">6.7. Address Space Qualifiers</a>
 <ul class="sectlevel3">
-<li><a href="#kernel-or-kernel">6.7.1. <code>__kernel</code> (or <code>kernel</code>)</a></li>
-<li><a href="#optional-attribute-qualifiers">6.7.2. Optional Attribute Qualifiers</a></li>
+<li><a href="#global-or-global">6.7.1. <code>__global</code> (or <code>global</code>)</a></li>
+<li><a href="#local-or-local">6.7.2. <code>__local</code> (or <code>local</code>)</a></li>
+<li><a href="#constant-or-constant">6.7.3. <code>__constant</code> (or <code>constant</code>)</a></li>
+<li><a href="#private-or-private">6.7.4. <code>__private</code> (or <code>private</code>)</a></li>
+<li><a href="#the-generic-address-space">6.7.5. The Generic Address Space</a></li>
+<li><a href="#changes-to-C99">6.7.6. Changes to C99</a></li>
 </ul>
 </li>
-<li><a href="#storage-class-specifiers">6.8. Storage-Class Specifiers</a></li>
-<li><a href="#restrictions">6.9. Restrictions</a></li>
-<li><a href="#preprocessor-directives-and-macros">6.10. Preprocessor Directives and Macros</a></li>
-<li><a href="#attribute-qualifiers">6.11. Attribute Qualifiers</a>
+<li><a href="#access-qualifiers">6.8. Access Qualifiers</a></li>
+<li><a href="#function-qualifiers">6.9. Function Qualifiers</a>
 <ul class="sectlevel3">
-<li><a href="#specifying-attributes-of-types">6.11.1. Specifying Attributes of Types</a></li>
-<li><a href="#specifying-attributes-of-functions">6.11.2. Specifying Attributes of Functions</a></li>
-<li><a href="#specifying-attributes-of-variables">6.11.3. Specifying Attributes of Variables</a></li>
-<li><a href="#specifying-attributes-of-blocks-and-control-flow-statements">6.11.4. Specifying Attributes of Blocks and Control-Flow-Statements</a></li>
-<li><a href="#specifying-attribute-for-unrolling-loops">6.11.5. Specifying Attribute For Unrolling Loops</a></li>
-<li><a href="#extending-attribute-qualifiers">6.11.6. Extending Attribute Qualifiers</a></li>
+<li><a href="#kernel-or-kernel">6.9.1. <code>__kernel</code> (or <code>kernel</code>)</a></li>
+<li><a href="#optional-attribute-qualifiers">6.9.2. Optional Attribute Qualifiers</a></li>
 </ul>
 </li>
-<li><a href="#blocks">6.12. Blocks</a>
+<li><a href="#storage-class-specifiers">6.10. Storage-Class Specifiers</a></li>
+<li><a href="#restrictions">6.11. Restrictions</a></li>
+<li><a href="#preprocessor-directives-and-macros">6.12. Preprocessor Directives and Macros</a></li>
+<li><a href="#attribute-qualifiers">6.13. Attribute Qualifiers</a>
 <ul class="sectlevel3">
-<li><a href="#declaring-and-using-a-block">6.12.1. Declaring and Using a Block</a></li>
-<li><a href="#declaring-a-block-reference">6.12.2. Declaring a Block Reference</a></li>
-<li><a href="#block-literal-expressions">6.12.3. Block Literal Expressions</a></li>
-<li><a href="#control-flow">6.12.4. Control Flow</a></li>
-<li><a href="#restrictions-1">6.12.5. Restrictions</a></li>
+<li><a href="#specifying-attributes-of-types">6.13.1. Specifying Attributes of Types</a></li>
+<li><a href="#specifying-attributes-of-functions">6.13.2. Specifying Attributes of Functions</a></li>
+<li><a href="#specifying-attributes-of-variables">6.13.3. Specifying Attributes of Variables</a></li>
+<li><a href="#specifying-attributes-of-blocks-and-control-flow-statements">6.13.4. Specifying Attributes of Blocks and Control-Flow-Statements</a></li>
+<li><a href="#specifying-attribute-for-unrolling-loops">6.13.5. Specifying Attribute For Unrolling Loops</a></li>
+<li><a href="#extending-attribute-qualifiers">6.13.6. Extending Attribute Qualifiers</a></li>
 </ul>
 </li>
-<li><a href="#built-in-functions">6.13. Built-in Functions</a>
+<li><a href="#blocks">6.14. Blocks</a>
 <ul class="sectlevel3">
-<li><a href="#work-item-functions">6.13.1. Work-Item Functions</a></li>
-<li><a href="#math-functions">6.13.2. Math Functions</a></li>
-<li><a href="#integer-functions">6.13.3. Integer Functions</a></li>
-<li><a href="#common-functions">6.13.4. Common Functions<sup>33</sup></a></li>
-<li><a href="#geometric-functions">6.13.5. Geometric Functions<sup>34</sup></a></li>
-<li><a href="#relational-functions">6.13.6. Relational Functions</a></li>
-<li><a href="#vector-data-load-and-store-functions">6.13.7. Vector Data Load and Store Functions</a></li>
-<li><a href="#synchronization-functions">6.13.8. Synchronization Functions</a></li>
-<li><a href="#address-space-qualifier-functions">6.13.9. Address Space Qualifier Functions</a></li>
-<li><a href="#async-copies">6.13.10. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</a></li>
-<li><a href="#atomic-functions">6.13.11. Atomic Functions</a></li>
-<li><a href="#miscellaneous-vector-functions">6.13.12. Miscellaneous Vector Functions</a></li>
-<li><a href="#printf">6.13.13. printf</a></li>
-<li><a href="#image-read-and-write-functions">6.13.14. Image Read and Write Functions</a></li>
-<li><a href="#work-group-functions">6.13.15. Work-group Collective Functions</a></li>
-<li><a href="#pipe-functions">6.13.16. Pipe Functions</a></li>
-<li><a href="#enqueuing-kernels">6.13.17. Enqueuing Kernels</a></li>
-<li><a href="#subgroup-functions">6.13.18. Subgroup Functions</a></li>
+<li><a href="#declaring-and-using-a-block">6.14.1. Declaring and Using a Block</a></li>
+<li><a href="#declaring-a-block-reference">6.14.2. Declaring a Block Reference</a></li>
+<li><a href="#block-literal-expressions">6.14.3. Block Literal Expressions</a></li>
+<li><a href="#control-flow">6.14.4. Control Flow</a></li>
+<li><a href="#restrictions-1">6.14.5. Restrictions</a></li>
+</ul>
+</li>
+<li><a href="#built-in-functions">6.15. Built-in Functions</a>
+<ul class="sectlevel3">
+<li><a href="#work-item-functions">6.15.1. Work-Item Functions</a></li>
+<li><a href="#math-functions">6.15.2. Math Functions</a></li>
+<li><a href="#integer-functions">6.15.3. Integer Functions</a></li>
+<li><a href="#common-functions">6.15.4. Common Functions</a></li>
+<li><a href="#geometric-functions">6.15.5. Geometric Functions</a></li>
+<li><a href="#relational-functions">6.15.6. Relational Functions</a></li>
+<li><a href="#vector-data-load-and-store-functions">6.15.7. Vector Data Load and Store Functions</a></li>
+<li><a href="#synchronization-functions">6.15.8. Synchronization Functions</a></li>
+<li><a href="#legacy-mem-fence-functions">6.15.9. Legacy Explicit Memory Fence Functions</a></li>
+<li><a href="#address-space-qualifier-functions">6.15.10. Address Space Qualifier Functions</a></li>
+<li><a href="#async-copies">6.15.11. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</a></li>
+<li><a href="#atomic-functions">6.15.12. Atomic Functions</a></li>
+<li><a href="#miscellaneous-vector-functions">6.15.13. Miscellaneous Vector Functions</a></li>
+<li><a href="#printf">6.15.14. printf</a></li>
+<li><a href="#image-read-and-write-functions">6.15.15. Image Read and Write Functions</a></li>
+<li><a href="#work-group-functions">6.15.16. Work-group Collective Functions</a></li>
+<li><a href="#pipe-functions">6.15.17. Pipe Functions</a></li>
+<li><a href="#enqueuing-kernels">6.15.18. Enqueuing Kernels</a></li>
+<li><a href="#subgroup-functions">6.15.19. Subgroup Functions</a></li>
 </ul>
 </li>
 </ul>
@@ -1041,7 +1049,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="the-opencl-c-programming-language">6. The OpenCL C Programming Language</h2>
+<h2 id="the-opencl-c-programming-language"><a class="anchor" href="#the-opencl-c-programming-language"></a>6. The OpenCL C Programming Language</h2>
 <div class="sectionbody">
 <div class="admonitionblock note">
 <table>
@@ -1060,7 +1068,7 @@
 </table>
 </div>
 <div class="paragraph">
-<p>This section describes the OpenCL C 3.0 programming language.
+<p>This section describes the OpenCL C programming language.
 The OpenCL C programming language may be used to write kernels that execute
 on an OpenCL device.</p>
 </div>
@@ -1079,79 +1087,211 @@
 Please refer to the C99 specification for a detailed description of the
 language grammar.</p>
 </div>
+<div class="sect2">
+<h3 id="unified-spec"><a class="anchor" href="#unified-spec"></a>6.1. Unified Specification</h3>
 <div class="paragraph">
-<p>The OpenCL C 3.0 programming language includes both required features and
-optional features.
-When an OpenCL C 3.0 optional feature is supported in the language, support
-will be indicated using a <em>feature test macro</em>.</p>
+<p>This document specifies all versions of OpenCL C.</p>
 </div>
 <div class="paragraph">
-<p>The following table describes OpenCL C 3.0 feature macros and their meaning:</p>
+<p>There are several ways that an OpenCL C feature may be described in terms of
+what versions of OpenCL C specify that feature.</p>
 </div>
-<table class="tableblock frame-all grid-all stretch">
+<div class="ulist">
+<ul>
+<li>
+<p>Requires support for OpenCL C <em>major.minor</em> or newer: Features that were
+introduced in version <em>major.minor</em>.
+Compilers for an earlier version of OpenCL C will not provide these
+features.</p>
+<div class="ulist">
+<ul>
+<li>
+<p>In some instances the variation of "For OpenCL C <em>major.minor</em> or newer"
+is used, it has the identical meaning.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Requires support for OpenCL C 2.0, or OpenCL C 3.0 or newer and the
+<code>__opencl_c_feature_name</code> feature:
+Features that were introduced in OpenCL C 2.0 as mandatory, but made
+<a href="#optional-functionality">optional</a> in OpenCL C 3.0.
+Compilers for versions of OpenCL C 1.2 or below will not provide these
+features, compilers for OpenCL C 2.0 will provide these features,
+compilers for OpenCL C 3.0 or newer may provide these features.</p>
+</li>
+<li>
+<p>Requires support for OpenCL C 3.0 or newer and the
+<code>__opencl_c_feature_name</code> feature: <a href="#optional-functionality">Optional</a> features that were introduced in OpenCL C 3.0.
+Compilers for an earlier version of OpenCL C will not provide these
+features, compilers for OpenCL C 3.0 or newer may provide these features.</p>
+</li>
+<li>
+<p>Deprecated by OpenCL C <em>major.minor</em>: Features that were deprecated
+in version <em>major.minor</em>, see the definition of deprecation in the
+glossary of the main OpenCL specification.</p>
+</li>
+<li>
+<p>Universal: Features that have no mention of what version they are missing
+before or deprecated by are specified for all versions of OpenCL C.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="optional-functionality"><a class="anchor" href="#optional-functionality"></a>6.2. Optional functionality</h3>
+<div class="paragraph">
+<p>Some language functionality is optional and will not be supported by all
+devices. Such functionality is represented by optional language features or
+language extensions. Support of optional functionality in OpenCL C is indicated
+by the presence of special predefined macros.</p>
+</div>
+<div class="sect3">
+<h4 id="features"><a class="anchor" href="#features"></a>6.2.1. Features</h4>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+Feature test macros <a href="#unified-spec">require</a> support for OpenCL C
+3.0 or newer.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Optional language features are described in this document. They are optional
+from OpenCL C 3.0 onwards and therefore are not supported by all
+implementations. When an OpenCL C 3.0 optional feature is supported, an
+associated <em>feature test macro</em> will be predefined.</p>
+</div>
+<div class="paragraph">
+<p>The following table describes OpenCL C 3.0 or newer features and their
+meaning. The naming convention for the feature macros is
+<code>__opencl_c_&lt;name&gt;</code>.</p>
+</div>
+<div class="paragraph">
+<p>Feature macro identifiers are used as names of features in this document.</p>
+</div>
+<table id="table-optional-lang-features" class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. Optional features in OpenCL C 3.0 or newer and their predefined macros.</caption>
 <colgroup>
-<col style="width: 25%;">
-<col style="width: 75%;">
+<col style="width: 50%;">
+<col style="width: 50%;">
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-top"><strong>Feature Macro</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Feature Macro/Name</strong></th>
 <th class="tableblock halign-left valign-top"><strong>Brief Description</strong></th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_3d_image_writes</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions for writing to 3D image objects.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions for writing to 3D image
+objects.</p>
+<p class="tableblock">OpenCL C compilers that define the feature macro <code>__opencl_c_3d_image_writes</code>
+must also define the feature macro <code>__opencl_c_images</code>.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_atomic_order_acq_rel</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic operations with acquire and release memory consistency orders.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic
+operations with acquire and release memory consistency orders.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_atomic_order_seq_cst</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic operations and fences with sequentially consistent memory consistency order.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic
+operations and fences with sequentially consistent memory consistency order.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_atomic_scope_device</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic operations and fences with device memory scope.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic
+operations and fences with device memory scope.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_atomic_scope_all_devices</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic operations and fences with all with memory scope across all devices that can share SVM memory with each other and the host process.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports enumerations and built-in functions for atomic
+operations and fences with all with memory scope across all devices that can
+share SVM memory with each other and the host process.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_device_enqueue</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions to enqueue additional work from the device.</p>
-<p class="tableblock">OpenCL C compilers that define the feature macro <code>__opencl_c_device_enqueue</code> must also define the feature macro <code>__opencl_c_generic_address_space</code>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions to enqueue additional work
+from the device.</p>
+<p class="tableblock">OpenCL C compilers that define the feature macro <code>__opencl_c_device_enqueue</code>
+must also define the feature macro <code>__opencl_c_generic_address_space</code>.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_generic_address_space</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports the unnamed generic address space.</p></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_fp64</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports types and built-in functions with 64-bit
+floating point types.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_images</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports types and built-in functions for images.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_int64</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports types and built-in functions with 64-bit
+integers.</p>
+<p class="tableblock">OpenCL C compilers for FULL profile devices or devices with 64-bit pointers
+must always define the <code>__opencl_c_int64</code> feature macro.</p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_pipes</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports the pipe modifier and built-in functions to read and write from a pipe.</p>
-<p class="tableblock">OpenCL C compilers that define the feature macro <code>__opencl_c_pipes</code> must also define the feature macro <code>__opencl_c_generic_address_space</code>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports the pipe modifier and built-in functions
+to read and write from a pipe.</p>
+<p class="tableblock">OpenCL C compilers that define the feature macro <code>__opencl_c_pipes</code> must
+also define the feature macro <code>__opencl_c_generic_address_space</code>.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_program_scope_global_variables</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports program scope variables in the global address space.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports program scope variables in the global address
+space.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_read_write_images</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports reading from and writing to the same image object in a kernel.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports reading from and writing to the same image
+object in a kernel.</p>
+<p class="tableblock">OpenCL C compilers that define the feature macro
+<code>__opencl_c_read_write_images</code> must also define the feature macro
+<code>__opencl_c_images</code>.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_subgroups</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions operating on sub-groupings of work-items.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions operating on sub-groupings
+of work-items.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>__opencl_c_work_group_collective_functions</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions that perform collective operations across a work-group.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL C compiler supports built-in functions that perform collective
+operations across a work-group.</p></td>
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>In OpenCL C 3.0 or newer, feature macros must expand to the value <code>1</code> if the
+feature macro is defined by the OpenCL C compiler. A feature macro must not be
+defined if the feature is not supported by the OpenCL C compiler. A feature
+macro may expand to a different value in the future, but if this occurs the
+value of the feature macro must compare greater than the prior value of the
+feature macro.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="extensions"><a class="anchor" href="#extensions"></a>6.2.2. Extensions</h4>
+<div class="paragraph">
+<p>Optional functionality that is not defined in this document is referred to
+as extensions. Extensions are described in
+<a href="#opencl-extension-spec">the OpenCL Extension Specification</a>.</p>
+</div>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -1160,30 +1300,34 @@
 </td>
 <td class="content">
 <div class="paragraph">
-<p>The OpenCL 3.0 C programming language described in this specification is provisional.
-It has been Ratified under the Khronos Intellectual Property Framework and is being made publicly available to enable review and feedback from the community.</p>
-</div>
-<div class="paragraph">
-<p>If you have feedback please create an issue on <a href="https://github.com/KhronosGroup/OpenCL-Docs/" class="bare">https://github.com/KhronosGroup/OpenCL-Docs/</a></p>
+<p>Prior to OpenCL C 3.0 some optional features described in this document were
+referred to as optional core features. Their presence could be
+indicated by the predefined extension macros. If any of the features has been
+an optional extension in earlier OpenCL versions it can still be used as an
+extension i.e. the same predefined extension macros are still valid in OpenCL C
+3.0 or newer. However, the use of feature macros is preferred whenever
+possible.</p>
 </div>
 </td>
 </tr>
 </table>
 </div>
+</div>
+</div>
 <div class="sect2">
-<h3 id="supported-data-types">6.1. Supported Data Types</h3>
+<h3 id="supported-data-types"><a class="anchor" href="#supported-data-types"></a>6.3. Supported Data Types</h3>
 <div class="paragraph">
 <p>The following data types are supported.</p>
 </div>
 <div class="sect3">
-<h4 id="built-in-scalar-data-types">6.1.1. Built-in Scalar Data Types</h4>
+<h4 id="built-in-scalar-data-types"><a class="anchor" href="#built-in-scalar-data-types"></a>6.3.1. Built-in Scalar Data Types</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>The following table describes the list of built-in scalar data types.</p>
 </div>
 <table id="table-builtin-scalar-types" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 1. Built-in Scalar Data Types</caption>
+<caption class="title">Table 2. Built-in Scalar Data Types</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -1194,7 +1338,7 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>bool</code><sup>1</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>bool</code> <sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnotedef_1" title="View footnote.">1</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A conditional data type which is either <em>true</em> or <em>false</em>.
      The value <em>true</em> expands to the integer constant 1 and the value
      <em>false</em> expands to the integer constant 0.</p></td>
@@ -1224,11 +1368,11 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">An unsigned 32-bit integer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>long</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>long</code> <sup class="footnote" id="_footnote_long">[<a id="_footnoteref_2" class="footnote" href="#_footnotedef_2" title="View footnote.">2</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A signed two&#8217;s complement 64-bit integer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>unsigned long</code>, <code>ulong</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>unsigned long</code>, <code>ulong</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_2" title="View footnote.">2</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">An unsigned 64-bit integer.</p></td>
 </tr>
 <tr>
@@ -1238,10 +1382,12 @@
       storage format.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>double</code><sup>2</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>double</code> <sup class="footnote">[<a id="_footnoteref_3" class="footnote" href="#_footnotedef_3" title="View footnote.">3</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 64-bit floating-point.
       The <code>double</code> data type must conform to the IEEE 754 double precision
-      storage format.</p></td>
+      storage format.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.
+      Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>half</code></p></td>
@@ -1250,23 +1396,23 @@
       storage format.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The unsigned integer type<sup>3</sup> of the result of the <code>sizeof</code> operator.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code> <sup class="footnote" id="_footnote_size_t">[<a id="_footnoteref_4" class="footnote" href="#_footnotedef_4" title="View footnote.">4</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The unsigned integer type of the result of the <code>sizeof</code> operator.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ptrdiff_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A signed integer type<sup>3</sup> that is the result of subtracting two
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ptrdiff_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_4" title="View footnote.">4</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A signed integer type that is the result of subtracting two
       pointers.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>intptr_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A signed integer type<sup>3</sup> with the property that any valid pointer to
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>intptr_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_4" title="View footnote.">4</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A signed integer type with the property that any valid pointer to
       <code>void</code> can be converted to this type, then converted back to pointer
       to <code>void</code>, and the result will compare equal to the original pointer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>uintptr_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">An unsigned integer type<sup>3</sup> with the property that any valid pointer
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>uintptr_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_4" title="View footnote.">4</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">An unsigned integer type with the property that any valid pointer
       to <code>void</code> can be converted to this type, then converted back to
       pointer to <code>void</code>, and the result will compare equal to the original
       pointer.</p></td>
@@ -1279,19 +1425,6 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>[1] When any scalar value is converted to <code>bool</code>, the result is 0 if the
-value compares equal to 0; otherwise, the result is 1.</p>
-</div>
-<div class="paragraph">
-<p>[2] The <code>double</code> scalar type is an optional type that is supported if the
-value of the <a href="#opencl-device-queries"><code>CL_DEVICE_DOUBLE_FP_CONFIG</code> device
-query</a> is not zero.</p>
-</div>
-<div class="paragraph">
-<p>[3] These are 32-bit types if the value of the <a href="#opencl-device-queries"><code>CL_DEVICE_ADDRESS_BITS</code> device query</a> is 32-bits, and 64-bit types if the
-value of the query is 64-bits.</p>
-</div>
-<div class="paragraph">
 <p>Most built-in scalar data types 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 scalar data type in the OpenCL C
@@ -1350,7 +1483,7 @@
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>double</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_double</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_double</code> <sup class="footnote">[<a id="_footnoteref_5" class="footnote" href="#_footnotedef_5" title="View footnote.">5</a>]</sup></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>half</code></p></td>
@@ -1381,7 +1514,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="the-half-data-type">The <code>half</code> Data Type</h5>
+<h5 id="the-half-data-type"><a class="anchor" href="#the-half-data-type"></a>6.3.1.1. The <code>half</code> Data Type</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -1451,31 +1584,36 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="built-in-vector-data-types">6.1.2. Built-in Vector Data Types<sup>4</sup></h4>
+<h4 id="built-in-vector-data-types"><a class="anchor" href="#built-in-vector-data-types"></a>6.3.2. Built-in Vector Data Types</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The <code>char</code>, <code>unsigned char</code>, <code>short</code>, <code>unsigned short</code>, <code>int</code>, <code>unsigned
-int</code>, <code>long</code>, <code>unsigned long</code>, and <code>float</code> vector data types are supported.
-The vector data type is defined with the type name, i.e. <code>char</code>, <code>uchar</code>,
-<code>short</code>, <code>ushort</code>, <code>int</code>, <code>uint</code>, <code>long</code>, <code>ulong</code>, or <code>float</code>, followed by a
-literal value <em>n</em> that defines the number of elements in the vector.
+<p>The <code>char</code>, <code>unsigned char</code>, <code>short</code>, <code>unsigned short</code>, <code>int</code>, <code>unsigned int</code>,
+<code>long</code>, <code>unsigned long</code>, <code>float</code> and <code>double vector data types are supported.
+<sup class="footnote">[<a id="_footnoteref_6" class="footnote" href="#_footnotedef_6" title="View footnote.">6</a>]</sup>
+The vector data type is defined with the type name, i.e. `char</code>, <code>uchar</code>,
+<code>short</code>, <code>ushort</code>, <code>int</code>, <code>uint</code>, <code>long</code>, <code>ulong</code>, <code>float</code>, or <code>double</code>
+followed by a literal value <em>n</em> that defines the number of elements in the
+vector.
 Supported values of <em>n</em> are 2, 3, 4, 8, and 16 for all vector data types.</p>
 </div>
-<div class="paragraph">
-<p>[4] Built-in vector data types are supported by the OpenCL implementation
-even if the underlying compute device does not support any or all of the
-vector data types.
-These are to be converted by the device compiler to appropriate instructions
-that use underlying built-in types supported natively by the compute device.
-Refer to Appendix B for a description of the order of the components of a
-vector type in memory.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Vector types with three elements, i.e. where <em>n</em> is 3, <a href="#unified-spec">require</a> support for OpenCL C 1.1 or newer.
+</td>
+</tr>
+</table>
 </div>
 <div class="paragraph">
 <p>The following table describes the list of built-in vector data types.</p>
 </div>
 <table id="table-builtin-vector-types" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 2. Built-in Vector Data Types</caption>
+<caption class="title">Table 3. Built-in Vector Data Types</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -1510,11 +1648,11 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">A vector of <em>n</em> 32-bit unsigned integer values.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>long<em>n</em></code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>long<em>n</em></code> <sup class="footnote" id="_footnote_long-vec">[<a id="_footnoteref_7" class="footnote" href="#_footnotedef_7" title="View footnote.">7</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A vector of <em>n</em> 64-bit signed two&#8217;s complement integer values.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ulong<em>n</em></code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ulong<em>n</em></code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_7" title="View footnote.">7</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A vector of <em>n</em> 64-bit unsigned integer values.</p></td>
 </tr>
 <tr>
@@ -1522,17 +1660,14 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">A vector of <em>n</em> 32-bit floating-point values.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>double<em>n</em></code><sup>5</sup></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A vector of <em>n</em> 64-bit floating-point values.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>double<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_8" class="footnote" href="#_footnotedef_8" title="View footnote.">8</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A vector of <em>n</em> 64-bit floating-point values.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.
+      Also see extension <strong>cl_khr_fp64</strong>.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>[5] The <code>double</code> vector type is an optional type that is supported if the
-value of the <a href="#opencl-device-queries"><code>CL_DEVICE_DOUBLE_FP_CONFIG</code> device
-query</a> is not zero.</p>
-</div>
-<div class="paragraph">
 <p>The built-in vector data types 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 type in the OpenCL C
@@ -1595,7 +1730,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="other-built-in-data-types">6.1.3. Other Built-in Data Types</h4>
+<h4 id="other-built-in-data-types"><a class="anchor" href="#other-built-in-data-types"></a>6.3.3. Other Built-in Data Types</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -1603,7 +1738,7 @@
 OpenCL.</p>
 </div>
 <table id="table-other-builtin-types" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 3. Other Built-in Data Types</caption>
+<caption class="title">Table 4. Other Built-in Data Types</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -1614,69 +1749,77 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D image<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_t</code> <sup class="footnote" id="_footnote_image-functions">[<a id="_footnoteref_9" class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D image.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image3d_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 3D image<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image3d_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 3D image.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_array_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D image array<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_array_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D image array.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image1d_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 1D image<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image1d_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 1D image.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image1d_buffer_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 1D image created from a buffer object<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image1d_buffer_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 1D image created from a buffer object.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image1d_array_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 1D image array<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image1d_array_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 1D image array.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_depth_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D depth image<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_depth_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D depth image.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_array_depth_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D depth image array<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>image2d_array_depth_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A 2D depth image array.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sampler_t</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A sampler type<sup>6</sup>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sampler_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_9" title="View footnote.">9</a>]</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A sampler type.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>queue_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A device command queue.
       This queue can only be used to enqueue commands from kernels executing
       on the device.</p>
-<p class="tableblock">      Requires support for OpenCL C 2.0 or the <code>__opencl_c_device_enqueue</code>
-      feature macro.</p></td>
+<p class="tableblock">      <a href="#unifed-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_device_enqueue</code> feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>ndrange_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The N-dimensional range over which a kernel executes.</p>
-<p class="tableblock">      Requires support for OpenCL C 2.0 or the <code>__opencl_c_device_enqueue</code>
-      feature macro.</p></td>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_device_enqueue</code> feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>clk_event_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A device side event that identifies a command enqueue to
       a device command queue.</p>
-<p class="tableblock">      Requires support for OpenCL C 2.0 or the <code>__opencl_c_device_enqueue</code>
-      feature macro.</p></td>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_device_enqueue</code> feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>reserve_id_t</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A reservation ID.
       This opaque type is used to identify the reservation for
       <a href="#pipe-functions">reading and writing a pipe</a>.</p>
-<p class="tableblock">      Requires support for OpenCL C 2.0 or the <code>__opencl_c_pipes</code>
-      feature macro.</p></td>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_pipes</code> feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>event_t</code></p></td>
@@ -1696,10 +1839,6 @@
 </tr>
 </tbody>
 </table>
-<div class="paragraph">
-<p>[6] Refer to the detailed description of the built-in
-<a href="#image-read-and-write-functions">functions that use this type</a>.</p>
-</div>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -1711,7 +1850,9 @@
 <p>The <code>image2d_t</code>, <code>image3d_t</code>, <code>image2d_array_t</code>, <code>image1d_t</code>,
 <code>image1d_buffer_t</code>, <code>image1d_array_t</code>, <code>image2d_depth_t</code>,
 <code>image2d_array_depth_t</code> and <code>sampler_t</code> types are only defined if the device
-supports images, i.e. the value of the <a href="#opencl-device-queries"><code>CL_DEVICE_IMAGE_SUPPORT</code> device query</a>) is <code>CL_TRUE</code>.</p>
+supports images, i.e. the value of the <a href="#opencl-device-queries"><code>CL_DEVICE_IMAGE_SUPPORT</code> device query</a>) is <code>CL_TRUE</code>.
+If this is the case then an OpenCL C 3.0 or newer compiler must also define
+the <code>__opencl_c_images</code> feature macro.</p>
 </div>
 </td>
 </tr>
@@ -1805,7 +1946,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="reserved-data-types">6.1.4. Reserved Data Types</h4>
+<h4 id="reserved-data-types"><a class="anchor" href="#reserved-data-types"></a>6.3.4. Reserved Data Types</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -1815,7 +1956,7 @@
 where <em>n</em> is any value other than 2, 3, 4, 8 and 16, are also reserved.</p>
 </div>
 <table id="table-reserved-types" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 4. Reserved Data Types</caption>
+<caption class="title">Table 5. Reserved Data Types</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -1901,7 +2042,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="alignment-of-types">6.1.5. Alignment of Types</h4>
+<h4 id="alignment-of-types"><a class="anchor" href="#alignment-of-types"></a>6.3.5. Alignment of Types</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -1943,7 +2084,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="vector-literals">6.1.6. Vector Literals</h4>
+<h4 id="vector-literals"><a class="anchor" href="#vector-literals"></a>6.3.6. Vector Literals</h4>
 <div class="paragraph">
 <p>Vector literals can be used to create vectors from a list of scalars,
 vectors or a mixture thereof.
@@ -2001,7 +2142,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="vector-components">6.1.7. Vector Components</h4>
+<h4 id="vector-components"><a class="anchor" href="#vector-components"></a>6.3.7. Vector Components</h4>
 <div class="paragraph">
 <p>The components of vector data types can be addressed as
 <code>&lt;vector_data_type&gt;.xyzw</code>.
@@ -2095,7 +2236,7 @@
 The numeric indices that can be used are given in the table below:</p>
 </div>
 <table id="table-vector-indices" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 5. Numeric indices for built-in vector data types</caption>
+<caption class="title">Table 6. Numeric indices for built-in vector data types</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -2274,21 +2415,17 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="aliasing-rules">6.1.8. Aliasing Rules</h4>
+<h4 id="aliasing-rules"><a class="anchor" href="#aliasing-rules"></a>6.3.8. Aliasing Rules</h4>
 <div class="paragraph">
 <p>OpenCL C programs shall comply with the C99 type-based aliasing rules
 defined in <a href="#C99-spec">section 6.5, item 7 of the C99 Specification</a>.
-The OpenCL C built-in vector data types are considered aggregate<sup>7</sup> types
-for the purpose of applying these aliasing rules.</p>
-</div>
-<div class="paragraph">
-<p>[7] That is, for the purpose of applying type-based aliasing rules, a
-built-in vector data type will be considered equivalent to the corresponding
-array type.</p>
+The OpenCL C built-in vector data types are considered aggregate types
+<sup class="footnote">[<a id="_footnoteref_10" class="footnote" href="#_footnotedef_10" title="View footnote.">10</a>]</sup> for the purpose of applying these
+aliasing rules.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="keywords">6.1.9. Keywords</h4>
+<h4 id="keywords"><a class="anchor" href="#keywords"></a>6.3.9. Keywords</h4>
 <div class="paragraph">
 <p>The following names are reserved for use as keywords in OpenCL C and shall
 not be used otherwise.</p>
@@ -2322,12 +2459,13 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="conversions-and-type-casting">6.2. Conversions and Type Casting</h3>
+<h3 id="conversions-and-type-casting"><a class="anchor" href="#conversions-and-type-casting"></a>6.4. Conversions and Type Casting</h3>
 <div class="sect3">
-<h4 id="implicit-conversions">6.2.1. Implicit Conversions</h4>
+<h4 id="implicit-conversions"><a class="anchor" href="#implicit-conversions"></a>6.4.1. Implicit Conversions</h4>
 <div class="paragraph">
 <p>Implicit conversions between scalar built-in types defined in
-<a href="#table-builtin-scalar-types">Built-in Scalar Data Types</a> (except <code>void</code> and <code>half</code><sup>8</sup>) are supported.
+<a href="#table-builtin-scalar-types">Built-in Scalar Data Types</a> (except <code>void</code> and <code>half</code>
+<sup class="footnote">[<a id="_footnoteref_11" class="footnote" href="#_footnotedef_11" title="View footnote.">11</a>]</sup>) are supported.
 When an implicit conversion is done, it is not just a re-interpretation of
 the expression&#8217;s value but a conversion of that value to an equivalent value
 in the new type.
@@ -2335,9 +2473,6 @@
 value 5.0.</p>
 </div>
 <div class="paragraph">
-<p>[8] Unless the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.</p>
-</div>
-<div class="paragraph">
 <p>Implicit conversions from a scalar type to a vector type are allowed.
 In this case, the scalar may be subject to the usual arithmetic conversion
 to the element type used by the vector.
@@ -2352,11 +2487,11 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="explicit-casts">6.2.2. Explicit Casts</h4>
+<h4 id="explicit-casts"><a class="anchor" href="#explicit-casts"></a>6.4.2. Explicit Casts</h4>
 <div class="paragraph">
 <p>Standard typecasts for built-in scalar data types defined in
 <a href="#table-builtin-scalar-types">Built-in Scalar Data Types</a> will perform appropriate conversion (except
-<code>void</code> and <code>half</code><sup>9</sup>).
+<code>void</code> and <code>half</code> <sup class="footnote">[<a id="_footnoteref_12" class="footnote" href="#_footnotedef_12" title="View footnote.">12</a>]</sup>).
 In the example below:</p>
 </div>
 <div class="paragraph">
@@ -2429,7 +2564,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="explicit-conversions">6.2.3. Explicit Conversions</h4>
+<h4 id="explicit-conversions"><a class="anchor" href="#explicit-conversions"></a>6.4.3. Explicit Conversions</h4>
 <div class="paragraph">
 <p>Explicit conversions may be performed using the</p>
 </div>
@@ -2499,7 +2634,7 @@
 <p>where <code>destTypen</code> is the n-element destination vector type and <code>sourceTypen</code> is the n-element source vector type.</p>
 </div>
 <div class="sect4">
-<h5 id="data-types">Data Types</h5>
+<h5 id="data-types"><a class="anchor" href="#data-types"></a>6.4.3.1. Data Types</h5>
 <div class="paragraph">
 <p>Conversions are available for the following scalar types: <code>char</code>, <code>uchar</code>,
 <code>short</code>, <code>ushort</code>, <code>int</code>, <code>uint</code>, <code>long</code>, <code>ulong</code>, <code>float</code>, and built-in
@@ -2516,7 +2651,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="rounding-modes">Rounding Modes</h5>
+<h5 id="rounding-modes"><a class="anchor" href="#rounding-modes"></a>6.4.3.2. Rounding Modes</h5>
 <div class="paragraph">
 <p>Conversions to and from floating-point type shall conform to IEEE-754
 rounding rules.
@@ -2524,7 +2659,7 @@
 following table.</p>
 </div>
 <table id="table-rounding-mode" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 6. Rounding Modes</caption>
+<caption class="title">Table 7. Rounding Modes</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -2561,21 +2696,14 @@
 </table>
 <div class="paragraph">
 <p>By default, conversions to integer type use the <code>_rtz</code> (round toward zero)
-rounding mode and conversions to floating-point type<sup>10</sup> use the default
-rounding mode.
+rounding mode and conversions to floating-point type
+<sup class="footnote">[<a id="_footnoteref_13" class="footnote" href="#_footnotedef_13" title="View footnote.">13</a>]</sup> use the default rounding mode.
 The only default floating-point rounding mode supported is round to nearest
 even i.e the default rounding mode will be <code>_rte</code> for floating-point types.</p>
 </div>
-<div class="paragraph">
-<p>[10] For conversions to floating-point format, when a finite source value
-exceeds the maximum representable finite floating-point destination value,
-the rounding mode will affect whether the result is the maximum finite
-floating-point value or infinity of same sign as the source value, per
-IEEE-754 rules for rounding.</p>
-</div>
 </div>
 <div class="sect4">
-<h5 id="out-of-range-behavior">Out-of-Range Behavior and Saturated Conversions</h5>
+<h5 id="out-of-range-behavior"><a class="anchor" href="#out-of-range-behavior"></a>6.4.3.3. Out-of-Range Behavior and Saturated Conversions</h5>
 <div class="paragraph">
 <p>When the conversion operand is either greater than the greatest
 representable destination value or less than the least representable
@@ -2599,7 +2727,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="explicit-conversion-examples">Explicit Conversion Examples</h5>
+<h5 id="explicit-conversion-examples"><a class="anchor" href="#explicit-conversion-examples"></a>6.4.3.4. Explicit Conversion Examples</h5>
 <div class="paragraph">
 <p>Example 1:</p>
 </div>
@@ -2659,33 +2787,21 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="reinterpreting-data-as-another-type">6.2.4. Reinterpreting Data As Another Type</h4>
+<h4 id="reinterpreting-data-as-another-type"><a class="anchor" href="#reinterpreting-data-as-another-type"></a>6.4.4. Reinterpreting Data As Another Type</h4>
 <div class="paragraph">
 <p>It is frequently necessary to reinterpret bits in a data type as another
 data type in OpenCL.
 This is typically required when direct access to the bits in a
 floating-point type is needed, for example to mask off the sign bit or make
 use of the result of a vector <a href="#operators-relational">relational operator</a>
-on floating-point data<sup>11</sup>.
+on floating-point data <sup class="footnote">[<a id="_footnoteref_14" class="footnote" href="#_footnotedef_14" title="View footnote.">14</a>]</sup>.
 Several methods to achieve this (non-) conversion are frequently practiced
 in C, including pointer aliasing, unions and memcpy.
 Of these, only memcpy is strictly correct in C99.
 Since OpenCL does not provide <strong>memcpy</strong>, other methods are needed.</p>
 </div>
-<div class="paragraph">
-<p>[11] In addition, some other extensions to the C language designed to support
-particular vector ISA (e.g. AltiVec™, CELL Broadband Engine™
-Architecture) use such conversions in conjunction with swizzle operators to
-achieve type unconversion.
-So as to support legacy code of this type, <strong>as_typen</strong>() allows conversions
-between vectors of the same size but different numbers of elements, even
-though the behavior of this sort of conversion is not likely to be portable
-except to other OpenCL implementations for the same hardware architecture.
-AltiVec is a trademark of Motorola Inc.
-Cell Broadband Engine is a trademark of Sony Computer Entertainment, Inc.</p>
-</div>
 <div class="sect4">
-<h5 id="reinterpreting-types-using-unions">Reinterpreting Types Using Unions</h5>
+<h5 id="reinterpreting-types-using-unions"><a class="anchor" href="#reinterpreting-types-using-unions"></a>6.4.4.1. Reinterpreting Types Using Unions</h5>
 <div class="paragraph">
 <p>The OpenCL language extends the union to allow the program to access a
 member of a union object using a member of a different type.
@@ -2717,51 +2833,22 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="reinterpreting-types-using-as_type-and-as_typen">Reinterpreting Types Using <strong>as_type</strong>() and <strong>as_type<em>n</em></strong>()</h5>
+<h5 id="reinterpreting-types-using-as_type-and-as_typen"><a class="anchor" href="#reinterpreting-types-using-as_type-and-as_typen"></a>6.4.4.2. Reinterpreting Types Using <strong>as_type</strong>() and <strong>as_type<em>n</em></strong>()</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>All data types described in <a href="#table-builtin-scalar-types">Built-in Scalar Data Types</a> and
-<a href="#table-builtin-vector-types">Built-in Vector Data Types</a> (except <code>bool</code>, <code>half</code><sup>12</sup> and <code>void</code>) may be
-also reinterpreted as another data type of the same size using the
-<strong>as_type</strong>() operator for scalar data types and the <strong>as_type<em>n</em></strong>()
-operator<sup>13</sup> for vector data types.
+<a href="#table-builtin-vector-types">Built-in Vector Data Types</a> (except <code>bool</code>, <code>void</code>, and <code>half</code>
+<sup class="footnote">[<a id="_footnoteref_15" class="footnote" href="#_footnotedef_15" title="View footnote.">15</a>]</sup>) may be also reinterpreted as another data type of
+the same size using the <strong>as_type</strong>() operator for scalar data types and the
+<strong>as_type<em>n</em></strong>() operator <sup class="footnote">[<a id="_footnoteref_16" class="footnote" href="#_footnotedef_16" title="View footnote.">16</a>]</sup> for vector
+data types.
 When the operand and result type contain the same number of elements, the
 bits in the operand shall be returned directly without modification as the
 new type.
 The usual type promotion for function arguments shall not be performed.</p>
 </div>
 <div class="paragraph">
-<p>[12] Unless the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.</p>
-</div>
-<div class="paragraph">
-<p>[13] While the union is intended to reflect the organization of data in
-memory, the <strong>as_type</strong>() and <strong>as_type<em>n</em></strong>() constructs are intended to
-reflect the organization of data in register.
-The <strong>as_type</strong>() and <strong>as_type<em>n</em></strong>() constructs are intended to compile to
-no instructions on devices that use a shared register file designed to
-operate on both the operand and result types.
-Note that while differences in memory organization are expected to largely
-be limited to those arising from endianness, the register based
-representation may also differ due to size of the element in register.
-(For example, an architecture may load a <code>char</code> into a 32-bit register, or a
-<code>char</code> vector into a SIMD vector register with fixed 32-bit element size.)
-If the element count does not match, then the implementation should pick a
-data representation that most closely matches what would happen if an
-appropriate result type operator was applied to a register containing data
-of the source type.
-If the number of elements matches, then the <strong>as_type<em>n</em></strong>() should
-faithfully reproduce the behavior expected from a similar data type
-reinterpretation using memory/unions.
-So, for example if an implementation stores all single precision data as
-<code>double</code> in register, it should implement <strong>as_int</strong>(<code>float</code>) by first
-downconverting the <code>double</code> to single precision and then (if necessary)
-moving the single precision bits to a register suitable for operating on
-integer data.
-If data stored in different address spaces do not have the same endianness,
-then the &#8220;dominant endianness&#8221; of the device should prevail.</p>
-</div>
-<div class="paragraph">
 <p>For example, <code><strong>as_float</strong>(0x3f800000)</code> returns <code>1.0f</code>, which is the value
 that the bit pattern <code>0x3f800000</code> has if viewed as an IEEE-754 single
 precision value.</p>
@@ -2821,7 +2908,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="pointer-casting">6.2.5. Pointer Casting</h4>
+<h4 id="pointer-casting"><a class="anchor" href="#pointer-casting"></a>6.4.5. Pointer Casting</h4>
 <div class="paragraph">
 <p>Pointers to old and new types may be cast back and forth to each other.
 Casting a pointer to a new type represents an unchecked assertion that the
@@ -2832,7 +2919,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="usual-arithmetic-conversions">6.2.6. Usual Arithmetic Conversions</h4>
+<h4 id="usual-arithmetic-conversions"><a class="anchor" href="#usual-arithmetic-conversions"></a>6.4.6. Usual Arithmetic Conversions</h4>
 <div class="paragraph">
 <p>Many operators that expect operands of arithmetic type cause conversions and
 yield result types in a similar way.
@@ -2879,7 +2966,8 @@
 </li>
 <li>
 <p>The rank of an unsigned integer type is <strong>greater than</strong> the rank of a
-signed integer type with the same precision<sup>14</sup>.</p>
+signed integer type with the same precision
+<sup class="footnote">[<a id="_footnoteref_17" class="footnote" href="#_footnotedef_17" title="View footnote.">17</a>]</sup>.</p>
 </li>
 <li>
 <p>The rank of the bool type is less than the rank of any other type.</p>
@@ -2896,10 +2984,6 @@
 </ol>
 </div>
 <div class="paragraph">
-<p>[14] This is different from the standard integer conversion rank described in
-<a href="#C99-spec">section 6.3.1.1 of the C99 Specification</a></p>
-</div>
-<div class="paragraph">
 <p>Otherwise, if all operands are scalar, the usual arithmetic conversions
 apply, per <a href="#C99-spec">section 6.3.1.8 of the C99 Specification</a>.</p>
 </div>
@@ -2927,9 +3011,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="operators">6.3. Operators</h3>
+<h3 id="operators"><a class="anchor" href="#operators"></a>6.5. Operators</h3>
 <div class="sect3">
-<h4 id="operators-arithmetic">6.3.1. Arithmetic Operators</h4>
+<h4 id="operators-arithmetic"><a class="anchor" href="#operators-arithmetic"></a>6.5.1. Arithmetic Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -2979,7 +3063,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-unary">6.3.2. Unary Operators</h4>
+<h4 id="operators-unary"><a class="anchor" href="#operators-unary"></a>6.5.2. Unary Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -2990,13 +3074,13 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-prepost">6.3.3. Pre- and Post-Operators</h4>
+<h4 id="operators-prepost"><a class="anchor" href="#operators-prepost"></a>6.5.3. Pre- and Post-Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>The arithmetic post- and pre-increment and decrement operators (<strong>--</strong> and
 <strong>++</strong>) operate on built-in scalar and vector types except the built-in scalar
-and vector <code>float</code> types<sup>15</sup>.
+and vector <code>float</code> types <sup class="footnote">[<a id="_footnoteref_18" class="footnote" href="#_footnotedef_18" title="View footnote.">18</a>]</sup>.
 All unary operators work component-wise on their operands.
 These result with the same type they operated on.
 For post- and pre-increment and decrement, the expression must be one that
@@ -3009,36 +3093,20 @@
 the expression&#8217;s value before the post-increment or post-decrement was
 executed.</p>
 </div>
-<div class="paragraph">
-<p>[15] The pre- and post- increment operators may have unexpected behavior on
-floating-point values and are therefore not supported for floating-point
-scalar and vector built-in types.
-For example, if variable <em>a</em> has type <code>float</code> and holds the value
-<code>0x1.0p25f</code>, then <code><em>a</em>++</code> returns <code>0x1.0p25f</code>.
-Also, <code>(<em>a</em>++)--</code> is not guaranteed to return <em>a</em>, if <em>a</em> has fractional
-value.
-In non-default rounding modes, <code>(<em>a</em>++)--</code> may produce the same result as
-<code><em>a</em>++</code> or <code><em>a</em>--</code> for large <em>a</em>.</p>
-</div>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-relational">6.3.4. Relational Operators</h4>
+<h4 id="operators-relational"><a class="anchor" href="#operators-relational"></a>6.5.4. Relational Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The relational operators<sup>16</sup> greater than (<strong>&gt;</strong>), less than (<strong>&lt;</strong>), greater
-than or equal (<strong>&gt;=</strong>), and less than or equal (<strong>&lt;=</strong>) operate on scalar and
-vector types.
+<p>The relational operators greater than (<strong>&gt;</strong>), less than (<strong>&lt;</strong>), greater than or
+equal (<strong>&gt;=</strong>), and less than or equal (<strong>&lt;=</strong>) operate on scalar and vector types
+<sup class="footnote">[<a id="_footnoteref_19" class="footnote" href="#_footnotedef_19" title="View footnote.">19</a>]</sup>.
 All relational operators result in an integer type.
 After operand type conversion, the following cases are valid:</p>
 </div>
-<div class="paragraph">
-<p>[16] To test whether any or all elements in the result of a vector relational
-operator test <em>true</em>, for example to use in the context in an <strong>if ( )</strong>
-statement, please see the <a href="#relational-functions"><strong>any</strong> and <strong>all</strong> builtins</a>.</p>
-</div>
 <div class="ulist">
 <ul>
 <li>
@@ -3085,20 +3153,15 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-equality">6.3.5. Equality Operators</h4>
+<h4 id="operators-equality"><a class="anchor" href="#operators-equality"></a>6.5.5. Equality Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The equality operators<sup>17</sup> equal (<strong>==</strong>) and not equal (<strong>!=</strong>) operate on
-built-in scalar and vector types.
+<p>The equality operators equal (<strong>==</strong>) and not equal (<strong>!=</strong>) operate on
+built-in scalar and vector types <sup class="footnote">[<a id="_footnoteref_20" class="footnote" href="#_footnotedef_20" title="View footnote.">20</a>]</sup>.
 All equality operators result in an integer type.
 After operand type conversion, the following cases are valid:</p>
 </div>
-<div class="paragraph">
-<p>[17] To test whether any or all elements in the result of a vector equality
-operator test true, for example to use in the context in an <strong>if ( )</strong>
-statement, please see the <a href="#relational-functions"><strong>any</strong> and <strong>all</strong> builtins</a>.</p>
-</div>
 <div class="ulist">
 <ul>
 <li>
@@ -3150,7 +3213,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-bitwise">6.3.6. Bitwise Operators</h4>
+<h4 id="operators-bitwise"><a class="anchor" href="#operators-bitwise"></a>6.5.6. Bitwise Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3169,7 +3232,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-logical">6.3.7. Logical Operators</h4>
+<h4 id="operators-logical"><a class="anchor" href="#operators-logical"></a>6.5.7. Logical Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3212,7 +3275,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-logical-unary">6.3.8. Unary Logical Operator</h4>
+<h4 id="operators-logical-unary"><a class="anchor" href="#operators-logical-unary"></a>6.5.8. Unary Logical Operator</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3243,7 +3306,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-ternary-selection">6.3.9. Ternary Selection Operator</h4>
+<h4 id="operators-ternary-selection"><a class="anchor" href="#operators-ternary-selection"></a>6.5.9. Ternary Selection Operator</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3268,7 +3331,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-shift">6.3.10. Shift Operators</h4>
+<h4 id="operators-shift"><a class="anchor" href="#operators-shift"></a>6.5.10. Shift Operators</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3281,18 +3344,14 @@
 operand can be a vector or scalar if the first operand is a vector.</p>
 </div>
 <div class="paragraph">
-<p>The result of <code>E1</code> <strong>&lt;&lt;</strong> <code>E2</code> is <code>E1</code> left-shifted by log<sub>2</sub>(N) least
-significant bits in <code>E2</code> viewed as an unsigned integer value, where N is the
-number of bits used to represent the data type of <code>E1</code> after integer
-promotion<sup>18</sup>, if <code>E1</code> is a scalar, or the number of bits used to represent
-the type of <code>E1</code> elements, if <code>E1</code> is a vector.
+<p>The result of <code>E1</code> <strong>&lt;&lt;</strong> <code>E2</code> is <code>E1</code> left-shifted by log<sub>2</sub>(N) least significant
+bits in <code>E2</code> viewed as an unsigned integer value, where N is the number of bits
+used to represent the data type of <code>E1</code> after integer promotion
+<sup class="footnote">[<a id="_footnoteref_21" class="footnote" href="#_footnotedef_21" title="View footnote.">21</a>]</sup>, if <code>E1</code> is a scalar, or the number of bits
+used to represent the type of <code>E1</code> elements, if <code>E1</code> is a vector.
 The vacated bits are filled with zeros.</p>
 </div>
 <div class="paragraph">
-<p>[18] Integer promotion is described in <a href="#C99-spec">section 6.3.1.1 of the C99
-Specification</a>.</p>
-</div>
-<div class="paragraph">
 <p>The result of <code>E1</code> <strong>&gt;&gt;</strong> <code>E2</code> is <code>E1</code> right-shifted by log<sub>2</sub>(N) least
 significant bits in <code>E2</code> viewed as an unsigned integer value, where N is the
 number of bits used to represent the data type of <code>E1</code> after integer
@@ -3307,7 +3366,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-sizeof">6.3.11. Sizeof Operator</h4>
+<h4 id="operators-sizeof"><a class="anchor" href="#operators-sizeof"></a>6.5.11. Sizeof Operator</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3316,13 +3375,10 @@
 an expression or the parenthesized name of a type.
 The size is determined from the type of the operand.
 The result is of type <code>size_t</code>.
-If the type of the operand is a variable length array<sup>19</sup> type, the operand
-is evaluated; otherwise, the operand is not evaluated and the result is an
-integer constant.</p>
-</div>
-<div class="paragraph">
-<p>[19] Variable length arrays are <a href="#restrictions-variable-length">not supported
-in OpenCL C</a>.</p>
+If the type of the operand is a variable length array
+<sup class="footnote">[<a id="_footnoteref_22" class="footnote" href="#_footnotedef_22" title="View footnote.">22</a>]</sup> type, the operand is
+evaluated; otherwise, the operand is not evaluated and the result is an integer
+constant.</p>
 </div>
 <div class="paragraph">
 <p>When applied to an operand that has type <code>char</code> or <code>uchar</code>, the result is 1.
@@ -3332,8 +3388,8 @@
 result is 4.
 When applied to an operand that has type <code>long</code>, <code>ulong</code> or <code>double</code>, the
 result is 8.
-When applied to an operand that is a vector type, the result<sup>20</sup> is number of
-components times the size of each scalar component.
+When applied to an operand that is a vector type, the result is the number of
+components times the size of each scalar component <sup class="footnote">[<a id="_footnoteref_23" class="footnote" href="#_footnotedef_23" title="View footnote.">23</a>]</sup>.
 When applied to an operand that has array type, the result is the total
 number of bytes in the array.
 When applied to an operand that has structure or union type, the result is
@@ -3341,15 +3397,8 @@
 padding.
 The <code>sizeof</code> operator shall not be applied to an expression that has
 function type or an incomplete type, to the parenthesized name of such a
-type, or to an expression that designates a bit-field struct member<sup>21</sup>.</p>
-</div>
-<div class="paragraph">
-<p>[20] Except for 3-component vectors whose size is defined as 4 times the size
-of each scalar component.</p>
-</div>
-<div class="paragraph">
-<p>[21] Bit-field struct members are <a href="#restrictions-bitfield">not supported in
-OpenCL C</a>.</p>
+type, or to an expression that designates a bit-field struct member
+<sup class="footnote">[<a id="_footnoteref_24" class="footnote" href="#_footnotedef_24" title="View footnote.">24</a>]</sup>.</p>
 </div>
 <div class="paragraph">
 <p>The behavior of applying the <code>sizeof</code> operator to the <code>bool</code>, <code>image2d_t</code>,
@@ -3362,7 +3411,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-comma">6.3.12. Comma Operator</h4>
+<h4 id="operators-comma"><a class="anchor" href="#operators-comma"></a>6.5.12. Comma Operator</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3374,7 +3423,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-indirection">6.3.13. Indirection Operator</h4>
+<h4 id="operators-indirection"><a class="anchor" href="#operators-indirection"></a>6.5.13. Indirection Operator</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3383,22 +3432,14 @@
 object.
 If the operand has type "pointer to <em>type</em>", the result has type
 "<em>type</em>".
-If an invalid value has been assigned to the pointer, the behavior of the
-unary <strong>*</strong> operator is undefined<sup>22</sup>.</p>
-</div>
-<div class="paragraph">
-<p>[22] Among the invalid values for dereferencing a pointer by the unary <strong>*</strong>
-operator are a null pointer, an address inappropriately aligned for the type
-of object pointed to, and the address of an object after the end of its
-lifetime.
-If <strong>*P</strong> is an l-value and <strong>T</strong> is the name of an object pointer type, <strong>*(T)P</strong>
-is an l-value that has a type compatible with that to which <strong>T</strong> points.</p>
+If an invalid value has been assigned to the pointer, the behavior of the unary
+<strong>*</strong> operator is undefined <sup class="footnote">[<a id="_footnoteref_25" class="footnote" href="#_footnotedef_25" title="View footnote.">25</a>]</sup>.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-address">6.3.14. Address Operator</h4>
+<h4 id="operators-address"><a class="anchor" href="#operators-address"></a>6.5.14. Address Operator</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3414,32 +3455,25 @@
 result is as if the <strong>&amp;</strong> operator were removed and the <strong>[]</strong> operator were
 changed to a <strong>+</strong> operator.
 Otherwise, the result is a pointer to the object designated by its
-operand<sup>23</sup>.</p>
-</div>
-<div class="paragraph">
-<p>[23] Thus, <strong>&amp;*E</strong> is equivalent to <strong>E</strong> (even if <strong>E</strong> is a null pointer), and
-<strong>&amp;(E1[E2])</strong> is equivalent to <strong>((E1) +  (E2))</strong>.
-It is always true that if <strong>E</strong> is an l-value that is a valid operand of the
-unary <strong>&amp;</strong> operator, <strong>*&amp;E</strong> is an l-value equal to <strong>E</strong>.</p>
+operand <sup class="footnote">[<a id="_footnoteref_26" class="footnote" href="#_footnotedef_26" title="View footnote.">26</a>]</sup>.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="operators-assignment">6.3.15. Assignment Operator</h4>
+<h4 id="operators-assignment"><a class="anchor" href="#operators-assignment"></a>6.5.15. Assignment Operator</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>Assignments of values to variable names are done with the assignment
 operator (<strong>=</strong>), like</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><em>lvalue</em> = <em>expression</em></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>The assignment operator stores the value of <em>expression</em> into <em>lvalue</em>.
@@ -3479,24 +3513,22 @@
 <div class="paragraph">
 <p>The expression</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
-<p><em>lvalue</em> <em>op</em>*=* <em>expression</em></p>
-</dd>
-</dl>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p><em>lvalue</em> <em>op</em> <strong>=</strong> <em>expression</em></p>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>is equivalent to</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><em>lvalue</em> = <em>lvalue</em> <em>op</em> <em>expression</em></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>and the <em>lvalue</em> and <em>expression</em> must satisfy the requirements for both
@@ -3522,7 +3554,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="vector-operations">6.4. Vector Operations</h3>
+<h3 id="vector-operations"><a class="anchor" href="#vector-operations"></a>6.6. Vector Operations</h3>
 <div class="paragraph">
 <p>Vector operations are component-wise.
 Usually, when an operator operates on a vector, it is operating
@@ -3577,7 +3609,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="address-space-qualifiers">6.5. Address Space Qualifiers</h3>
+<h3 id="address-space-qualifiers"><a class="anchor" href="#address-space-qualifiers"></a>6.7. Address Space Qualifiers</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3604,9 +3636,10 @@
 <p>Additionally, all function return values shall be in the <code>__private</code> address space.</p>
 </div>
 <div class="paragraph">
-<p>For OpenCL C 2.0 or with the <code>__opencl_c_program_scope_global_variables</code>
-feature macro, the address space for a variable at program scope or a <code>static</code>
-or <code>extern</code> variable inside a function may be either <code>__constant</code> or <code>__global</code>,
+<p>For OpenCL C 2.0, or OpenCL 3.0 or newer with the
+<code>__opencl_c_program_scope_global_variables</code> feature, the address space for a
+variable at program scope or a <code>static</code> or <code>extern</code> variable inside a function
+may be either <code>__constant</code> or <code>__global</code>,
 and the address space defaults to <code>__global</code> if not specified.
 Otherwise, the address space for a variable at program scope or a <code>static</code> or <code>extern</code>
 variable inside a function must explicitly be <code>__constant</code>.</p>
@@ -3629,13 +3662,10 @@
 </div>
 </div>
 <div class="paragraph">
-<p>For OpenCL C 2.0, or with the <code>__opencl_c_generic_address_space</code> feature
-macro, there is an additional unnamed generic address space.
-The unnamed generic address space overlaps the named <code>__global</code>,
-<code>__local</code>, and <code>__private</code> address spaces.
-The unnamed generic address space does not overlap the named <code>__constant</code>
-address space; the named <code>__constant</code> address space is not in the generic
-address space.</p>
+<p>For OpenCL C 2.0, or with the <code>__opencl_c_generic_address_space</code> feature,
+there is an additional unnamed generic address space. The unnamed generic
+address space overlaps the named <code>__global</code>, <code>__local</code>, and <code>__private</code> address space; the named <code>__constant</code> address space is not in
+the generic address space.</p>
 </div>
 <div class="paragraph">
 <p>If the generic address space is supported,
@@ -3697,7 +3727,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="global-or-global">6.5.1. <code>__global</code> (or <code>global</code>)</h4>
+<h4 id="global-or-global"><a class="anchor" href="#global-or-global"></a>6.7.1. <code>__global</code> (or <code>global</code>)</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3736,7 +3766,7 @@
 </div>
 <div class="paragraph">
 <p>For OpenCL C 2.0, or with the <code>__opencl_c_program_scope_global_variables</code>
-feature macro,
+feature,
 variables defined at program scope and <code>static</code> variables inside a function
 can also be declared in the <code>global</code> address space.
 They can be defined with any valid OpenCL C data type except for those in
@@ -3761,8 +3791,8 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Note: these examples assume OpenCL C 2.0 or the</span>
-<span class="comment">// __opencl_c_program_scope_global_variables feature macro.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Note: these examples assume OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_program_scope_global_variables feature.</span>
 
 global <span class="predefined-type">int</span> foo;         <span class="comment">// OK.</span>
 <span class="predefined-type">int</span> foo;                <span class="comment">// OK. Declared in the global address space.</span>
@@ -3804,7 +3834,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="local-or-local">6.5.2. <code>__local</code> (or <code>local</code>)</h4>
+<h4 id="local-or-local"><a class="anchor" href="#local-or-local"></a>6.7.2. <code>__local</code> (or <code>local</code>)</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3874,7 +3904,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="constant-or-constant">6.5.3. <code>__constant</code> (or <code>constant</code>)</h4>
+<h4 id="constant-or-constant"><a class="anchor" href="#constant-or-constant"></a>6.7.3. <code>__constant</code> (or <code>constant</code>)</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3929,7 +3959,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="private-or-private">6.5.4. <code>__private</code> (or <code>private</code>)</h4>
+<h4 id="private-or-private"><a class="anchor" href="#private-or-private"></a>6.7.4. <code>__private</code> (or <code>private</code>)</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -3941,7 +3971,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="the-generic-address-space">6.5.5. The Generic Address Space</h4>
+<h4 id="the-generic-address-space"><a class="anchor" href="#the-generic-address-space"></a>6.7.5. The Generic Address Space</h4>
 <div class="openblock">
 <div class="content">
 <div class="admonitionblock note">
@@ -3951,8 +3981,9 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in this section requires support for
-OpenCL C 2.0 or the <code>__opencl_c_generic_address_space</code> feature macro.
+The functionality described in this section <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and the
+<code>__opencl_c_generic_address_space</code> feature.
 </td>
 </tr>
 </table>
@@ -4089,7 +4120,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="changes-to-C99">6.5.6. Changes to C99</h4>
+<h4 id="changes-to-C99"><a class="anchor" href="#changes-to-C99"></a>6.7.6. Changes to C99</h4>
 <div class="paragraph">
 <p>This section details the modifications to the <a href="#C99-spec">C99
 Specification</a> needed to incorporate the functionality of named address
@@ -4440,7 +4471,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="access-qualifiers">6.6. Access Qualifiers</h3>
+<h3 id="access-qualifiers"><a class="anchor" href="#access-qualifiers"></a>6.8. Access Qualifiers</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -4448,7 +4479,7 @@
 read-only or write-only.</p>
 </div>
 <div class="paragraph">
-<p>For OpenCL C 2.0, or with the <code>__opencl_c_read_write_images</code> feature macro,
+<p>For OpenCL C 2.0, or with the <code>__opencl_c_read_write_images</code> feature,
 image objects specified as arguments to a kernel can additionally be
 declared to be read-write.</p>
 </div>
@@ -4502,9 +4533,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="function-qualifiers">6.7. Function Qualifiers</h3>
+<h3 id="function-qualifiers"><a class="anchor" href="#function-qualifiers"></a>6.9. Function Qualifiers</h3>
 <div class="sect3">
-<h4 id="kernel-or-kernel">6.7.1. <code>__kernel</code> (or <code>kernel</code>)</h4>
+<h4 id="kernel-or-kernel"><a class="anchor" href="#kernel-or-kernel"></a>6.9.1. <code>__kernel</code> (or <code>kernel</code>)</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -4551,7 +4582,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="optional-attribute-qualifiers">6.7.2. Optional Attribute Qualifiers</h4>
+<h4 id="optional-attribute-qualifiers"><a class="anchor" href="#optional-attribute-qualifiers"></a>6.9.2. Optional Attribute Qualifiers</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -4559,11 +4590,11 @@
 declare additional information about the kernel function as described below.</p>
 </div>
 <div class="paragraph">
-<p>The optional <code>__attribute__((vec_type_hint(&lt;type&gt;)))</code><sup>24</sup> is a hint to the
-compiler and is intended to be a representation of the computational <em>width</em>
-of the <code>__kernel</code>, and should serve as the basis for calculating processor
-bandwidth utilization when the compiler is looking to autovectorize the
-code.
+<p>The optional <code>__attribute__((vec_type_hint(&lt;type&gt;)))</code>
+<sup class="footnote">[<a id="_footnoteref_27" class="footnote" href="#_footnotedef_27" title="View footnote.">27</a>]</sup> is a hint to the compiler and is intended to be a
+representation of the computational <em>width</em> of the <code>__kernel</code>, and should
+serve as the basis for calculating processor bandwidth utilization when the
+compiler is looking to autovectorize the code.
 In the <code>__attribute__((vec_type_hint(&lt;type&gt;)))</code> qualifier &lt;type&gt; is one of
 the built-in vector types listed in <a href="#table-builtin-vector-types">Built-in Vector Data Types</a> or the
 constituent scalar element types.
@@ -4571,15 +4602,6 @@
 the <code>__attribute__((vec_type_hint(int)))</code> qualifier.</p>
 </div>
 <div class="paragraph">
-<p>[24] Implicit in autovectorization is the assumption that any libraries
-called from the <code>__kernel</code> must be recompilable at run time to handle
-cases where the compiler decides to merge or separate workitems.
-This probably means that such libraries can never be hard coded binaries or
-that hard coded binaries must be accompanied either by source or some
-retargetable intermediate representation.
-This may be a code security question for some.</p>
-</div>
-<div class="paragraph">
 <p>For example, where the developer specified a width of <code>float4</code>, the compiler
 should assume that the computation usually uses up to 4 lanes of a <code>float</code>
 vector, and would decide to merge work-items or possibly even separate one
@@ -4615,13 +4637,12 @@
 <div class="paragraph">
 <p>If for example, a <code>__kernel</code> function is declared with</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><code>__attribute__(( vec_type_hint (float4)))</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>(meaning that most operations in the <code>__kernel</code> function are explicitly
@@ -4664,35 +4685,18 @@
 If <code>Y</code> and <code>Z</code> are one, the <em>work_dim</em> argument to <strong>clEnqueueNDRangeKernel</strong>
 can be 1, 2 or 3.</p>
 </div>
-<div class="paragraph">
-<p>The optional <code>__attribute__((nosvm))</code> qualifier can be used with a pointer
-variable to inform the compiler that the pointer does not refer to a shared
-virtual memory region.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p><code>__attribute__((nosvm))</code> is deprecated, and the compiler can ignore it.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
 </div>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="storage-class-specifiers">6.8. Storage-Class Specifiers</h3>
+<h3 id="storage-class-specifiers"><a class="anchor" href="#storage-class-specifiers"></a>6.10. Storage-Class Specifiers</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The <code>typedef</code>, <code>extern</code> and <code>static</code> storage-class specifiers are supported.
+<p>The <code>typedef</code> storage-class specifier is supported.
+The <code>extern</code> and <code>static</code> storage-class specifiers are supported but
+<a href="#unified-spec">require</a> support for OpenCL C 1.2 or newer.
 The <code>auto</code> and <code>register</code> storage-class specifiers are not supported.</p>
 </div>
 <div class="paragraph">
@@ -4738,24 +4742,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="restrictions">6.9. Restrictions</h3>
+<h3 id="restrictions"><a class="anchor" href="#restrictions"></a>6.11. Restrictions</h3>
 <div class="openblock">
 <div class="content">
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Items struckthrough are restrictions in a previous version of OpenCL C that
-are no longer present in OpenCL C 3.0.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
 <div class="olist loweralpha">
 <ol class="loweralpha" type="a">
 <li>
@@ -4777,10 +4766,11 @@
 <p>Pointers to functions are not allowed.</p>
 </li>
 <li>
-<p><span class="line-through">Arguments to kernel functions in a program cannot be
+<p>Arguments to kernel functions in a program cannot be
 declared as a pointer to a pointer(s).
 Variables inside a function or arguments to non-kernel functions in a
-program can be declared as a pointer to a pointer(s).</span></p>
+program can be declared as a pointer to a pointer(s).
+This restriction only applies to OpenCL C 1.2 or below.</p>
 </li>
 </ul>
 </div>
@@ -4827,7 +4817,8 @@
 <code>enqueue_kernel</code>.</p>
 </li>
 <li>
-<p><span class="line-through">Variadic macros are not supported.</span></p>
+<p>Variadic macros are not supported.
+This restriction only applies to OpenCL C 2.0 or below.</p>
 </li>
 <li>
 <p>If a list of parameters in a function declaration is empty, the function
@@ -4847,7 +4838,8 @@
 <p>The <code>auto</code> and <code>register</code> storage-class specifiers are not supported.</p>
 </li>
 <li>
-<p><span class="line-through">Predefined identifiers are not supported.</span></p>
+<p>Predefined identifiers are not supported.
+This restriction only applies to OpenCL C 1.1 or below.</p>
 </li>
 <li>
 <p>Recursion is not supported.</p>
@@ -4866,15 +4858,54 @@
 arguments to a kernel declared as pointer to these types.</p>
 </li>
 <li>
-<p><code>half</code> is not supported as <code>half</code> can be used as a storage format<sup>25</sup>
-only and is not a data type on which floating-point arithmetic can be
-performed.</p>
+<p><code>half</code> is not supported as <code>half</code> can be used as a storage format
+<sup class="footnote">[<a id="_footnoteref_28" class="footnote" href="#_footnotedef_28" title="View footnote.">28</a>]</sup> only and is not a data type on which
+floating-point arithmetic can be performed.</p>
 </li>
 <li>
 <p>Whether or not irreducible control flow is illegal is implementation
 defined.</p>
 </li>
 <li>
+<p>The following restriction only applies to OpenCL C 1.0, also see the
+<strong>cl_khr_byte_addressable_store</strong> extension.
+Built-in types that are less than 32-bits in size, i.e.
+<code>char</code>, <code>uchar</code>, <code>char2</code>, <code>uchar2</code>, <code>short</code>, <code>ushort</code>, and <code>half</code>, have
+the following restriction:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Writes to a pointer (or arrays) of type <code>char</code>,
+<code>uchar</code>, <code>char2</code>, <code>uchar2</code>, <code>short</code>, <code>ushort</code>, and <code>half</code> or to
+elements of a struct that are of type <code>char</code>, <code>uchar</code>, <code>char2</code>,
+<code>uchar2</code>, <code>short</code> and <code>ushort</code> are not supported.
+Refer to <em>section 9.9</em> for additional information.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The kernel example below shows what memory operations are not supported on
+built-in types less than 32-bits in size.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="c">kernel <span class="directive">void</span>
+do_proc (__global <span class="predefined-type">char</span> *pA, <span class="predefined-type">short</span> b,
+         __global <span class="predefined-type">short</span> *pB)
+{
+    <span class="predefined-type">char</span> x[<span class="integer">100</span>];
+    __private <span class="predefined-type">char</span> *px = x;
+    <span class="predefined-type">int</span> id = (<span class="predefined-type">int</span>)get_global_id(<span class="integer">0</span>);
+    <span class="predefined-type">short</span> f;
+
+    f = pB[id] + b; <span class="comment">// is allowed</span>
+    px[<span class="integer">1</span>] = pA[<span class="integer">1</span>]; <span class="comment">// error. px cannot be written.</span>
+    pB[id] = b; <span class="comment">// error. pB cannot be written</span>
+}</code></pre>
+</div>
+</div>
+</li>
+<li>
 <p>The type qualifiers <code>const</code>, <code>restrict</code> and <code>volatile</code> as defined by the
 C99 specification are supported.
 These qualifiers cannot be used with <code>image2d_t</code>, <code>image3d_t</code>,
@@ -4908,14 +4939,11 @@
 </li>
 </ol>
 </div>
-<div class="paragraph">
-<p>[25] Unless the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.</p>
-</div>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="preprocessor-directives-and-macros">6.10. Preprocessor Directives and Macros</h3>
+<h3 id="preprocessor-directives-and-macros"><a class="anchor" href="#preprocessor-directives-and-macros"></a>6.12. Preprocessor Directives and Macros</h3>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -4924,13 +4952,12 @@
 <div class="paragraph">
 <p>The <strong>#pragma</strong> directive is described as:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>#pragma</strong> <em>pp-tokens<sub>opt</sub></em> <em>new-line</em></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>A <strong>#pragma</strong> directive where the preprocessing token <code>OPENCL</code> (used instead
@@ -4979,35 +5006,45 @@
 </dd>
 <dt class="hdlist1"><code>CL_VERSION_1_0</code> </dt>
 <dd>
-<p>Substitutes the integer 100 reflecting the OpenCL 1.0 version.</p>
+<p>Substitutes the integer 100 reflecting the OpenCL 1.0 version.
+<a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p>
 </dd>
 <dt class="hdlist1"><code>CL_VERSION_1_1</code> </dt>
 <dd>
-<p>Substitutes the integer 110 reflecting the OpenCL 1.1 version.</p>
+<p>Substitutes the integer 110 reflecting the OpenCL 1.1 version.
+<a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p>
 </dd>
 <dt class="hdlist1"><code>CL_VERSION_1_2</code> </dt>
 <dd>
-<p>Substitutes the integer 120 reflecting the OpenCL 1.2 version.</p>
+<p>Substitutes the integer 120 reflecting the OpenCL 1.2 version.
+<a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p>
 </dd>
 <dt class="hdlist1"><code>CL_VERSION_2_0</code> </dt>
 <dd>
-<p>Substitutes the integer 200 reflecting the OpenCL 2.0 version.</p>
+<p>Substitutes the integer 200 reflecting the OpenCL 2.0 version.
+<a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer.</p>
 </dd>
 <dt class="hdlist1"><code>CL_VERSION_3_0</code> </dt>
 <dd>
-<p>Substitutes the integer 300 reflecting the OpenCL 3.0 version.</p>
+<p>Substitutes the integer 300 reflecting the OpenCL 3.0 version.
+<a href="#unified-spec">Requires</a> support for OpenCL C 3.0 or newer.</p>
 </dd>
 <dt class="hdlist1"><code>__OPENCL_C_VERSION__</code> </dt>
 <dd>
 <p>Substitutes an integer reflecting the OpenCL C version specified by the
-<code>-cl-std</code> build option the (see <a href="#opencl-spec">OpenCL
-Specification</a>) to <strong>clBuildProgram</strong> or <strong>clCompileProgram</strong>.
+<code>-cl-std</code> build option (see <a href="#opencl-spec">OpenCL Specification</a>) to
+<strong>clBuildProgram</strong> or <strong>clCompileProgram</strong>.
 If the <code>-cl-std</code> build option is not specified, the highest OpenCL C 1.x
 language version supported by each device is used as the version of
 OpenCL C when compiling the program for each device.
-The version of OpenCL C described in this document will have
-<code>__OPENCL_C_VERSION__</code> substitute the integer 300 if <code>-cl-std=CL3.0</code>
-is specified, and the integer 200 if <code>-cl-std=CL2.0</code> is specified.</p>
+<a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p>
+</dd>
+<dt class="hdlist1"><code>__ROUNDING_MODE__</code> </dt>
+<dd>
+<p>Used to determine the current rounding mode and is set to rte.
+Only affects the rounding mode of conversions to a float type.
+<a href="#unified-spec">Deprecated by</a> OpenCL C 1.1, along with the
+<strong>cl_khr_select_fprounding_mode</strong> extension.</p>
 </dd>
 <dt class="hdlist1"><code>__ENDIAN_LITTLE__</code> </dt>
 <dd>
@@ -5035,7 +5072,8 @@
 <p>Used to determine if the OpenCL device supports images.
 This is an integer constant of 1 if images are supported and is
 undefined otherwise.
-Also refer to the value of the <a href="#opencl-device-queries"><code>CL_DEVICE_IMAGE_SUPPORT</code> device query</a>.</p>
+Also refer to the value of the <a href="#opencl-device-queries"><code>CL_DEVICE_IMAGE_SUPPORT</code> device query</a> and the <code>__opencl_c_images</code>
+feature.</p>
 </dd>
 <dt class="hdlist1"><code>__FAST_RELAXED_MATH__</code> </dt>
 <dd>
@@ -5050,20 +5088,27 @@
 <div class="paragraph">
 <p>The <code>NULL</code> macro expands to a null pointer constant.
 An integer constant expression with the value 0, or such an expression cast
-to type <code>void *</code> is called a <em>null pointer constant</em>.</p>
+to type <code>void *</code> is called a <em>null pointer constant</em>.
+<a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer.</p>
 </div>
 <div class="paragraph">
 <p>The macro names defined by the C99 specification but not currently supported
 by OpenCL are reserved for future use.</p>
 </div>
 <div class="paragraph">
-<p>The predefined identifier <code>__func__</code> is available.</p>
+<p>The predefined identifier <code>__func__</code> is available.
+<a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p>
+</div>
+<div class="paragraph">
+<p>In OpenCL C 3.0 or newer there are a number of optional predefined macros
+indicating optional language features. Such macros are listed in the
+<a href="#table-optional-lang-features">optional features in OpenCL C 3.0 table</a>.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="attribute-qualifiers">6.11. Attribute Qualifiers</h3>
+<h3 id="attribute-qualifiers"><a class="anchor" href="#attribute-qualifiers"></a>6.13. Attribute Qualifiers</h3>
 <div class="paragraph">
 <p>This section describes the syntax with which <code>__attribute__</code> may be used,
 and the constructs to which attribute specifiers bind.</p>
@@ -5143,7 +5188,7 @@
 in <em>section 11</em> - <strong>References</strong>] for the details.</p>
 </div>
 <div class="sect3">
-<h4 id="specifying-attributes-of-types">6.11.1. Specifying Attributes of Types</h4>
+<h4 id="specifying-attributes-of-types"><a class="anchor" href="#specifying-attributes-of-types"></a>6.13.1. Specifying Attributes of Types</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -5288,14 +5333,14 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="specifying-attributes-of-functions">6.11.2. Specifying Attributes of Functions</h4>
+<h4 id="specifying-attributes-of-functions"><a class="anchor" href="#specifying-attributes-of-functions"></a>6.13.2. Specifying Attributes of Functions</h4>
 <div class="paragraph">
 <p>See <a href="#function-qualifiers">Function Qualifiers</a> for the function attribute
 qualifiers currently supported.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="specifying-attributes-of-variables">6.11.3. Specifying Attributes of Variables</h4>
+<h4 id="specifying-attributes-of-variables"><a class="anchor" href="#specifying-attributes-of-variables"></a>6.13.3. Specifying Attributes of Variables</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -5444,13 +5489,33 @@
 pointer is assigned to another.</p>
 </div>
 </dd>
+<dt class="hdlist1"><code>nosvm</code> </dt>
+<dd>
+<p>The <code>nosvm</code> attribute can be used with a pointer variable to inform the
+compiler that the pointer does not refer to a shared virtual memory region.
+<a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer.</p>
+</dd>
 </dl>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The <code>nosvm</code> attribute is deprecated, and the compiler can ignore it.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="specifying-attributes-of-blocks-and-control-flow-statements">6.11.4. Specifying Attributes of Blocks and Control-Flow-Statements</h4>
+<h4 id="specifying-attributes-of-blocks-and-control-flow-statements"><a class="anchor" href="#specifying-attributes-of-blocks-and-control-flow-statements"></a>6.13.4. Specifying Attributes of Blocks and Control-Flow-Statements</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -5476,7 +5541,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="specifying-attribute-for-unrolling-loops">6.11.5. Specifying Attribute For Unrolling Loops</h4>
+<h4 id="specifying-attribute-for-unrolling-loops"><a class="anchor" href="#specifying-attribute-for-unrolling-loops"></a>6.13.5. Specifying Attribute For Unrolling Loops</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -5599,7 +5664,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="extending-attribute-qualifiers">6.11.6. Extending Attribute Qualifiers</h4>
+<h4 id="extending-attribute-qualifiers"><a class="anchor" href="#extending-attribute-qualifiers"></a>6.13.6. Extending Attribute Qualifiers</h4>
 <div class="paragraph">
 <p>The attribute syntax can be extended for standard language extensions and
 vendor specific extensions.
@@ -5621,7 +5686,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="blocks">6.12. Blocks</h3>
+<h3 id="blocks"><a class="anchor" href="#blocks"></a>6.14. Blocks</h3>
 <div class="openblock">
 <div class="content">
 <div class="admonitionblock note">
@@ -5631,14 +5696,16 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in this section requires support for
-OpenCL C 2.0 or the <code>__opencl_c_device_enqueue</code> feature macro.
+The functionality described in this section <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and the
+<code>__opencl_c_device_enqueue</code> feature.
 </td>
 </tr>
 </table>
 </div>
 <div class="paragraph">
-<p>This section describes the clang block syntax<sup>26</sup>.</p>
+<p>This section describes the clang block syntax
+<sup class="footnote">[<a id="_footnoteref_29" class="footnote" href="#_footnotedef_29" title="View footnote.">29</a>]</sup>.</p>
 </div>
 <div class="paragraph">
 <p>Like function types, the Block type is a pair consisting of a result value
@@ -5647,18 +5714,10 @@
 being that in addition to executable code they also contain various variable
 bindings to automatic (stack) or <code>global</code> memory.</p>
 </div>
-<div class="paragraph">
-<p>[26] This syntax is already part of the clang source tree on which most
-vendors have based their OpenCL implementations.
-Additionally, blocks based closures are supported by the clang open source C
-compiler as well as Mac OS X&#8217;s C and Objective C compilers.
-Specifically, Mac OS X&#8217;s Grand Central Dispatch allows applications to queue
-tasks as a block.</p>
-</div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="declaring-and-using-a-block">6.12.1. Declaring and Using a Block</h4>
+<h4 id="declaring-and-using-a-block"><a class="anchor" href="#declaring-and-using-a-block"></a>6.14.1. Declaring and Using a Block</h4>
 <div class="paragraph">
 <p>You use the ^ operator to declare a Block variable and to indicate the
 beginning of a Block literal.
@@ -5693,7 +5752,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="declaring-a-block-reference">6.12.2. Declaring a Block Reference</h4>
+<h4 id="declaring-a-block-reference"><a class="anchor" href="#declaring-a-block-reference"></a>6.14.2. Declaring a Block Reference</h4>
 <div class="paragraph">
 <p>Block variables hold references to Blocks.
 You declare them using syntax similar to that you use to declare a pointer
@@ -5732,7 +5791,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="block-literal-expressions">6.12.3. Block Literal Expressions</h4>
+<h4 id="block-literal-expressions"><a class="anchor" href="#block-literal-expressions"></a>6.14.3. Block Literal Expressions</h4>
 <div class="paragraph">
 <p>A Block literal expression produces a reference to a Block.
 It is introduced by the use of the <strong>^</strong> token as a unary operator.</p>
@@ -5841,7 +5900,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="control-flow">6.12.4. Control Flow</h4>
+<h4 id="control-flow"><a class="anchor" href="#control-flow"></a>6.14.4. Control Flow</h4>
 <div class="paragraph">
 <p>The compound statement of a Block is treated much like a function body with
 respect to control flow in that continue, break and goto do not escape the
@@ -5849,7 +5908,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="restrictions-1">6.12.5. Restrictions</h4>
+<h4 id="restrictions-1"><a class="anchor" href="#restrictions-1"></a>6.14.5. Restrictions</h4>
 <div class="paragraph">
 <p>The following Blocks features are currently not supported in OpenCL C.</p>
 </div>
@@ -5876,18 +5935,9 @@
 <div class="paragraph">
 <p>Block literals are assumed to allocate memory at the point of definition and
 to be destroyed at the end of the same scope.
-To support these behaviors, additional restrictions<sup>27</sup> in addition to the
-above feature restrictions are:</p>
-</div>
-<div class="paragraph">
-<p>[27] OpenCL C <a href="#restrictions">does not allow function pointers</a> primarily
-because it is difficult or expensive to implement generic indirections to
-executable code in many hardware architectures that OpenCL targets.
-OpenCL C&#8217;s design of Blocks is intended to respect that same condition,
-yielding the restrictions listed here.
-As such, Blocks allow a form of dynamically enqueued function scheduling
-without providing a form of runtime synchronous dynamic dispatch analogous
-to function pointers.</p>
+To support these behaviors, additional restrictions
+<sup class="footnote">[<a id="_footnoteref_30" class="footnote" href="#_footnotedef_30" title="View footnote.">30</a>]</sup> in addition to the above feature
+restrictions are:</p>
 </div>
 <div class="ulist">
 <ul>
@@ -6046,7 +6096,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="built-in-functions">6.13. Built-in Functions</h3>
+<h3 id="built-in-functions"><a class="anchor" href="#built-in-functions"></a>6.15. Built-in Functions</h3>
 <div class="paragraph">
 <p>The OpenCL C programming language provides a rich set of built-in functions
 for scalar and vector operations.
@@ -6069,7 +6119,7 @@
 that operate on mixed scalar and vector types, however.</p>
 </div>
 <div class="sect3">
-<h4 id="work-item-functions">6.13.1. Work-Item Functions</h4>
+<h4 id="work-item-functions"><a class="anchor" href="#work-item-functions"></a>6.15.1. Work-Item Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -6079,7 +6129,7 @@
 identifier of each work-item when this kernel is being executed on a device.</p>
 </div>
 <table id="table-work-item-functions" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 7. Built-in Work-Item Functions</caption>
+<caption class="title">Table 8. Built-in Work-Item Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -6121,9 +6171,10 @@
       argument to <strong>clEnqueueNDRangeKernel</strong> if <em>local_work_size</em> is not
       <code>NULL</code>; otherwise the OpenCL implementation chooses an appropriate
       <em>local_work_size</em> value which is returned by this function.
-      If the kernel is executed with a non-uniform work-group size<sup>28</sup>, calls
-      to this built-in from some work-groups may return different values
-      than calls to this built-in from other work-groups.</p>
+      If the kernel is executed with a non-uniform work-group size
+      <sup class="footnote">[<a id="_footnoteref_31" class="footnote" href="#_footnotedef_31" title="View footnote.">31</a>]</sup>, calls to this built-in from some
+      work-groups may return different values than calls to this built-in from
+      other work-groups.</p>
 <p class="tableblock">      Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
       For other values of <em>dimindx</em>, <strong>get_local_size</strong>() returns 1.</p></td>
 </tr>
@@ -6143,7 +6194,8 @@
       that the implementation determined would be most efficient at
       implementing the uniform region of the global range.</p>
 <p class="tableblock">      Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
-      For other values of <em>dimindx</em>, <strong>get_enqueued_local_size</strong>() returns 1.</p></td>
+      For other values of <em>dimindx</em>, <strong>get_enqueued_local_size</strong>() returns 1.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL 2.0 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_local_id</strong>(uint <em>dimindx</em>)</p></td>
@@ -6171,7 +6223,8 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>get_global_offset</strong> returns the offset values specified in
       <em>global_work_offset</em> argument to <strong>clEnqueueNDRangeKernel</strong>.</p>
 <p class="tableblock">      Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
-      For other values, <strong>get_global_offset</strong>() returns 0.</p></td>
+      For other values, <strong>get_global_offset</strong>() returns 0.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_global_linear_id</strong>()</p></td>
@@ -6179,11 +6232,13 @@
 <p class="tableblock">      For 1D work-groups, it is computed as <strong>get_global_id</strong>(0) -
       <strong>get_global_offset</strong>(0).</p>
 <p class="tableblock">      For 2D work-groups, it is computed as (<strong>get_global_id</strong>(1) -
-      <strong>get_global_offset</strong>(1)) * <strong>get_global_size</strong>(0) + (<strong>get_global_id</strong>(0) -
+      <strong>get_global_offset</strong>(1)) * <strong>get_global_size</strong>(0) +  (<strong>get_global_id</strong>(0) -
       <strong>get_global_offset</strong>(0)).</p>
-<p class="tableblock">      For 3D work-groups, it is computed as <strong>get_global_id</strong>(2) -       <strong>get_global_offset</strong>(2 * <strong>get_global_size</strong>(1) * <strong>get_global_size</strong>(0))
-      + <strong>get_global_id</strong>(1) - <strong>get_global_offset</strong>(1 * <strong>get_global_size</strong>
-      (0)) + (<strong>get_global_id</strong>(0) - <strong>get_global_offset</strong>(0)).</p></td>
+<p class="tableblock">      For 3D work-groups, it is computed as ((<strong>get_global_id</strong>(2) -
+      <strong>get_global_offset</strong>(2)) * <strong>get_global_size</strong>(1) * <strong>get_global_size</strong>(0))
+      +  ((<strong>get_global_id</strong>(1) - <strong>get_global_offset</strong>(1)) * <strong>get_global_size</strong>(0))
+      +  (<strong>get_global_id</strong>(0) - <strong>get_global_offset</strong>(0)).</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL 2.0 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_local_linear_id</strong>()</p></td>
@@ -6191,17 +6246,14 @@
 <p class="tableblock">      For 1D work-groups, it is the same value as</p>
 <p class="tableblock">      <strong>get_local_id</strong>(0).</p>
 <p class="tableblock">      For 2D work-groups, it is computed as</p>
-<p class="tableblock">      <strong>get_local_id</strong>(1) * <strong>get_local_size</strong>(0) + <strong>get_local_id</strong>(0).</p>
+<p class="tableblock">      <strong>get_local_id</strong>(1) * <strong>get_local_size</strong>(0) +  <strong>get_local_id</strong>(0).</p>
 <p class="tableblock">      For 3D work-groups, it is computed as</p>
-<p class="tableblock">      <strong>(get_local_id</strong>(2) * <strong>get_local_size</strong>(1) * <strong>get_local_size</strong>(0)) + 
-      (<strong>get_local_id</strong>(1) * <strong>get_local_size</strong>(0)) + <strong>get_local_id</strong>(0).</p></td>
+<p class="tableblock">      (<strong>get_local_id</strong>(2) * <strong>get_local_size</strong>(1) * <strong>get_local_size</strong>(0)) + 
+      (<strong>get_local_id</strong>(1) * <strong>get_local_size</strong>(0)) +  <strong>get_local_id</strong>(0).</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL 2.0 or newer.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="paragraph">
-<p>[28] I.e. the <em>global_work_size</em> values specified to <strong>clEnqueueNDRangeKernel</strong>
-are not evenly divisible by the <em>local_work_size</em> values for each dimension.</p>
-</div>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -6209,7 +6261,8 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in the following table requires support for the <code>__opencl_c_subgroups</code> feature macro.
+The functionality described in the following table <a href="#unified-spec">requires</a> support for OpenCL C 3.0 or newer and the <code>__opencl_c_subgroups</code>
+feature.
 </td>
 </tr>
 </table>
@@ -6221,7 +6274,7 @@
 subgroup when this kernel is being executed on a device.</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 8. Built-in Work-Item Functions for Subgroups</caption>
+<caption class="title">Table 9. Built-in Work-Item Functions for Subgroups</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -6296,7 +6349,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="math-functions">6.13.2. Math Functions</h4>
+<h4 id="math-functions"><a class="anchor" href="#math-functions"></a>6.15.2. Math Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -6325,21 +6378,21 @@
 <div class="paragraph">
 <p>The <a href="#table-builtin-math">following table</a> describes the list of built-in
 math functions that can take scalar or vector arguments.
-We use the generic type name <code>gentype</code> to indicate that the function can
-take <code>float</code>, <code>float2</code>, <code>float3</code>, <code>float4</code>, <code>float8</code>, <code>float16</code>, <code>double</code>,
-<code>double2</code>, <code>double3</code>, <code>double4</code>, <code>double8</code> or <code>double16</code> as the type for the
-arguments.
+We use the generic type name <code>gentype</code> to indicate that the function can take
+<code>float</code>, <code>float2</code>, <code>float3</code>, <code>float4</code>, <code>float8</code>, <code>float16</code>, <code>double</code>
+<sup class="footnote" id="_footnote_double-supported">[<a id="_footnoteref_32" class="footnote" href="#_footnotedef_32" title="View footnote.">32</a>]</sup>, <code>double2</code>,
+<code>double3</code>, <code>double4</code>, <code>double8</code> or <code>double16</code> as the type for the arguments.
 We use the generic type name <code>gentypef</code> to indicate that the function can
 take <code>float</code>, <code>float2</code>, <code>float3</code>, <code>float4</code>, <code>float8</code>, or <code>float16</code> as the
 type for the arguments.
-We use the generic type name <code>gentyped</code> to indicate that the function can
-take <code>double</code>, <code>double2</code>, <code>double3</code>, <code>double4</code>, <code>double8</code> or <code>double16</code> as
-the type for the arguments.
+We use the generic type name <code>gentyped</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_32" title="View footnote.">32</a>]</sup> to
+indicate that the function can take <code>double</code>, <code>double2</code>, <code>double3</code>, <code>double4</code>,
+<code>double8</code> or <code>double16</code> as the type for the arguments.
 For any specific use of a function, the actual type has to be the same for
 all arguments and the return type, unless otherwise specified.</p>
 </div>
 <table id="table-builtin-math" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 9. Built-in Scalar and Vector Argument Math Functions</caption>
+<caption class="title">Table 10. Built-in Scalar and Vector Argument Math Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -6473,12 +6526,13 @@
       If both arguments are NaNs, <strong>fmax</strong>() returns a NaN.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>fmin</strong><sup>29</sup>(gentype <em>x</em>, gentype <em>y</em>)<br>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>fmin</strong>(gentype <em>x</em>, gentype <em>y</em>)<br>
   gentypef <strong>fmin</strong>(gentypef <em>x</em>, float <em>y</em>)<br>
   gentyped <strong>fmin</strong>(gentyped <em>x</em>, double <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <em>y</em> if <em>y</em> &lt; <em>x</em>, otherwise it returns <em>x</em>.
       If one argument is a NaN, <strong>fmin</strong>() returns the other argument.
-      If both arguments are NaNs, <strong>fmin</strong>() returns a NaN.</p></td>
+      If both arguments are NaNs, <strong>fmin</strong>() returns a NaN.
+      <sup class="footnote">[<a id="_footnoteref_33" class="footnote" href="#_footnotedef_33" title="View footnote.">33</a>]</sup></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>fmod</strong>(gentype <em>x</em>, gentype <em>y</em>)</p></td>
@@ -6486,14 +6540,15 @@
       Returns <em>x</em> - <em>y</em> * <strong>trunc</strong>(<em>x</em>/<em>y</em>).</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>fract</strong>(gentype <em>x</em>, __global gentype <em>*iptr</em>)<sup>30</sup><br>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>fract</strong>(gentype <em>x</em>, __global gentype <em>*iptr</em>)<br>
   gentype <strong>fract</strong>(gentype <em>x</em>, __local gentype <em>*iptr</em>)<br>
   gentype <strong>fract</strong>(gentype <em>x</em>, __private gentype <em>*iptr</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  gentype <strong>fract</strong>(gentype <em>x</em>, gentype <em>*iptr</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <strong>fmin</strong>(<em>x</em> - <strong>floor</strong>(<em>x</em>), <code>0x1.fffffep-1f</code>).
-      <strong>floor</strong>(x) is returned in <em>iptr</em>.</p></td>
+      <strong>floor</strong>(x) is returned in <em>iptr</em>.
+      <sup class="footnote">[<a id="_footnoteref_34" class="footnote" href="#_footnotedef_34" title="View footnote.">34</a>]</sup></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">float<em>n</em> <strong>frexp</strong>(float<em>n</em> <em>x</em>, __global int<em>n</em> *exp)<br>
@@ -6502,8 +6557,8 @@
   float <strong>frexp</strong>(float <em>x</em>, __local int *exp)<br></p>
 <p class="tableblock">  float<em>n</em> <strong>frexp</strong>(float<em>n</em> <em>x</em>, __private int<em>n</em> *exp)<br>
   float <strong>frexp</strong>(float <em>x</em>, __private int *exp)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  float<em>n</em> <strong>frexp</strong>(float<em>n</em> <em>x</em>, int<em>n</em> *exp)<br>
   float <strong>frexp</strong>(float <em>x</em>, int *exp)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Extract mantissa and exponent from <em>x</em>.
@@ -6518,8 +6573,8 @@
   double <strong>frexp</strong>(double <em>x</em>, __local int *exp)<br></p>
 <p class="tableblock">  double<em>n</em> <strong>frexp</strong>(double<em>n</em> <em>x</em>, __private int<em>n</em> *exp)<br>
   double <strong>frexp</strong>(double <em>x</em>, __private int *exp)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  double<em>n</em> <strong>frexp</strong>(double<em>n</em> <em>x</em>, int<em>n</em> *exp)<br>
   double <strong>frexp</strong>(double <em>x</em>, int *exp)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Extract mantissa and exponent from <em>x</em>.
@@ -6562,8 +6617,8 @@
   float <strong>lgamma_r</strong>(float <em>x</em>, __private int *<em>signp</em>)<br>
   double<em>n</em> <strong>lgamma_r</strong>(double<em>n</em> <em>x</em>, __private int<em>n</em> *<em>signp</em>)<br>
   double <strong>lgamma_r</strong>(double <em>x</em>, __private int *<em>signp</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  float<em>n</em> <strong>lgamma_r</strong>(float<em>n</em> <em>x</em>, int<em>n</em> *<em>signp</em>)<br>
   float <strong>lgamma_r</strong>(float <em>x</em>, int *<em>signp</em>)<br>
   double<em>n</em> <strong>lgamma_r</strong>(double<em>n</em> <em>x</em>, int<em>n</em> *<em>signp</em>)<br>
@@ -6599,26 +6654,29 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>mad</strong>(gentype <em>a</em>, gentype <em>b</em>, gentype <em>c</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>mad</strong> computes <em>a</em> * <em>b</em> + <em>c</em>.
     The function may compute <em>a</em> * <em>b</em> + <em>c</em> with reduced accuracy
-    in the embedded profile.  See the SPIR-V OpenCL environment specification
+    in the embedded profile.  See the OpenCL SPIR-V Environment Specification
     for details. On some hardware the mad instruction may provide better
-    performance than expanded computation of <em>a</em> * <em>b</em> + <em>c</em>.<sup>31</sup></p></td>
+    performance than expanded computation of <em>a</em> * <em>b</em> + <em>c</em>.
+    <sup class="footnote">[<a id="_footnoteref_35" class="footnote" href="#_footnotedef_35" title="View footnote.">35</a>]</sup></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>maxmag</strong>(gentype <em>x</em>, gentype <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <em>x</em> if |<em>x</em>| &gt; |<em>y</em>|, <em>y</em> if |<em>y</em>| &gt; |<em>x</em>|, otherwise
-      <strong>fmax</strong>(<em>x</em>, <em>y</em>).</p></td>
+      <strong>fmax</strong>(<em>x</em>, <em>y</em>).</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>minmag</strong>(gentype <em>x</em>, gentype <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <em>x</em> if |<em>x</em>| &lt; |<em>y</em>|, <em>y</em> if |<em>y</em>| &lt; |<em>x</em>|, otherwise
-      <strong>fmin</strong>(<em>x</em>, <em>y</em>).</p></td>
+      <strong>fmin</strong>(<em>x</em>, <em>y</em>).</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>modf</strong>(gentype <em>x</em>, __global gentype <em>*iptr</em>)<br>
   gentype <strong>modf</strong>(gentype <em>x</em>, __local gentype <em>*iptr</em>)<br>
   gentype <strong>modf</strong>(gentype <em>x</em>, __private gentype <em>*iptr</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  gentype <strong>modf</strong>(gentype <em>x</em>, gentype <em>*iptr</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Decompose a floating-point number.
       The <strong>modf</strong> function breaks the argument <em>x</em> into integral and
@@ -6670,8 +6728,8 @@
   float <strong>remquo</strong>(float <em>x</em>, float <em>y</em>, __local int <em>*quo</em>)<br></p>
 <p class="tableblock">  float<em>n</em> <strong>remquo</strong>(float<em>n</em> <em>x</em>, float<em>n</em> <em>y</em>, __private int<em>n</em> <em>*quo</em>)<br>
   float <strong>remquo</strong>(float <em>x</em>, float <em>y</em>, __private int <em>*quo</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  float<em>n</em> <strong>remquo</strong>(float<em>n</em> <em>x</em>, float<em>n</em> <em>y</em>, int<em>n</em> <em>*quo</em>)<br>
   float <strong>remquo</strong>(float <em>x</em>, float <em>y</em>, int <em>*quo</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The <strong>remquo</strong> function computes the value r such that <em>r</em> = <em>x</em> -
@@ -6691,8 +6749,8 @@
   double <strong>remquo</strong>(double <em>x</em>, double <em>y</em>, __local int <em>*quo</em>)<br></p>
 <p class="tableblock">  double<em>n</em> <strong>remquo</strong>(double<em>n</em> <em>x</em>, double<em>n</em> <em>y</em>, __private int<em>n</em> <em>*quo</em>)<br>
   double <strong>remquo</strong>(double <em>x</em>, double <em>y</em>, __private int <em>*quo</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  double<em>n</em> <strong>remquo</strong>(double<em>n</em> <em>x</em>, double<em>n</em> <em>y</em>, int<em>n</em> <em>*quo</em>)<br>
   double <strong>remquo</strong>(double <em>x</em>, double <em>y</em>, int <em>*quo</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The <strong>remquo</strong> function computes the value r such that <em>r</em> = <em>x</em> -
@@ -6715,7 +6773,7 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">float<em>n</em> <strong>rootn</strong>(float<em>n</em> <em>x</em>, int<em>n</em> <em>y</em>)<br>
   float <strong>rootn</strong>(float <em>x</em>, int <em>y</em>)<br>
   double<em>n</em> <strong>rootn</strong>(double<em>n</em> <em>x</em>, int<em>n</em> <em>y</em>)<br>
-  double<em>n</em> <strong>rootn</strong>(double <em>x</em>, int <em>y</em>)</p></td>
+  double <strong>rootn</strong>(double <em>x</em>, int <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Compute <em>x</em> to the power 1/<em>y</em>.</p></td>
 </tr>
 <tr>
@@ -6735,8 +6793,8 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>sincos</strong>(gentype <em>x</em>, __global gentype <em>*cosval</em>)<br>
   gentype <strong>sincos</strong>(gentype <em>x</em>, __local gentype <em>*cosval</em>)<br>
   gentype <strong>sincos</strong>(gentype <em>x</em>, __private gentype <em>*cosval</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  gentype <strong>sincos</strong>(gentype <em>x</em>, gentype <em>*cosval</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Compute sine and cosine of x.
       The computed sine is the return value and computed cosine is returned
@@ -6777,21 +6835,6 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>[29] <strong>fmin</strong> and <strong>fmax</strong> behave as defined by C99 and may not match the IEEE
-754-2008 definition for <strong>minNum</strong> and <strong>maxNum</strong> with regard to signaling NaNs.
-Specifically, signaling NaNs may behave as quiet NaNs.</p>
-</div>
-<div class="paragraph">
-<p>[30] The <strong>min</strong>() operator is there to prevent <strong>fract</strong>(-small) from returning
-1.0.
-It returns the largest positive floating-point number less than 1.0.</p>
-</div>
-<div class="paragraph">
-<p>[31] The user is cautioned that for some usages, e.g. <strong>mad</strong>(a, b, -a*b), the
-definition of <strong>mad</strong>() is loose enough in the embedded profile that almost any result is allowed from
-<strong>mad</strong>() for some values of a and b.</p>
-</div>
-<div class="paragraph">
 <p>The following table describes the following functions:</p>
 </div>
 <div class="ulist">
@@ -6824,7 +6867,7 @@
 <code>float16</code> as the type for the arguments.</p>
 </div>
 <table id="table-builtin-half-native-math" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 10. Built-in Scalar and Vector <em>half</em> and <em>native</em> Math Functions</caption>
+<caption class="title">Table 11. Built-in Scalar and Vector <em>half</em> and <em>native</em> Math Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -7028,7 +7071,8 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>If double precision is supported by the device, the following symbolic
+<p>If double precision is supported by the device, e.g. for OpenCL C 3.0 or newer
+the <code>__opencl_c_fp64</code> feature macro is present, the following symbolic
 constants will also be available:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
@@ -7052,7 +7096,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="floating-point-macros-and-pragmas">Floating-point macros and pragmas</h5>
+<h5 id="floating-point-macros-and-pragmas"><a class="anchor" href="#floating-point-macros-and-pragmas"></a>6.15.2.1. Floating-point macros and pragmas</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -7239,8 +7283,9 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>If double precision is supported by the device, the following macros and
-constants are also available:</p>
+<p>If double precision is supported by the device, e.g. for OpenCL C 3.0 or newer
+the <code>__opencl_c_fp64</code> feature macro is present, then the following macros
+and constants are also available:</p>
 </div>
 <div class="paragraph">
 <p>The <code>FP_FAST_FMA</code> macro indicates whether the <strong>fma</strong>() family of functions
@@ -7394,21 +7439,22 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="integer-functions">6.13.3. Integer Functions</h4>
+<h4 id="integer-functions"><a class="anchor" href="#integer-functions"></a>6.15.3. Integer Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The following table describes the built-in integer functions that take
-scalar or vector arguments.
+<p>The <a href="#table-builtin-functions">following table</a> describes the built-in integer
+functions that take scalar or vector arguments.
 The vector versions of the integer functions operate component-wise.
 The description is per-component.</p>
 </div>
 <div class="paragraph">
-<p>We use the generic type name <code>gentype</code> to indicate that the function can
-take <code>char</code>, <code>char{2|3|4|8|16}</code>, <code>uchar</code>, <code>uchar{2|3|4|8|16}</code>, <code>short</code>,
-<code>short{2|3|4|8|16}</code>, <code>ushort</code>, <code>ushort{2|3|4|8|16}</code>, <code>int</code>,
-<code>int{2|3|4|8|16}</code>, <code>uint</code>, <code>uint{2|3|4|8|16}</code>, <code>long</code>, <code>long{2|3|4|8|16}
-ulong</code>, or <code>ulong{2|3|4|8|16}</code> as the type for the arguments.
+<p>We use the generic type name <code>gentype</code> to indicate that the function can take
+<code>char</code>, <code>char{2|3|4|8|16}</code>, <code>uchar</code>, <code>uchar{2|3|4|8|16}</code>, <code>short</code>,
+<code>short{2|3|4|8|16}</code>, <code>ushort</code>, <code>ushort{2|3|4|8|16}</code>, <code>int</code>, <code>int{2|3|4|8|16}</code>,
+<code>uint</code>, <code>uint{2|3|4|8|16}</code>, <code>long</code> <sup class="footnote">[<a id="_footnoteref_36" class="footnote" href="#_footnotedef_36" title="View footnote.">36</a>]</sup>,
+<code>long{2|3|4|8|16}</code>, <code>ulong</code>, or <code>ulong{2|3|4|8|16}</code> as the type for the
+arguments.
 We use the generic type name <code>ugentype</code> to refer to unsigned versions of
 <code>gentype</code>.
 For example, if <code>gentype</code> is <code>char4</code>, <code>ugentype</code> is <code>uchar4</code>.
@@ -7428,7 +7474,7 @@
 all arguments and the return type unless otherwise specified.</p>
 </div>
 <table id="table-builtin-functions" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 11. Built-in Scalar and Vector Integer Argument Functions</caption>
+<caption class="title">Table 12. Built-in Scalar and Vector Integer Argument Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -7456,15 +7502,17 @@
       The intermediate sum does not modulo overflow.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>rhadd</strong>(gentype <em>x</em>, gentype <em>y</em>)<sup>32</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>rhadd</strong>(gentype <em>x</em>, gentype <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns (<em>x</em> + <em>y</em> + 1) &gt;&gt; 1.
-      The intermediate sum does not modulo overflow.</p></td>
+      The intermediate sum does not modulo overflow.
+      <sup class="footnote">[<a id="_footnoteref_37" class="footnote" href="#_footnotedef_37" title="View footnote.">37</a>]</sup></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>clamp</strong>(gentype <em>x</em>, gentype <em>minval</em>, gentype <em>maxval</em>)<br>
   gentype <strong>clamp</strong>(gentype <em>x</em>, sgentype <em>minval</em>, sgentype <em>maxval</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <strong>min</strong>(<strong>max</strong>(<em>x</em>, <em>minval</em>), <em>maxval</em>).
-      Results are undefined if <em>minval</em> &gt; <em>maxval</em>.</p></td>
+      Results are undefined if <em>minval</em> &gt; <em>maxval</em>.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>clz</strong>(gentype <em>x</em>)</p></td>
@@ -7477,7 +7525,8 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>ctz</strong>(gentype <em>x</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the count of trailing 0-bits in <em>x</em>.
       If <em>x</em> is 0, returns the size in bits of the type of <em>x</em> or component
-      type of <em>x</em>, if <em>x</em> is a vector.</p></td>
+      type of <em>x</em>, if <em>x</em> is a vector.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL 2.0 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>mad_hi</strong>(gentype <em>a</em>, gentype <em>b</em>, gentype <em>c</em>)</p></td>
@@ -7488,13 +7537,15 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <em>a</em> * <em>b</em> + <em>c</em> and saturates the result.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>max</strong>(gentype <em>x</em>, gentype <em>y</em>)<br>
-  gentype <strong>max</strong>(gentype <em>x</em>, sgentype <em>y</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>max</strong>(gentype <em>x</em>, gentype <em>y</em>)<br></p>
+<p class="tableblock">  For OpenCL C 1.1 or newer:<br></p>
+<p class="tableblock">  gentype <strong>max</strong>(gentype <em>x</em>, sgentype <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <em>y</em> if <em>x</em> &lt; <em>y</em>, otherwise it returns <em>x</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>min</strong>(gentype <em>x</em>, gentype <em>y</em>)<br>
-  gentype <strong>min</strong>(gentype <em>x</em>, sgentype <em>y</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>min</strong>(gentype <em>x</em>, gentype <em>y</em>)<br></p>
+<p class="tableblock">  For OpenCL C 1.1 or newer:<br></p>
+<p class="tableblock">  gentype <strong>min</strong>(gentype <em>x</em>, sgentype <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <em>y</em> if <em>y</em> &lt; <em>x</em>, otherwise it returns <em>x</em>.</p></td>
 </tr>
 <tr>
@@ -7540,18 +7591,12 @@
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>popcount</strong>(gentype <em>x</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of non-zero bits in <em>x</em>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of non-zero bits in <em>x</em>.<br></p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
-<p>[32] Frequently vector operations need n + 1 bits temporarily to calculate a
-result.
-The <strong>rhadd</strong> instruction gives you an extra bit without needing to upsample
-and downsample.
-This can be a profound performance win.</p>
-</div>
-<div class="paragraph">
 <p>The following table describes fast integer functions that can be used for
 optimizing performance of kernels.
 We use the generic type name <code>gentype</code> to indicate that the function can
@@ -7559,7 +7604,7 @@
 <code>uint3</code>, <code>uint4</code>, <code>uint8</code> or <code>uint16</code> as the type for the arguments.</p>
 </div>
 <table id="table-builtin-fast-integer" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 12. Built-in 24-bit Integer Functions</caption>
+<caption class="title">Table 13. Built-in 24-bit Integer Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -7592,7 +7637,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="integer-macros">Integer Macros</h5>
+<h5 id="integer-macros"><a class="anchor" href="#integer-macros"></a>6.15.3.1. Integer Macros</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -7701,21 +7746,18 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="common-functions">6.13.4. Common Functions<sup>33</sup></h4>
-<div class="paragraph">
-<p>[33] The <strong>mix</strong> and <strong>smoothstep</strong> functions can be implemented using
-contractions such as <strong>mad</strong> or <strong>fma</strong>.</p>
-</div>
+<h4 id="common-functions"><a class="anchor" href="#common-functions"></a>6.15.4. Common Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The following table describes the list of built-in common functions.
+<p>The <a href="#table-builtin-common">following table</a> describes the list of built-in
+common functions.
 These all operate component-wise.
 The description is per-component.
-We use the generic type name <code>gentype</code> to indicate that the function can
-take <code>float</code>, <code>float2</code>, <code>float3</code>, <code>float4</code>, <code>float8</code>, <code>float16</code>, <code>double</code>,
-<code>double2</code>, <code>double3</code>, <code>double4</code>, <code>double8</code> or <code>double16</code> as the type for the
-arguments.
+We use the generic type name <code>gentype</code> to indicate that the function can take
+<code>float</code>, <code>float2</code>, <code>float3</code>, <code>float4</code>, <code>float8</code>, <code>float16</code>, <code>double</code>
+<sup class="footnote">[<a id="_footnoteref_38" class="footnote" href="#_footnotedef_38" title="View footnote.">38</a>]</sup>, <code>double2</code>, <code>double3</code>, <code>double4</code>,
+<code>double8</code> or <code>double16</code> as the type for the arguments.
 We use the generic type name <code>gentypef</code> to indicate that the function can
 take <code>float</code>, <code>float2</code>, <code>float3</code>, <code>float4</code>, <code>float8</code>, or <code>float16</code> as the
 type for the arguments.
@@ -7725,10 +7767,12 @@
 </div>
 <div class="paragraph">
 <p>The built-in common functions are implemented using the round to nearest
-even rounding mode.</p>
+even rounding mode.
+The built-in common functions may be implemented using contractions such
+as <strong>mad</strong> or <strong>fma</strong>.</p>
 </div>
 <table id="table-builtin-common" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 13. Built-in Scalar and Vector Argument Common Functions</caption>
+<caption class="title">Table 14. Built-in Scalar and Vector Argument Common Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -7821,24 +7865,26 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="geometric-functions">6.13.5. Geometric Functions<sup>34</sup></h4>
-<div class="paragraph">
-<p>[34] The geometric functions can be implemented using contractions such as
-<strong>mad</strong> or <strong>fma</strong>.</p>
-</div>
+<h4 id="geometric-functions"><a class="anchor" href="#geometric-functions"></a>6.15.5. Geometric Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The following table describes the list of built-in geometric functions.
+<p>The <a href="#table-builtin-geometric">following table</a> describes the list of built-in
+geometric functions.
 These all operate component-wise.
 The description is per-component.
-<code>float<em>n</em></code> is <code>float</code>, <code>float2</code>, <code>float3</code>, or <code>float4</code> and <code>double<em>n</em></code>
-is <code>double</code>, <code>double2</code>, <code>double3</code>, or <code>double4</code>.
-The built-in geometric functions are implemented using the round to nearest
-even rounding mode.</p>
+<code>float<em>n</em></code> is <code>float</code>, <code>float2</code>, <code>float3</code>, or <code>float4</code> and <code>double<em>n</em></code> is
+<code>double</code> <sup class="footnote">[<a id="_footnoteref_39" class="footnote" href="#_footnotedef_39" title="View footnote.">39</a>]</sup>, <code>double2</code>, <code>double3</code>, or
+<code>double4</code>.</p>
+</div>
+<div class="paragraph">
+<p>The built-in geometric functions are implemented using the round to nearest
+even rounding mode.
+The built-in geometric functions may be implemented using contractions such
+as <strong>mad</strong> or <strong>fma</strong>.</p>
 </div>
 <table id="table-builtin-geometric" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 14. Built-in Scalar and Vector Argument Geometric Functions</caption>
+<caption class="title">Table 15. Built-in Scalar and Vector Argument Geometric Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -7940,7 +7986,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="relational-functions">6.13.6. Relational Functions</h4>
+<h4 id="relational-functions"><a class="anchor" href="#relational-functions"></a>6.15.6. Relational Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -7950,28 +7996,24 @@
 respectively.</p>
 </div>
 <div class="paragraph">
-<p>The functions<sup>35</sup> described in the following table can be used with built-in
-scalar or vector types as arguments and return a scalar or vector integer
-result.
+<p>The functions described in the <a href="#table-builtin-relational">following table</a> can
+be used with built-in scalar or vector types as arguments and return a scalar or
+vector integer result <sup class="footnote">[<a id="_footnoteref_40" class="footnote" href="#_footnotedef_40" title="View footnote.">40</a>]</sup>.
 The argument type <code>gentype</code> refers to the following built-in types: <code>char</code>,
 <code>char<em>n</em></code>, <code>uchar</code>, <code>uchar<em>n</em></code>, <code>short</code>, <code>short<em>n</em></code>, <code>ushort</code>,
-<code>ushort<em>n</em></code>, <code>int</code>, <code>int<em>n</em></code>, <code>uint</code>, <code>uint<em>n</em></code>, <code>long</code>, <code>long<em>n</em></code>,
-<code>ulong</code>, <code>ulong<em>n</em></code>, <code>float</code>, <code>float<em>n</em></code>, <code>double</code>, and <code>double<em>n</em></code>.
+<code>ushort<em>n</em></code>, <code>int</code>, <code>int<em>n</em></code>, <code>uint</code>, <code>uint<em>n</em></code>, <code>long</code>
+<sup class="footnote">[<a id="_footnoteref_41" class="footnote" href="#_footnotedef_41" title="View footnote.">41</a>]</sup>, <code>long<em>n</em></code>, <code>ulong</code>, <code>ulong<em>n</em></code>, <code>float</code>,
+<code>float<em>n</em></code>, <code>double</code> <sup class="footnote">[<a id="_footnoteref_42" class="footnote" href="#_footnotedef_42" title="View footnote.">42</a>]</sup>, and
+<code>double<em>n</em></code>.
 The argument type <code>igentype</code> refers to the built-in signed integer types
 i.e. <code>char</code>, <code>char<em>n</em></code>, <code>short</code>, <code>short<em>n</em></code>, <code>int</code>, <code>int<em>n</em></code>, <code>long</code>
 and <code>long<em>n</em></code>.
 The argument type <code>ugentype</code> refers to the built-in unsigned integer types
-i.e. <strong>uchar</strong>, <strong>uchar<em>n</em></strong>, <strong>ushort</strong>, <strong>ushort<em>n</em></strong>, <code>uint</code>, <code>uint<em>n</em></code>,
+i.e. <code>uchar</code>, <code>uchar<em>n</em></code>, <code>ushort</code>, <code>ushort<em>n</em></code>, <code>uint</code>, <code>uint<em>n</em></code>,
 <code>ulong</code> and <code>ulong<em>n</em></code>.
 <em>n</em> is 2, 3, 4, 8, or 16.</p>
 </div>
 <div class="paragraph">
-<p>[35] If an implementation extends this specification to support IEEE-754
-flags or exceptions, then all built-in functions defined in the following
-table shall proceed without raising the <em>invalid</em> floating-point exception
-when one or more of the operands are NaNs.</p>
-</div>
-<div class="paragraph">
 <p>The functions <strong>isequal</strong>, <strong>isnotequal</strong>, <strong>isgreater</strong>, <strong>isgreaterequal</strong>,
 <strong>isless</strong>, <strong>islessequal</strong>, <strong>islessgreater</strong>, <strong>isfinite</strong>, <strong>isinf</strong>, <strong>isnan</strong>,
 <strong>isnormal</strong>, <strong>isordered</strong>, <strong>isunordered</strong> and <strong>signbit</strong> described in the
@@ -7990,7 +8032,7 @@
 not a number (NaN) and the argument type is a vector.</p>
 </div>
 <table id="table-builtin-relational" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 15. Built-in Scalar and Vector Relational Functions</caption>
+<caption class="title">Table 16. Built-in Scalar and Vector Relational Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -8116,14 +8158,18 @@
 <td class="tableblock halign-left valign-top"></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>any</strong>(igentype <em>x</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns 1 if the most significant bit in any component of <em>x</em> is set;
-      otherwise returns 0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>any</strong>(igentype <em>x</em>)</p>
+<p class="tableblock">Scalar inputs to <strong>any</strong> are <a href="#unified-spec">deprecated by</a> OpenCL C version
+3.0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns 1 if the most significant bit of <em>x</em> (for scalar inputs) or
+      any component of <em>x</em> (for vector inputs) is set; otherwise returns 0.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>all</strong>(igentype <em>x</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns 1 if the most significant bit in all components of <em>x</em> is set;
-      otherwise returns 0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>all</strong>(igentype <em>x</em>)</p>
+<p class="tableblock">Scalar inputs to <strong>all</strong> are <a href="#unified-spec">deprecated by</a> OpenCL C version
+3.0.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns 1 if the most significant bit of <em>x</em> (for scalar inputs) or
+      all components of <em>x</em> (for vector inputs) is set; otherwise returns 0.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -8136,47 +8182,40 @@
      Otherwise it is the corresponding bit of <em>b</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>select</strong>(gentype <em>a</em>, gentype <em>b</em>, igentype <em>c</em>)
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>select</strong>(gentype <em>a</em>, gentype <em>b</em>, igentype <em>c</em>)<br>
   gentype <strong>select</strong>(gentype <em>a</em>, gentype <em>b</em>, ugentype <em>c</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">For each component of a vector type,</p>
 <p class="tableblock">      <em>result[i]</em> = if MSB of <em>c[i]</em> is set ? <em>b[i]</em> : <em>a[i]</em>.</p>
 <p class="tableblock">      For a scalar type, <em>result</em> = <em>c</em> ? <em>b</em> : <em>a</em>.</p>
 <p class="tableblock">      <code>igentype</code> and <code>ugentype</code> must have the same number of elements and
-      bits as <code>gentype</code><sup>36</sup>.</p></td>
+      bits as <code>gentype</code> <sup class="footnote">[<a id="_footnoteref_43" class="footnote" href="#_footnotedef_43" title="View footnote.">43</a>]</sup>.</p></td>
 </tr>
 </tbody>
 </table>
-<div class="paragraph">
-<p>[36] The above definition means that the behavior of select and the ternary
-operator for vector and scalar types is dependent on different
-interpretations of the bit pattern of <em>c</em>.</p>
-</div>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="vector-data-load-and-store-functions">6.13.7. Vector Data Load and Store Functions</h4>
+<h4 id="vector-data-load-and-store-functions"><a class="anchor" href="#vector-data-load-and-store-functions"></a>6.15.7. Vector Data Load and Store Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The following table describes the list of supported functions that allow you
-to read and write vector types from a pointer to memory.
+<p>The <a href="#table-vector-loadstore">following table</a> describes the list of supported
+functions that allow you to read and write vector types from a pointer to
+memory.
 We use the generic type <code>gentype</code> to indicate the built-in data types
-<code>char</code>, <code>uchar</code>, <code>short</code>, <code>ushort</code>, <code>int</code>, <code>uint</code>, <code>long</code>, <code>ulong</code>, <code>float</code>
-or <code>double</code>.
+<code>char</code>, <code>uchar</code>, <code>short</code>, <code>ushort</code>, <code>int</code>, <code>uint</code>, <code>long</code> <sup class="footnote">[<a id="_footnoteref_44" class="footnote" href="#_footnotedef_44" title="View footnote.">44</a>]</sup>, <code>ulong</code>,
+<code>float</code> or <code>double</code> <sup class="footnote">[<a id="_footnoteref_45" class="footnote" href="#_footnotedef_45" title="View footnote.">45</a>]</sup>.
 We use the generic type name <code>gentype<em>n</em></code> to represent n-element vectors
 of <code>gentype</code> elements.
 We use the type name <code>half<em>n</em></code> to represent n-element vectors of half
-elements<sup>37</sup>.
+elements.
 The suffix <em>n</em> is also used in the function names (i.e. <strong>vload<em>n</em></strong>,
-<strong>vstore<em>n</em></strong> etc.), where <em>n</em> = 2, 3, 4, 8 or 16.</p>
-</div>
-<div class="paragraph">
-<p>[37] The <code>half<em>n</em></code> type is only defined by the <strong>cl_khr_fp16</strong> extension
-described in the <a href="#opencl-extension-spec">OpenCL Extension Specification</a>.</p>
+<strong>vstore<em>n</em></strong> etc.), where <em>n</em> = 2, 3 <sup class="footnote">[<a id="_footnoteref_46" class="footnote" href="#_footnotedef_46" title="View footnote.">46</a>]</sup>, 4, 8 or
+16.</p>
 </div>
 <table id="table-vector-loadstore" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 16. Built-in Vector Data Load and Store Functions<sup>38</sup></caption>
+<caption class="title">Table 17. Built-in Vector Data Load and Store Functions</caption>
 <colgroup>
 <col style="width: 70%;">
 <col style="width: 30%;">
@@ -8191,8 +8230,8 @@
   gentype<em>n</em> <strong>vload<em>n</em></strong>(size_t <em>offset</em>, const __local gentype *<em>p</em>)<br>
   gentype<em>n</em> <strong>vload<em>n</em></strong>(size_t <em>offset</em>, const __constant gentype *<em>p</em>)<br>
   gentype<em>n</em> <strong>vload<em>n</em></strong>(size_t <em>offset</em>, const __private gentype *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  gentype<em>n</em> <strong>vload<em>n</em></strong>(size_t <em>offset</em>, const gentype *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return <code>sizeof(gentype<em>n</em>)</code> bytes of data, where the first <code>(<em>n</em> *
       sizeof(gentype))</code> bytes are read from the address
@@ -8206,8 +8245,8 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, __global gentype *<em>p</em>)<br>
   void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, __local gentype *<em>p</em>)<br>
   void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, __private gentype *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, gentype *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Write <code><em>n</em> * sizeof(gentype)</code> bytes given by <em>data</em> to the address
       computed as <code>(<em>p</em> +  (<em>offset</em> * <em>n</em>))</code>.
@@ -8221,8 +8260,8 @@
   float <strong>vload_half</strong>(size_t <em>offset</em>, const __local half *<em>p</em>)<br>
   float <strong>vload_half</strong>(size_t <em>offset</em>, const __constant half *<em>p</em>)<br>
   float <strong>vload_half</strong>(size_t <em>offset</em>, const __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  float <strong>vload_half</strong>(size_t <em>offset</em>, const half *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Read <code>sizeof(half)</code> bytes of data from the address computed as <code>(<em>p</em>
       +  <em>offset</em>)</code>.
@@ -8236,8 +8275,8 @@
   float<em>n</em> <strong>vload_half<em>n</em></strong>(size_t <em>offset</em>, const __local half *<em>p</em>)<br>
   float<em>n</em> <strong>vload_half<em>n</em></strong>(size_t <em>offset</em>, const __constant half *<em>p</em>)<br>
   float<em>n</em> <strong>vload_half<em>n</em></strong>(size_t <em>offset</em>, const __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  float<em>n</em> <strong>vload_half<em>n</em></strong>(size_t <em>offset</em>, const half *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Read <code>(<em>n</em> * sizeof(half))</code> bytes of data from the address computed as
       <code>(<em>p</em> +  (<em>offset * n</em>))</code>.
@@ -8262,8 +8301,8 @@
   void <strong>vstore_half_rtz</strong>(float <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half_rtp</strong>(float <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half_rtn</strong>(float <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  void <strong>vstore_half</strong>(float <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half_rte</strong>(float <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half_rtz</strong>(float <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
@@ -8293,8 +8332,8 @@
   void <strong>vstore_half<em>n</em>_rtz</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rtp</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rtn</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  void <strong>vstore_half<em>n</em></strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rte</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rtz</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
@@ -8325,8 +8364,8 @@
   void <strong>vstore_half_rtz</strong>(double <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half_rtp</strong>(double <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half_rtn</strong>(double <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  void <strong>vstore_half</strong>(double <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half_rte</strong>(double <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half_rtz</strong>(double <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
@@ -8356,8 +8395,8 @@
   void <strong>vstore_half<em>n</em>_rtz</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rtp</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rtn</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  void <strong>vstore_half<em>n</em></strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rte</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstore_half<em>n</em>_rtz</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
@@ -8372,16 +8411,12 @@
       The default rounding mode is round to nearest even.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"></td>
-</tr>
-<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">float<em>n</em> <strong>vloada_half<em>n</em></strong>(size_t <em>offset</em>, const __global half *<em>p</em>)<br>
   float<em>n</em> <strong>vloada_half<em>n</em></strong>(size_t <em>offset</em>, const __local half *<em>p</em>)<br>
   float<em>n</em> <strong>vloada_half<em>n</em></strong>(size_t <em>offset</em>, const __constant half *<em>p</em>)<br>
   float<em>n</em> <strong>vloada_half<em>n</em></strong>(size_t <em>offset</em>, const __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  float<em>n</em> <strong>vloada_half<em>n</em></strong>(size_t <em>offset</em>, const half *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">For n = 2, 4, 8 and 16, read <code>sizeof(half<em>n</em>)</code> bytes of data from
       the address computed as (<em>p</em> + (<em>offset</em> * <em>n</em>)).
@@ -8409,8 +8444,8 @@
   void <strong>vstorea_half<em>n</em>_rtz</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rtp</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rtn</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  void <strong>vstorea_half<em>n</em></strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rte</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rtz</strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
@@ -8443,8 +8478,8 @@
   void <strong>vstorea_half<em>n</em>_rtz</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rtp</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rtn</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, __private half *<em>p</em>)<br></p>
-<p class="tableblock">  For OpenCL C 2.0 or with the <code>__opencl_c_generic_address_space</code>
-  feature macro:<br></p>
+<p class="tableblock">  For OpenCL C 2.0, or OpenCL C 3.0 or newer with the
+  <code>__opencl_c_generic_address_space</code> feature:<br></p>
 <p class="tableblock">  void <strong>vstorea_half<em>n</em></strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rte</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
   void <strong>vstorea_half<em>n</em>_rtz</strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)<br>
@@ -8464,27 +8499,13 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>[38] <strong>vload3</strong> and <strong>vload_half3</strong> read (<em>x</em>,<em>y</em>,<em>z</em>) components from address
-<code>(<em>p</em> + (<em>offset</em> * 3))</code> into a 3-component vector.
-<strong>vstore3</strong> and <strong>vstore_half3</strong> write (<em>x</em>,<em>y</em>,<em>z</em>) components from a
-3-component vector to address <code>(<em>p</em> + (<em>offset</em> * 3))</code>. In addition,
-<strong>vloada_half3</strong> reads (<em>x</em>,<em>y</em>,<em>z</em>) components from address
-<code>(<em>p</em> + (<em>offset</em> * 4))</code> into a 3-component vector and <strong>vstorea_half3</strong>
-writes (<em>x</em>,<em>y</em>,<em>z</em>) components from a 3-component vector to address <code>(<em>p</em>
-+  (<em>offset</em> * 4))</code>.  Whether <strong>vloada_half3</strong> and <strong>vstorea_half3</strong> read/write
-padding data between the third vector element and the next alignment boundary is
-implementation defined.  <strong>vloada_</strong> and <strong>vstorea_</strong> variants are provided to access
-data that is aligned to the size of the vector, and are intended to enable
-performance on hardware that can take advantage of the increased alignment.</p>
-</div>
-<div class="paragraph">
 <p>The results of vector data load and store functions are undefined if the
 address being read from or written to is not correctly aligned as described
-in <a href="#table-vector-loadstore">Built-in Vector Data Load and Store Functions<sup>38</sup></a>.
+in <a href="#table-vector-loadstore">Built-in Vector Data Load and Store Functions</a>.
 The pointer argument p can be a pointer to <code>global</code>, <code>local</code>, or <code>private</code>
-memory for store functions described in <a href="#table-vector-loadstore">Built-in Vector Data Load and Store Functions<sup>38</sup></a>.
+memory for store functions described in <a href="#table-vector-loadstore">Built-in Vector Data Load and Store Functions</a>.
 The pointer argument p can be a pointer to <code>global</code>, <code>local</code>, <code>constant</code>, or
-<code>private</code> memory for load functions described in <a href="#table-vector-loadstore">Built-in Vector Data Load and Store Functions<sup>38</sup></a>.</p>
+<code>private</code> memory for load functions described in <a href="#table-vector-loadstore">Built-in Vector Data Load and Store Functions</a>.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -8505,15 +8526,15 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="synchronization-functions">6.13.8. Synchronization Functions</h4>
+<h4 id="synchronization-functions"><a class="anchor" href="#synchronization-functions"></a>6.15.8. Synchronization Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The following table desribes built-in functions to synchronize the work-items
+<p>The following table describes built-in functions to synchronize the work-items
 in a work-group.</p>
 </div>
 <table id="table-builtin-synchronization" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 17. Built-in Work-Group Synchronization Functions</caption>
+<caption class="title">Table 18. Built-in Work-Group Synchronization Functions</caption>
 <colgroup>
 <col style="width: 30%;">
 <col style="width: 70%;">
@@ -8528,12 +8549,12 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>barrier</strong>(<br>
   cl_mem_fence_flags <em>flags</em>)<br></p>
-<p class="tableblock">  Added as an alias for <strong>barrier</strong> in OpenCL C 2.0 and newer:<br></p>
+<p class="tableblock">  For OpenCL C 2.0 or newer, as an alias for <strong>barrier</strong>:<br></p>
 <p class="tableblock">  void <strong>work_group_barrier</strong>(<br>
   cl_mem_fence_flags <em>flags</em>)<br></p>
 <p class="tableblock">  void <strong>work_group_barrier</strong>(<br>
   cl_mem_fence_flags <em>flags</em>,<br>
-  memory_scope <em>scope</em><sup>40</sup>)</p></td>
+  memory_scope <em>scope</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">For these functions, if any work-item in a work-group encounters a
   barrier, the barrier must be encountered by all work-items in the
   work-group before any are allowed to continue execution beyond the
@@ -8545,7 +8566,7 @@
   the barrier on each iteration of the loop if any work-item executes the barrier on that iteration.</p>
 <p class="tableblock">  The <strong>barrier</strong> and <strong>work_group_barrier</strong> functions can specify which
   memory operations become visible to the appropriate memory scope
-  identified by <em>scope</em>.
+  identified by <em>scope</em> <sup class="footnote">[<a id="_footnoteref_47" class="footnote" href="#_footnotedef_47" title="View footnote.">47</a>]</sup>.
   The <em>flags</em> argument specifies the memory address spaces.
   This is a bitfield and can be set to 0 or a combination of the
   following values OR&#8217;ed together.
@@ -8571,9 +8592,6 @@
 </tr>
 </tbody>
 </table>
-<div class="paragraph">
-<p>[40] Refer to the description and restrictions for <a href="#memory-scope"><code>memory_scope</code></a>.</p>
-</div>
 </div>
 </div>
 <div class="admonitionblock note">
@@ -8583,17 +8601,18 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in the following table requires support for the <code>__opencl_c_subgroups</code> feature macro.
+The functionality described in the following table <a href="#unified-spec">requires</a> support for OpenCL 3.0 or newer and the <code>__opencl_c_subgroups</code>
+feature.
 </td>
 </tr>
 </table>
 </div>
 <div class="paragraph">
-<p>The following table desribes built-in functions to synchronize the work-items
+<p>The following table describes built-in functions to synchronize the work-items
 in a subgroup.</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 18. Built-in Subgroup Synchronization Functions</caption>
+<caption class="title">Table 19. Built-in Subgroup Synchronization Functions</caption>
 <colgroup>
 <col style="width: 30%;">
 <col style="width: 70%;">
@@ -8651,7 +8670,77 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="address-space-qualifier-functions">6.13.9. Address Space Qualifier Functions</h4>
+<h4 id="legacy-mem-fence-functions"><a class="anchor" href="#legacy-mem-fence-functions"></a>6.15.9. Legacy Explicit Memory Fence Functions</h4>
+<div class="openblock">
+<div class="content">
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+The memory fence functions described in this sub-section are
+<a href="#unified-spec">deprecated by</a> OpenCL C 2.0.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The OpenCL C programming language implements the following explicit memory fence functions to provide ordering between memory operations of a work-item.</p>
+</div>
+<table id="table-builtin-explicit-memory-fences" class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 20. Built-in Explicit Memory Fence Functions</caption>
+<colgroup>
+<col style="width: 30%;">
+<col style="width: 70%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Function</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>mem_fence</strong>(<br>
+  cl_mem_fence_flags <em>flags</em>)<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Orders loads and stores of a work-item executing a kernel.  This means that
+  loads and stores preceding the <strong>mem_fence</strong> will be committed to memory
+  before any loads and stores following the <strong>mem_fence</strong>.</p>
+<p class="tableblock">  The <em>flags</em> argument specifies the memory address space and can be set to a
+  combination of the following literal values:</p>
+<p class="tableblock">  <code>CLK_LOCAL_MEM_FENCE</code><br>
+  <code>CLK_GLOBAL_MEM_FENCE</code></p>
+<p class="tableblock">  The value of <em>flags</em> must be the same for all work-items in the work-group.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>read_mem_fence</strong>(<br>
+  cl_mem_fence_flags <em>flags</em>)<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Read memory barrier that orders only loads.</p>
+<p class="tableblock">  The <em>flags</em> argument specifies the memory address space and can be set to a
+  combination of the following literal values:</p>
+<p class="tableblock">  <code>CLK_LOCAL_MEM_FENCE</code><br>
+  <code>CLK_GLOBAL_MEM_FENCE</code></p>
+<p class="tableblock">  The value of <em>flags</em> must be the same for all work-items in the work-group.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>write_mem_fence</strong>(<br>
+  cl_mem_fence_flags <em>flags</em>)<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Write memory barrier that orders only stores.</p>
+<p class="tableblock">  The <em>flags</em> argument specifies the memory address space and can be set to a
+  combination of the following literal values:</p>
+<p class="tableblock">  <code>CLK_LOCAL_MEM_FENCE</code><br>
+  <code>CLK_GLOBAL_MEM_FENCE</code></p>
+<p class="tableblock">  The value of <em>flags</em> must be the same for all work-items in the work-group.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="address-space-qualifier-functions"><a class="anchor" href="#address-space-qualifier-functions"></a>6.15.10. Address Space Qualifier Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="admonitionblock note">
@@ -8661,8 +8750,9 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in this section requires support for
-OpenCL C 2.0 or the <code>__opencl_c_generic_address_space</code> feature macro.
+The functionality described in this section <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and the
+<code>__opencl_c_generic_address_space</code> feature.
 </td>
 </tr>
 </table>
@@ -8675,7 +8765,7 @@
 types supported by OpenCL C or a user defined type.</p>
 </div>
 <table id="table-builtin-address-qualifier" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 19. Built-in Address Space Qualifier Functions</caption>
+<caption class="title">Table 21. Built-in Address Space Qualifier Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -8717,29 +8807,24 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="async-copies">6.13.10. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</h4>
+<h4 id="async-copies"><a class="anchor" href="#async-copies"></a>6.15.11. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The OpenCL C programming language implements the following functions that
-provide asynchronous copies between <code>global</code> and local memory and a prefetch
-from <code>global</code> memory.</p>
+<p>The OpenCL C programming language implements the <a href="#table-builtin-async-copy">following functions</a> that provide asynchronous copies between <code>global</code> and
+local memory and a prefetch from <code>global</code> memory.</p>
 </div>
 <div class="paragraph">
-<p>We use the generic type name <code>gentype</code> to indicate the built-in data types
-char, <code>char{2|3<sup>41</sup>|4|8|16}</code>, <code>uchar</code>, <code>uchar{2|3|4|8|16}</code>, <code>short</code>,
-<code>short{2|3|4|8|16}</code>, <code>ushort</code>, <code>ushort{2|3|4|8|16}</code>, <code>int</code>,
-<code>int{2|3|4|8|16}</code>, <code>uint</code>, <code>uint{2|3|4|8|16}</code>, <code>long</code>, <code>long{2|3|4|8|16}</code>,
-<code>ulong</code>, <code>ulong{2|3|4|8|16}</code>, <code>float</code>, <code>float{2|3|4|8|16}</code>, or <code>double</code>,
-<code>double{2|3|4|8|16}</code> as the type for the arguments unless otherwise stated.</p>
-</div>
-<div class="paragraph">
-<p>[41] <strong>async_work_group_copy</strong> and <strong>async_work_group_strided_copy</strong> for
-3-component vector types behave as <strong>async_work_group_copy</strong> and
-<strong>async_work_group_strided_copy</strong> respectively for 4-component vector types.</p>
+<p>We use the generic type name <code>gentype</code> to indicate the built-in data types char,
+<code>char{2|3|4|8|16}</code>, <code>uchar</code>, <code>uchar{2|3|4|8|16}</code>, <code>short</code>, <code>short{2|3|4|8|16}</code>,
+<code>ushort</code>, <code>ushort{2|3|4|8|16}</code>, <code>int</code>, <code>int{2|3|4|8|16}</code>, <code>uint</code>,
+<code>uint{2|3|4|8|16}</code>, <code>long</code> <sup class="footnote">[<a id="_footnoteref_48" class="footnote" href="#_footnotedef_48" title="View footnote.">48</a>]</sup>, <code>long{2|3|4|8|16}</code>,
+<code>ulong</code>, <code>ulong{2|3|4|8|16}</code>, <code>float</code>, <code>float{2|3|4|8|16}</code>, or <code>double</code>
+<sup class="footnote">[<a id="_footnoteref_49" class="footnote" href="#_footnotedef_49" title="View footnote.">49</a>]</sup>, <code>double{2|3|4|8|16}</code> as the type for
+the arguments unless otherwise stated <sup class="footnote">[<a id="_footnoteref_50" class="footnote" href="#_footnotedef_50" title="View footnote.">50</a>]</sup>.</p>
 </div>
 <table id="table-builtin-async-copy" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 20. Built-in Async Copy and Prefetch Functions</caption>
+<caption class="title">Table 22. Built-in Async Copy and Prefetch Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -8750,10 +8835,10 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">event_t <strong>async_work_group_copy</strong>(<em>local gentype <em>*dst</em>,
-  const </em>global gentype *<em>src</em>, size_t <em>num_gentypes</em>, event_t <em>event</em>)<br>
-  event_t <strong>async_work_group_copy</strong>(<em>global gentype <em>*dst</em>,
-  const </em>local gentype *<em>src</em>, size_t <em>num_gentypes</em>, event_t <em>event</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">event_t <strong>async_work_group_copy</strong>(__local gentype <em>*dst</em>,
+  const __global gentype *<em>src</em>, size_t <em>num_gentypes</em>, event_t <em>event</em>)<br>
+  event_t <strong>async_work_group_copy</strong>(__global gentype <em>*dst</em>,
+  const __local gentype *<em>src</em>, size_t <em>num_gentypes</em>, event_t <em>event</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Perform an async copy of <em>num_gentypes</em> gentype elements from <em>src</em> to
       <em>dst</em>.
       The async copy is performed by all work-items in a work-group and this
@@ -8779,11 +8864,11 @@
 <td class="tableblock halign-left valign-top"></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">event_t <strong>async_work_group_strided_copy</strong>(<em>local gentype <em>*dst</em>,
-  const </em>global gentype *<em>src</em>, size_t <em>num_gentypes</em>, size_t <em>src_stride</em>,
+<td class="tableblock halign-left valign-top"><p class="tableblock">event_t <strong>async_work_group_strided_copy</strong>(__local gentype <em>*dst</em>,
+  const __global gentype *<em>src</em>, size_t <em>num_gentypes</em>, size_t <em>src_stride</em>,
   event_t <em>event</em>)<br>
-  event_t <strong>async_work_group_strided_copy</strong>(<em>global gentype <em>*dst</em>,
-  const </em>local gentype *<em>src</em>, size_t <em>num_gentypes</em>, size_t <em>dst_stride</em>,
+  event_t <strong>async_work_group_strided_copy</strong>(__global gentype <em>*dst</em>,
+  const __local gentype *<em>src</em>, size_t <em>num_gentypes</em>, size_t <em>dst_stride</em>,
   event_t <em>event</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Perform an async gather of <em>num_gentypes</em> <code>gentype</code> elements from
       <em>src</em> to <em>dst</em>.
@@ -8811,7 +8896,8 @@
 <p class="tableblock">      The behavior of <strong>async_work_group_strided_copy</strong> is undefined if
       <em>src_stride</em> or <em>dst_stride</em> is 0, or if the <em>src_stride</em> or
       <em>dst_stride</em> values cause the <em>src</em> or <em>dst</em> pointers to exceed the
-      upper bounds of the address space during the copy.</p></td>
+      upper bounds of the address space during the copy.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -8834,7 +8920,7 @@
 <td class="tableblock halign-left valign-top"></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>prefetch</strong>(const <em>_global gentype *_p</em>, size_t <em>num_gentypes</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>prefetch</strong>(const __global gentype *<em>p</em>, size_t <em>num_gentypes</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Prefetch <code><em>num_gentypes</em> * sizeof(gentype)</code> bytes into the global
       cache.
       The prefetch instruction is applied to a work-item in a work-group and
@@ -8862,7 +8948,21 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="atomic-functions">6.13.11. Atomic Functions</h4>
+<h4 id="atomic-functions"><a class="anchor" href="#atomic-functions"></a>6.15.12. Atomic Functions</h4>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+The C11 style atomic functions in this sub-section <a href="#unified-spec">require</a> support for OpenCL 2.0 or newer.  However, this statement does not
+apply to the <a href="#atomic-legacy">"OpenCL C 1.x Legacy Atomics"</a> descriptions at
+the end of this sub-section.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
 <p>The OpenCL C programming language implements a subset of the C11 atomics
 (refer to <a href="#C11-spec">section 7.17 of the C11 Specification</a>) and
@@ -8871,7 +8971,7 @@
 visible to another.
 A synchronization operation on one or more memory locations is either an
 acquire operation, a release operation, or both an acquire and release
-operation<sup>42</sup>.
+operation <sup class="footnote">[<a id="_footnoteref_51" class="footnote" href="#_footnotedef_51" title="View footnote.">51</a>]</sup>.
 A synchronization operation without an associated memory location is a fence
 and can be either an acquire fence, a release fence or both an acquire and
 release fence.
@@ -8880,42 +8980,36 @@
 have special characteristics.</p>
 </div>
 <div class="paragraph">
-<p>[42] The <a href="#C11-spec">C11</a> consume operation is not supported.</p>
-</div>
-<div class="paragraph">
 <p>The types include</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><code>memory_order</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>which is an enumerated type whose enumerators identify memory ordering
 constraints;</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><code>memory_scope</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>which is an enumerated type whose enumerators identify scope of memory
 ordering constraints;</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><code>atomic_flag</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>which is a 32-bit integer type representing a primitive atomic flag; and
@@ -8977,7 +9071,7 @@
 </table>
 </div>
 <div class="sect4">
-<h5 id="the-atomic_var_init-macro">The <code>ATOMIC_VAR_INIT</code> macro</h5>
+<h5 id="the-atomic_var_init-macro"><a class="anchor" href="#the-atomic_var_init-macro"></a>6.15.12.1. The <code>ATOMIC_VAR_INIT</code> macro</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -9014,7 +9108,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="the-atomic_init-function">The atomic_init function</h5>
+<h5 id="the-atomic_init-function"><a class="anchor" href="#the-atomic_init-function"></a>6.15.12.2. The atomic_init function</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -9023,7 +9117,13 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="directive">void</span> atomic_init(<span class="directive">volatile</span> A *obj, C value)</code></pre>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="directive">void</span> atomic_init(<span class="directive">volatile</span> __global A *obj, C value)
+<span class="directive">void</span> atomic_init(<span class="directive">volatile</span> __local A *obj, C value)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
+<span class="directive">void</span> atomic_init(<span class="directive">volatile</span> A *obj, C value)</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -9031,17 +9131,32 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c">local atomic_int local_guide;
+<pre class="CodeRay highlight"><code data-lang="c">local atomic_int guide;
 <span class="keyword">if</span> (get_local_id(<span class="integer">0</span>) == <span class="integer">0</span>)
     atomic_init(&amp;guide, <span class="integer">42</span>);
 work_group_barrier(CLK_LOCAL_MEM_FENCE);</code></pre>
 </div>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variant that uses the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">requires</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect4">
-<h5 id="order-and-consistency">Order and Consistency</h5>
+<h5 id="order-and-consistency"><a class="anchor" href="#order-and-consistency"></a>6.15.12.3. Order and Consistency</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -9063,27 +9178,30 @@
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_order_relaxed</code></p></td>
-<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_order_acquire</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Always present but some uses require support for OpenCL C 2.0 or the
-      <code>__opencl_c_atomic_order_acq_rel</code> feature macro.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0, but in OpenCL C 3.0
+      or newer some uses require the <code>__opencl_c_atomic_order_acq_rel</code>
+      feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_order_release</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Always present but some uses require support for OpenCL C 2.0 or the
-      <code>__opencl_c_atomic_order_acq_rel</code> feature macro.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0, but in OpenCL C 3.0
+      or newer some uses require the <code>__opencl_c_atomic_order_acq_rel</code>
+      feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_order_acq_rel</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Always present but some uses require support for OpenCL C 2.0 or the
-      <code>__opencl_c_atomic_order_acq_rel</code> feature macro.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0, but in OpenCL C 3.0
+      or newer some uses require the <code>__opencl_c_atomic_order_acq_rel</code>
+      feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_order_seq_cst</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Requires support for OpenCL C 2.0, or the
-      <code>__opencl_c_atomic_order_seq_cst</code> feature macro.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_atomic_order_seq_cst</code> feature.</p></td>
 </tr>
 </tbody>
 </table>
@@ -9095,7 +9213,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="memory-scope">Memory Scope</h5>
+<h5 id="memory-scope"><a class="anchor" href="#memory-scope"></a>6.15.12.4. Memory Scope</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -9118,32 +9236,33 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_scope_work_item</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_scope_work_item</code> can only be used with <code>atomic_work_item_fence</code>
-      with flags set to <code>CLK_IMAGE_MEM_FENCE</code>.</p></td>
+      with flags set to <code>CLK_IMAGE_MEM_FENCE</code>.
+      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_scope_sub_group</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Requires support for the <code>__opencl_c_subgroups</code> feature
-      macro.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 3.0 or newer and the
+      <code>__opencl_c_subgroups</code> feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_scope_work_group</code></p></td>
-<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_scope_device</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Requires support for OpenCL C 2.0 or the
-      <code>__opencl_c_atomic_scope_device</code> feature macro.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_atomic_scope_device</code> feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_scope_all_svm_devices</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Requires support for OpenCL C 2.0 or the
-      <code>__opencl_c_atomic_scope_all_devices</code> feature macro.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#unified-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_atomic_scope_all_devices</code> feature.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>memory_scope_all_devices</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">An alias for <code>memory_scope_all_svm_devices</code>.
-      Requires support for the <code>__opencl_c_atomic_scope_all_devices</code> feature
-      macro.</p></td>
+      <a href="#unified-spec">Requires</a> support for OpenCL C 3.0 or newer and the
+      <code>__opencl_c_atomic_scope_all_devices</code> feature.</p></td>
 </tr>
 </tbody>
 </table>
@@ -9151,7 +9270,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="fences">Fences</h5>
+<h5 id="fences"><a class="anchor" href="#fences"></a>6.15.12.5. Fences</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -9230,73 +9349,45 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="atomic-integer-and-floating-point-types">Atomic integer and floating-point types</h5>
+<h5 id="atomic-integer-and-floating-point-types"><a class="anchor" href="#atomic-integer-and-floating-point-types"></a>6.15.12.6. Atomic integer and floating-point types</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>The list of supported atomic type names are:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><code>atomic_int</code></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><code>atomic_uint</code></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
-<p><code>atomic_long</code><sup>45</sup></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
-<p><code>atomic_ulong</code></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
+<p><code>atomic_long</code> <sup class="footnote" id="_footnote_atomic-int64-supported">[<a id="_footnoteref_52" class="footnote" href="#_footnotedef_52" title="View footnote.">52</a>]</sup></p>
+</li>
+<li>
+<p><code>atomic_ulong</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_52" title="View footnote.">52</a>]</sup></p>
+</li>
+<li>
 <p><code>atomic_float</code></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
-<p><code>atomic_double</code><sup>46</sup></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
-<p><code>atomic_intptr_t</code><sup>47</sup></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
-<p><code>atomic_uintptr_t</code></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
-<p><code>atomic_size_t</code></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
-<p><code>atomic_ptrdiff_t</code></p>
-</dd>
-</dl>
-</div>
-<div class="paragraph">
-<p>[45] The atomic_long and atomic_ulong types are supported if the
-<strong>cl_khr_int64_base_atomics</strong> and <strong>cl_khr_int64_extended_atomics</strong> extensions
-are supported and have been enabled.</p>
-</div>
-<div class="paragraph">
-<p>[46] The <code>atomic_double</code> type is only supported if double precision is
-supported and the <strong>cl_khr_int64_base_atomics</strong> and
-<strong>cl_khr_int64_extended_atomics</strong> extensions are supported and have been
-enabled.</p>
-</div>
-<div class="paragraph">
-<p>[47] If the device address space is 64-bits, the data types
-<code>atomic_intptr_t</code>, <code>atomic_uintptr_t</code>, <code>atomic_size_t</code> and
-<code>atomic_ptrdiff_t</code> are supported if the <strong>cl_khr_int64_base_atomics</strong> and
-<strong>cl_khr_int64_extended_atomics</strong> extensions are supported and have been
-enabled.</p>
+</li>
+<li>
+<p><code>atomic_double</code> <sup class="footnote">[<a id="_footnoteref_53" class="footnote" href="#_footnotedef_53" title="View footnote.">53</a>]</sup></p>
+</li>
+<li>
+<p><code>atomic_intptr_t</code> <sup class="footnote" id="_footnote_atomic-size_t-supported">[<a id="_footnoteref_54" class="footnote" href="#_footnotedef_54" title="View footnote.">54</a>]</sup></p>
+</li>
+<li>
+<p><code>atomic_uintptr_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_54" title="View footnote.">54</a>]</sup></p>
+</li>
+<li>
+<p><code>atomic_size_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_54" title="View footnote.">54</a>]</sup></p>
+</li>
+<li>
+<p><code>atomic_ptrdiff_t</code> <sup class="footnoteref">[<a class="footnote" href="#_footnotedef_54" title="View footnote.">54</a>]</sup></p>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>Arguments to a kernel can be declared to be a pointer to the above atomic
@@ -9311,26 +9402,56 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="operations-on-atomic-types">Operations on atomic types</h5>
+<h5 id="operations-on-atomic-types"><a class="anchor" href="#operations-on-atomic-types"></a>6.15.12.7. Operations on atomic types</h5>
 <div class="paragraph">
 <p>There are only a few kinds of operations on atomic types, though there are
 many instances of those kinds.
 This section specifies each general kind.</p>
 </div>
 <div class="sect5">
-<h6 id="atomic_store"><strong>The atomic_store Functions</strong></h6>
+<h6 id="atomic_store"><a class="anchor" href="#atomic_store"></a>6.15.12.7.1. <strong>The atomic_store Functions</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 2.0, or both the __opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and __opencl_c_atomic_scope_device feature macros.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+<span class="directive">void</span> atomic_store(<span class="directive">volatile</span> __global A *object, C desired)
+<span class="directive">void</span> atomic_store(<span class="directive">volatile</span> __local A *object, C desired)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and all of the</span>
+<span class="comment">// __opencl_c_generic_address_space, __opencl_c_atomic_order_seq_cst and</span>
+<span class="comment">// __opencl_c_atomic_scope_device features.</span>
 <span class="directive">void</span> atomic_store(<span class="directive">volatile</span> A *object, C desired)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer and the __opencl_c_atomic_scope_device</span>
+<span class="comment">// feature.</span>
+<span class="directive">void</span> atomic_store_explicit(<span class="directive">volatile</span> __global A *object,
+                           C desired,
+                           memory_order order)
+<span class="directive">void</span> atomic_store_explicit(<span class="directive">volatile</span> __local A *object,
+                           C desired,
+                           memory_order order)
+
+<span class="comment">// Requires OpenCL C 2.0 or OpenCL C 3.0 or newer and both the</span>
+<span class="comment">// __opencl_c_generic_address_space and __opencl_c_atomic_scope_device</span>
+<span class="comment">// features.</span>
 <span class="directive">void</span> atomic_store_explicit(<span class="directive">volatile</span> A *object,
                            C desired,
                            memory_order order)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="directive">void</span> atomic_store_explicit(<span class="directive">volatile</span> __global A *object,
+                           C desired,
+                           memory_order order,
+                           memory_scope scope)
+<span class="directive">void</span> atomic_store_explicit(<span class="directive">volatile</span> __local A *object,
+                           C desired,
+                           memory_order order,
+                           memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 <span class="directive">void</span> atomic_store_explicit(<span class="directive">volatile</span> A *object,
                            C desired,
                            memory_order order,
@@ -9351,31 +9472,73 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The non-explicit <code>atomic_store</code> function requires OpenCL C 2.0, or both
-the <code>__opencl_c_atomic_order_seq_cst</code> and
-<code>__opencl_c_atomic_scope_device</code> feature macros.
+The non-explicit <code>atomic_store</code> function <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and both the
+<code>__opencl_c_atomic_order_seq_cst</code> and <code>__opencl_c_atomic_scope_device</code>
+features.
 For the explicit variants, memory order and scope enumerations must respect the
 <a href="#atomic-restrictions">restrictions section below</a>.
 </td>
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variants that use the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">require</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect5">
-<h6 id="atomic_load"><strong>The atomic_load Functions</strong></h6>
+<h6 id="atomic_load"><a class="anchor" href="#atomic_load"></a>6.15.12.7.2. <strong>The atomic_load Functions</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 2.0, or both the __opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and __opencl_c_atomic_scope_device feature macros.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+C atomic_load(<span class="directive">volatile</span> __global A *object)
+C atomic_load(<span class="directive">volatile</span> __local A *object)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and all of the</span>
+<span class="comment">// __opencl_c_generic_address_space, __opencl_c_atomic_order_seq_cst and</span>
+<span class="comment">// __opencl_c_atomic_scope_device features.</span>
 C atomic_load(<span class="directive">volatile</span> A *object)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer and the __opencl_c_atomic_scope_device</span>
+<span class="comment">// feature.</span>
+C atomic_load_explicit(<span class="directive">volatile</span> __global A *object,
+                       memory_order order)
+C atomic_load_explicit(<span class="directive">volatile</span> __local A *object,
+                       memory_order order)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and both the</span>
+<span class="comment">// __opencl_c_generic_address_space and __opencl_c_atomic_scope_device</span>
+<span class="comment">// features.</span>
 C atomic_load_explicit(<span class="directive">volatile</span> A *object,
                        memory_order order)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+C atomic_load_explicit(<span class="directive">volatile</span> __global A *object,
+                       memory_order order,
+                       memory_scope scope)
+C atomic_load_explicit(<span class="directive">volatile</span> __local A *object,
+                       memory_order order,
+                       memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 C atomic_load_explicit(<span class="directive">volatile</span> A *object,
                        memory_order order,
                        memory_scope scope)</code></pre>
@@ -9394,32 +9557,78 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The non-explicit <code>atomic_load</code> function requires OpenCL C 2.0, or both
-the <code>__opencl_c_atomic_order_seq_cst</code> and
-<code>__opencl_c_atomic_scope_device</code> feature macros.
+The non-explicit <code>atomic_load</code> function <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0 or OpenCL C 3.0 or newer and both the
+<code>__opencl_c_atomic_order_seq_cst</code> and <code>__opencl_c_atomic_scope_device</code>
+features.
 For the explicit variants, memory order and scope enumerations must respect the
 <a href="#atomic-restrictions">restrictions section below</a>.
 </td>
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variants that use the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">require</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect5">
-<h6 id="atomic_exchange"><strong>The atomic_exchange Functions</strong></h6>
+<h6 id="atomic_exchange"><a class="anchor" href="#atomic_exchange"></a>6.15.12.7.3. <strong>The atomic_exchange Functions</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 2.0, or both the __opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and __opencl_c_atomic_scope_device feature macros.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+C atomic_exchange(<span class="directive">volatile</span> __global A *object, C desired)
+C atomic_exchange(<span class="directive">volatile</span> __local A *object, C desired)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and all of the</span>
+<span class="comment">// __opencl_c_generic_address_space, __opencl_c_atomic_order_seq_cst and</span>
+<span class="comment">// __opencl_c_atomic_scope_device features.</span>
 C atomic_exchange(<span class="directive">volatile</span> A *object, C desired)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer and the __opencl_c_atomic_scope_device</span>
+<span class="comment">// feature.</span>
+C atomic_exchange_explicit(<span class="directive">volatile</span> __global A *object,
+                           C desired,
+                           memory_order order)
+C atomic_exchange_explicit(<span class="directive">volatile</span> __local A *object,
+                           C desired,
+                           memory_order order)
+
+<span class="comment">// Requires OpenCL C 2.0 or OpenCL C 3.0 or newer and both the</span>
+<span class="comment">// __opencl_c_generic_address_space and __opencl_c_atomic_scope_device</span>
+<span class="comment">// feature.</span>
 C atomic_exchange_explicit(<span class="directive">volatile</span> A *object,
                            C desired,
                            memory_order order)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+C atomic_exchange_explicit(<span class="directive">volatile</span> __global A *object,
+                           C desired,
+                           memory_order order,
+                           memory_scope scope)
+C atomic_exchange_explicit(<span class="directive">volatile</span> __local A *object,
+                           C desired,
+                           memory_order order,
+                           memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 C atomic_exchange_explicit(<span class="directive">volatile</span> A *object,
                            C desired,
                            memory_order order,
@@ -9441,30 +9650,108 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The non-explicit <code>atomic_exchange</code> function requires OpenCL C 2.0, or
-both the <code>__opencl_c_atomic_order_seq_cst</code> and
-<code>__opencl_c_atomic_scope_device</code> feature macros.
+The non-explicit <code>atomic_exchange</code> function <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0 or OpenCL C 3.0 or newer and both the
+<code>__opencl_c_atomic_order_seq_cst</code> and <code>__opencl_c_atomic_scope_device</code>
+features.
 For the explicit variants, memory order and scope enumerations must respect the
 <a href="#atomic-restrictions">restrictions section below</a>.
 </td>
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variants that use the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">require</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect5">
-<h6 id="atomic_compare_exchange"><strong>The atomic_compare_exchange Functions</strong></h6>
+<h6 id="atomic_compare_exchange"><a class="anchor" href="#atomic_compare_exchange"></a>6.15.12.7.4. <strong>The atomic_compare_exchange Functions</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 2.0, or both the __opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and __opencl_c_atomic_scope_device feature macros.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong(
+    <span class="directive">volatile</span> __global A *object,
+    __global C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong(
+    <span class="directive">volatile</span> __global A *object,
+    __local C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong(
+    <span class="directive">volatile</span> __global A *object,
+    __private C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong(
+    <span class="directive">volatile</span> __local A *object,
+    __global C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong(
+    <span class="directive">volatile</span> __local A *object,
+    __local C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong(
+    <span class="directive">volatile</span> __local A *object,
+    __private C *expected, C desired)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and all of the</span>
+<span class="comment">// __opencl_c_generic_address_space, __opencl_c_atomic_order_seq_cst and</span>
+<span class="comment">// __opencl_c_atomic_scope_device features.</span>
 <span class="predefined-type">bool</span> atomic_compare_exchange_strong(
     <span class="directive">volatile</span> A *object,
     C *expected, C desired)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 <span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
     <span class="directive">volatile</span> A *object,
     C *expected,
@@ -9472,6 +9759,52 @@
     memory_order success,
     memory_order failure)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 <span class="predefined-type">bool</span> atomic_compare_exchange_strong_explicit(
     <span class="directive">volatile</span> A *object,
     C *expected,
@@ -9480,12 +9813,74 @@
     memory_order failure,
     memory_scope scope)
 
-<span class="comment">// Requires OpenCL C 2.0, or both the __opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and __opencl_c_atomic_scope_device feature macros.</span>
+<span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak(
+    <span class="directive">volatile</span> __global A *object,
+    __global C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak(
+    <span class="directive">volatile</span> __global A *object,
+    __local C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak(
+    <span class="directive">volatile</span> __global A *object,
+    __private C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak(
+    <span class="directive">volatile</span> __local A *object,
+    __global C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak(
+    <span class="directive">volatile</span> __local A *object,
+    __local C *expected, C desired)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak(
+    <span class="directive">volatile</span> __local A *object,
+    __private C *expected, C desired)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and all of the</span>
+<span class="comment">// __opencl_c_generic_address_space, __opencl_c_atomic_order_seq_cst and</span>
+<span class="comment">// __opencl_c_atomic_scope_device features.</span>
 <span class="predefined-type">bool</span> atomic_compare_exchange_weak(
     <span class="directive">volatile</span> A *object,
     C *expected, C desired)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 <span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
     <span class="directive">volatile</span> A *object,
     C *expected,
@@ -9493,6 +9888,52 @@
     memory_order success,
     memory_order failure)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __global A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __global C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __local C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
+    <span class="directive">volatile</span> __local A *object,
+    __private C *expected,
+    C desired,
+    memory_order success,
+    memory_order failure,
+    memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 <span class="predefined-type">bool</span> atomic_compare_exchange_weak_explicit(
     <span class="directive">volatile</span> A *object,
     C *expected,
@@ -9503,7 +9944,7 @@
 </div>
 </div>
 <div class="paragraph">
-<p>The <em>failure</em> argument shall not be <code>memory_order_release</code> nor
+<p>The <code>failure</code> argument shall not be <code>memory_order_release</code> nor
 <code>memory_order_acq_rel</code>.
 The <code>failure</code> argument shall be no stronger than the <code>success</code> argument.
 Atomically, compares the value pointed to by object for equality with that
@@ -9540,16 +9981,13 @@
 </table>
 </div>
 <div class="paragraph">
-<p>The weak compare-and-exchange operations may fail spuriously<sup>48</sup>.
+<p>The weak compare-and-exchange operations may fail spuriously
+<sup class="footnote">[<a id="_footnoteref_55" class="footnote" href="#_footnotedef_55" title="View footnote.">55</a>]</sup>.
 That is, even when the contents of memory referred to by <code>expected</code> and
 <code>object</code> are equal, it may return zero and store back to <code>expected</code> the same
 memory contents that were originally there.</p>
 </div>
 <div class="paragraph">
-<p>[48] This spurious failure enables implementation of compare-and-exchange on
-a broader class of machines, e.g. load-locked store-conditional machines.</p>
-</div>
-<div class="paragraph">
 <p>These generic functions return the result of the comparison.</p>
 </div>
 <div class="admonitionblock note">
@@ -9560,20 +9998,36 @@
 </td>
 <td class="content">
 The non-explicit <code>atomic_compare_exchange_strong</code> and
-<code>atomic_compare_exchange_weak</code> functions requires OpenCL C 2.0, or both the
+<code>atomic_compare_exchange_weak</code> functions <a href="#unified-spec">requires</a> support
+for OpenCL C 2.0, or OpenCL C 3.0 or newer and both the
 <code>__opencl_c_atomic_order_seq_cst</code> and <code>__opencl_c_atomic_scope_device</code>
-feature macros.
+features.
 For the explicit variants, memory order and scope enumerations must respect the
 <a href="#atomic-restrictions">restrictions section below</a>.
 </td>
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variants that use the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">require</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect5">
-<h6 id="atomic_fetch_key"><strong>The atomic_fetch and modify Functions</strong></h6>
+<h6 id="atomic_fetch_key"><a class="anchor" href="#atomic_fetch_key"></a>6.15.12.7.5. <strong>The atomic_fetch and modify Functions</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -9642,8 +10096,8 @@
 <p>For <strong>atomic_fetch</strong> and modify functions with <strong>key</strong> = <code>add</code> or <code>sub</code> on
 atomic types <code>atomic_intptr_t</code> and <code>atomic_uintptr_t</code>, <code>M</code> is <code>ptrdiff_t</code>.
 For <strong>atomic_fetch</strong> and modify functions with <strong>key</strong> = <code>or</code>, <code>xor</code>, <code>and</code>,
-<code>min</code> and <code>max</code> on atomic types <code>atomic_intptr_t</code> and <code>atomic_uintptr_t</code>,
-<code>M</code> is <code>intptr_t</code> and <code>uintptr_t</code>.</p>
+<code>min</code> and <code>max</code> on atomic type <code>atomic_intptr_t</code>, <code>M</code> is <code>intptr_t</code>,
+and on atomic type <code>atomic_uintptr_t</code>, <code>M</code> is <code>uintptr_t</code>.</p>
 </div>
 </td>
 </tr>
@@ -9651,14 +10105,42 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 2.0, or both the <em>opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and </em>opencl_c_atomic_scope_device feature macros.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+C atomic_fetch_key(<span class="directive">volatile</span> __global A *object, M operand)
+C atomic_fetch_key(<span class="directive">volatile</span> __local A *object, M operand)
+
+<span class="comment">// Requires OpenCL C 2.0, or all of the __opencl_c_generic_address_space,</span>
+<span class="comment">// __opencl_c_atomic_order_seq_cst and __opencl_c_atomic_scope_device features.</span>
 C atomic_fetch_key(<span class="directive">volatile</span> A *object, M operand)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer and the __opencl_c_atomic_scope_device feature.</span>
+C atomic_fetch_key_explicit(<span class="directive">volatile</span> __global A *object,
+                            M operand,
+                            memory_order order)
+C atomic_fetch_key_explicit(<span class="directive">volatile</span> __local A *object,
+                            M operand,
+                            memory_order order)
+
+<span class="comment">// Requires OpenCL C 2.0 or OpenCL C 3.0 or newer and both the</span>
+<span class="comment">// __opencl_c_generic_address_space and __opencl_c_atomic_scope_device</span>
+<span class="comment">// features.</span>
 C atomic_fetch_key_explicit(<span class="directive">volatile</span> A *object,
                             M operand,
                             memory_order order)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+C atomic_fetch_key_explicit(<span class="directive">volatile</span> __global A *object,
+                            M operand,
+                            memory_order order,
+                            memory_scope scope)
+C atomic_fetch_key_explicit(<span class="directive">volatile</span> __local A *object,
+                            M operand,
+                            memory_order order,
+                            memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 C atomic_fetch_key_explicit(<span class="directive">volatile</span> A *object,
                             M operand,
                             memory_order order,
@@ -9687,20 +10169,36 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The non-explicit <code>atomic_fetch_key</code> functions require OpenCL C 2.0, or
-both the <code>__opencl_c_atomic_order_seq_cst</code> and
-<code>__opencl_c_atomic_scope_device</code> feature macros.
+The non-explicit <code>atomic_fetch_key</code> functions <a href="#unified-spec">require</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and both the
+<code>__opencl_c_atomic_order_seq_cst</code> and <code>__opencl_c_atomic_scope_device</code>
+features.
 For the explicit variants, memory order and scope enumerations must respect the
 <a href="#atomic-restrictions">restrictions section below</a>.
 </td>
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variants that use the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">require</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect5">
-<h6 id="atomic_flag"><strong>Atomic Flag Type and Operations</strong></h6>
+<h6 id="atomic_flag"><a class="anchor" href="#atomic_flag"></a>6.15.12.7.6. <strong>Atomic Flag Type and Operations</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -9709,7 +10207,7 @@
 </div>
 <div class="paragraph">
 <p>In OpenCL C 2.0 Operations on an object of type <code>atomic_flag</code> shall be
-lock-free, in OpenCL C 3.0 they may be lock-free.</p>
+lock-free, in OpenCL C 3.0 or newer they may be lock-free.</p>
 </div>
 <div class="paragraph">
 <p>The macro <code>ATOMIC_FLAG_INIT</code> may be used to initialize an <code>atomic_flag</code> to the
@@ -9733,20 +10231,52 @@
 </div>
 </div>
 <div class="sect5">
-<h6 id="atomic_flag_test_and_set"><strong>The atomic_flag_test_and_set Functions</strong></h6>
+<h6 id="atomic_flag_test_and_set"><a class="anchor" href="#atomic_flag_test_and_set"></a>6.15.12.7.7. <strong>The atomic_flag_test_and_set Functions</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 2.0, or both the __opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and __opencl_c_atomic_scope_device feature macros.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+<span class="predefined-type">bool</span> atomic_flag_test_and_set(
+    <span class="directive">volatile</span> __global atomic_flag *object)
+<span class="predefined-type">bool</span> atomic_flag_test_and_set(
+    <span class="directive">volatile</span> __local atomic_flag *object)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and all of the</span>
+<span class="comment">// __opencl_c_generic_address_space, __opencl_c_atomic_order_seq_cst and</span>
+<span class="comment">// __opencl_c_atomic_scope_device features.</span>
 <span class="predefined-type">bool</span> atomic_flag_test_and_set(
     <span class="directive">volatile</span> atomic_flag *object)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer and the __opencl_c_atomic_scope_device</span>
+<span class="comment">// feature.</span>
+<span class="predefined-type">bool</span> atomic_flag_test_and_set_explicit(
+    <span class="directive">volatile</span> __global atomic_flag *object,
+    memory_order order)
+<span class="predefined-type">bool</span> atomic_flag_test_and_set_explicit(
+    <span class="directive">volatile</span> __local atomic_flag *object,
+    memory_order order)
+
+<span class="comment">// Requires OpenCL C 2.0 or OpenCL C 3.0 or newer and both the</span>
+<span class="comment">// __opencl_c_generic_address_space and __opencl_c_atomic_scope_device</span>
+<span class="comment">// features.</span>
 <span class="predefined-type">bool</span> atomic_flag_test_and_set_explicit(
     <span class="directive">volatile</span> atomic_flag *object,
     memory_order order)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="predefined-type">bool</span> atomic_flag_test_and_set_explicit(
+    <span class="directive">volatile</span> __global atomic_flag *object,
+    memory_order order,
+    memory_scope scope)
+<span class="predefined-type">bool</span> atomic_flag_test_and_set_explicit(
+    <span class="directive">volatile</span> __local atomic_flag *object,
+    memory_order order,
+    memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 <span class="predefined-type">bool</span> atomic_flag_test_and_set_explicit(
     <span class="directive">volatile</span> atomic_flag *object,
     memory_order order,
@@ -9767,32 +10297,77 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The non-explicit <code>atomic_flag_test_and_set</code> function requires OpenCL C
-2.0, or both the <code>__opencl_c_atomic_order_seq_cst</code> and
-<code>__opencl_c_atomic_scope_device</code> feature macros.
+The non-explicit <code>atomic_flag_test_and_set</code> function <a href="#unified-spec">requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or newer and both the
+<code>__opencl_c_atomic_order_seq_cst</code> and <code>__opencl_c_atomic_scope_device</code>
+features.
 For the explicit variants, memory order and scope enumerations must respect the
 <a href="#atomic-restrictions">restrictions section below</a>.
 </td>
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variants that use the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">require</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect5">
-<h6 id="atomic_flag_clear"><strong>The atomic_flag_clear Functions</strong></h6>
+<h6 id="atomic_flag_clear"><a class="anchor" href="#atomic_flag_clear"></a>6.15.12.7.8. <strong>The atomic_flag_clear Functions</strong></h6>
 <div class="openblock">
 <div class="content">
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 2.0, or both the __opencl_c_atomic_order_seq_cst</span>
-<span class="comment">// and __opencl_c_atomic_scope_device feature macros.</span>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="comment">// Requires OpenCL C 3.0 or newer and both the __opencl_c_atomic_order_seq_cst</span>
+<span class="comment">// and __opencl_c_atomic_scope_device features.</span>
+<span class="directive">void</span> atomic_flag_clear(<span class="directive">volatile</span> __global atomic_flag *object)
+<span class="directive">void</span> atomic_flag_clear(<span class="directive">volatile</span> __local atomic_flag *object)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and all of the</span>
+<span class="comment">// __opencl_c_generic_address_space, __opencl_c_atomic_order_seq_cst and</span>
+<span class="comment">// __opencl_c_atomic_scope_device features.</span>
 <span class="directive">void</span> atomic_flag_clear(<span class="directive">volatile</span> atomic_flag *object)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer and the __opencl_c_atomic_scope_device</span>
+<span class="comment">// feature.</span>
+<span class="directive">void</span> atomic_flag_clear_explicit(
+    <span class="directive">volatile</span> __global atomic_flag *object,
+    memory_order order)
+<span class="directive">void</span> atomic_flag_clear_explicit(
+    <span class="directive">volatile</span> __local atomic_flag *object,
+    memory_order order)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and both the</span>
+<span class="comment">// __opencl_c_generic_address_space and __opencl_c_atomic_scope_device</span>
+<span class="comment">// features.</span>
 <span class="directive">void</span> atomic_flag_clear_explicit(
     <span class="directive">volatile</span> atomic_flag *object,
     memory_order order)
 
+<span class="comment">// Requires OpenCL C 3.0 or newer.</span>
+<span class="directive">void</span> atomic_flag_clear_explicit(
+    <span class="directive">volatile</span> __global atomic_flag *object,
+    memory_order order,
+    memory_scope scope)
+<span class="directive">void</span> atomic_flag_clear_explicit(
+    <span class="directive">volatile</span> __local atomic_flag *object,
+    memory_order order,
+    memory_scope scope)
+
+<span class="comment">// Requires OpenCL C 2.0, or OpenCL C 3.0 or newer and the</span>
+<span class="comment">// __opencl_c_generic_address_space feature.</span>
 <span class="directive">void</span> atomic_flag_clear_explicit(
     <span class="directive">volatile</span> atomic_flag *object,
     memory_order order,
@@ -9812,21 +10387,37 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The non-explicit <code>atomic_flag_clear</code> function requires OpenCL C 2.0, or
-both the <code>__opencl_c_atomic_order_seq_cst</code> and
-<code>__opencl_c_atomic_scope_device</code> feature macros.
+The non-explicit <code>atomic_flag_clear</code> function <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and both the
+<code>__opencl_c_atomic_order_seq_cst</code> and <code>__opencl_c_atomic_scope_device</code>
+features.
 For the explicit variants, memory order and scope enumerations must respect the
 <a href="#atomic-restrictions">restrictions section below</a>.
 </td>
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The function variants that use the generic address space, i.e. no
+explicit address space is listed, <a href="#unified-spec">require</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_generic_address_space</code>
+feature.
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 </div>
 </div>
 <div class="sect4">
-<h5 id="atomic-legacy">OpenCL C 1.x Legacy Atomics</h5>
+<h5 id="atomic-legacy"><a class="anchor" href="#atomic-legacy"></a>6.15.12.8. OpenCL C 1.x Legacy Atomics</h5>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -9834,23 +10425,40 @@
 <i class="fa icon-important" title="Important"></i>
 </td>
 <td class="content">
-The atomic functions described in this sub-section are deprecated by
-OpenCL C version 2.0.
+The atomic functions described in this sub-section <a href="#unified-spec">require</a> support for OpenCL C 1.1 or newer, and are <a href="#unified-spec">deprecated by</a> OpenCL C 2.0.  Also see extensions
+<code>cl_khr_global_int32_base_atomics</code>, <code>cl_khr_global_int32_extended_atomics</code>,
+<code>cl_khr_local_int32_base_atomics</code>, and <code>cl_khr_local_int32_extended_atomics</code>.
 </td>
 </tr>
 </table>
 </div>
 <div class="paragraph">
 <p>OpenCL C 1.x had support for relaxed atomic operations via built-in functions
-that could operate on any memory address in <code><em>global</code> or <code></em>local</code> spaces.
+that could operate on any memory address in <code>__global</code> or <code>__local</code> spaces.
 Unlike C11 style atomics these did not require using dedicated atomic types,
 and instead operated on 32-bit signed integers, 32-bit unsigned integers, and
 only in the case of <strong>atomic_xchg</strong> additionally single precision floating-point.
 These were equivalent to atomic operations with <code>memory_order_relaxed</code>
 consistency, and <code>memory_scope_work_group</code> scope.</p>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Some implementations may implement legacy atomics with a stricter memory
+consistency order than <code>memory_order_relaxed</code> or a broader scope than
+<code>memory_scope_work_group</code>.
+This is because all the stricter orders and broader scopes fully satisfy the
+semantics of the minimum requirements.
+</td>
+</tr>
+</table>
+</div>
 <table id="table-legacy-atomic-functions" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 21. Legacy Atomic Functions</caption>
+<caption class="title">Table 23. Legacy Atomic Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -9979,23 +10587,21 @@
       The function returns <em>old</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>atomic_or</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>atom_or</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>atomic_or</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br>
+  int <strong>atom_or</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br></p>
 <p class="tableblock">  unsigned int <strong>atomic_or</strong>(volatile __global unsigned int *<em>p</em>, unsigned int <em>val</em>)<br>
   unsigned int <strong>atom_or</strong>(volatile __global unsigned int *<em>p</em>, unsigned int <em>val</em>)<br></p>
 <p class="tableblock">  int <strong>atomic_or</strong>(volatile __local int *<em>p</em>, int <em>val</em>)<br>
   int <strong>atom_or</strong>(volatile __local int *<em>p</em>, int <em>val</em>)<br></p>
 <p class="tableblock">  unsigned int <strong>atomic_or</strong>(volatile __local unsigned int *<em>p</em>, unsigned int <em>val</em>)<br>
   unsigned int <strong>atom_or</strong>(volatile __local unsigned int *<em>p</em>, unsigned int <em>val</em>)<br></p></td>
-</tr>
-<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Read the 32-bit value (referred to as <em>old</em>) stored at location pointed by
       <em>p</em>. Compute (<em>old</em> | <em>val</em>) and store result at location pointed by
       <em>p</em>. The function returns <em>old</em>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>atomic_xor</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>atom_xor</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br></p>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>atomic_xor</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br>
+  int <strong>atom_xor</strong>(volatile __global int *<em>p</em>, int <em>val</em>)<br></p>
 <p class="tableblock">  unsigned int <strong>atomic_xor</strong>(volatile __global unsigned int *<em>p</em>, unsigned int <em>val</em>)<br>
   unsigned int <strong>atom_xor</strong>(volatile __global unsigned int *<em>p</em>, unsigned int <em>val</em>)<br></p>
 <p class="tableblock">  int <strong>atomic_xor</strong>(volatile __local int *<em>p</em>, int <em>val</em>)<br>
@@ -10010,7 +10616,7 @@
 </table>
 </div>
 <div class="sect4">
-<h5 id="atomic-restrictions">Restrictions</h5>
+<h5 id="atomic-restrictions"><a class="anchor" href="#atomic-restrictions"></a>6.15.12.9. Restrictions</h5>
 <div class="openblock">
 <div class="content">
 <div class="ulist">
@@ -10030,7 +10636,8 @@
 <li>
 <p>OpenCL C 2.0 requires that the built-in atomic functions on atomic types
 are lock-free.
-In OpenCL C 3.0 built-in atomic functions on atomic types may be lock-free.</p>
+In OpenCL C 3.0 or newer, built-in atomic functions on atomic types may be
+lock-free.</p>
 </li>
 <li>
 <p>The <code>_Atomic</code> type specifier and <code>_Atomic</code> type qualifier are not supported
@@ -10043,34 +10650,41 @@
 </li>
 <li>
 <p>Using <code>memory_order_acquire</code> with any built-in atomic function except
-<code>atomic_work_item_fence</code> requires OpenCL C 2.0 or the
-<code>__opencl_c_atomic_order_acq_rel</code> feature macro.</p>
+<code>atomic_work_item_fence</code> <a href="#unified-spec">requires</a> support for OpenCL C
+2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_atomic_order_acq_rel</code>
+feature.</p>
 </li>
 <li>
 <p>Using <code>memory_order_release</code> with any built-in atomic function except
-<code>atomic_work_item_fence</code> requires OpenCL C 2.0 or the
-<code>__opencl_c_atomic_order_acq_rel</code> feature macro.</p>
+<code>atomic_work_item_fence</code> <a href="#unified-spec">requires</a> support for OpenCL C
+2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_atomic_order_acq_rel</code>
+feature.</p>
 </li>
 <li>
 <p>Using <code>memory_order_acq_rel</code> with any built-in atomic function except
-<code>atomic_work_item_fence</code> requires OpenCL C 2.0 or the
-<code>__opencl_c_atomic_order_acq_rel</code> feature macro.</p>
+<code>atomic_work_item_fence</code> <a href="#unified-spec">requires</a> support for OpenCL C
+2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_atomic_order_acq_rel</code>
+feature.</p>
 </li>
 <li>
-<p>Using <code>memory_order_seq_cst</code> with any built-in atomic function requires
-OpenCL C 2.0 or the <code>__opencl_c_atomic_order_seq_cst</code> feature macro.</p>
+<p>Using <code>memory_order_seq_cst</code> with any built-in atomic function
+<a href="#unified-spec">requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+newer and the <code>__opencl_c_atomic_order_seq_cst</code> feature.</p>
 </li>
 <li>
-<p>Using <code>memory_scope_sub_group</code> with any built-in atomic function requires
-the <code>__opencl_c_subgroups</code> feature macro.</p>
+<p>Using <code>memory_scope_sub_group</code> with any built-in atomic function
+<a href="#unified-spec">requires</a> support for OpenCL C 3.0 or newer and the
+<code>__opencl_c_subgroups</code> feature.</p>
 </li>
 <li>
-<p>Using <code>memory_scope_device</code> requires OpenCL C 2.0 or the
-<code>__opencl_c_atomic_scope_device</code> feature macro.</p>
+<p>Using <code>memory_scope_device</code> <a href="#unified-spec">requires</a> support for OpenCL
+C 2.0, or OpenCL C 3.0 or newer and the
+<code>__opencl_c_atomic_scope_device</code> feature.</p>
 </li>
 <li>
-<p>Using <code>memory_scope_all_svm_devices</code> or <code>memory_scope_all_devices</code> requires
-OpenCL C 2.0 or the <code>__opencl_c_atomic_scope_all_devices</code> feature macro.</p>
+<p>Using <code>memory_scope_all_svm_devices</code> or <code>memory_scope_all_devices</code>
+<a href="#unified-spec">requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+newer and the <code>__opencl_c_atomic_scope_all_devices</code> feature.</p>
 </li>
 </ul>
 </div>
@@ -10079,28 +10693,24 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="miscellaneous-vector-functions">6.13.12. Miscellaneous Vector Functions</h4>
+<h4 id="miscellaneous-vector-functions"><a class="anchor" href="#miscellaneous-vector-functions"></a>6.15.13. Miscellaneous Vector Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>The OpenCL C programming language implements the following additional
 built-in vector functions.
-We use the generic type name <code>gentype<em>n</em></code> (or <code>gentype<em>m</em></code>) to indicate
-the built-in data types <code>char{2|4|8|16}</code>, <code>uchar{2|4|8|16}</code>,
-<code>short{2|4|8|16}</code>, <code>ushort{2|4|8|16}</code>, <code>half{2|4|8|16}</code><sup>49</sup>, <code>int{2|4|8|16}</code>,
-<code>uint{2|4|8|16}</code>, <code>long{2|4|8|16}</code>, <code>ulong{2|4|8|16}</code>, <code>float{2|4|8|16}</code>, or
-<code>double{2|4|8|16}</code><sup>50</sup> as the type for the arguments unless otherwise stated.
+We use the generic type name <code>gentype<em>n</em></code> (or <code>gentype<em>m</em></code>) to indicate the
+built-in data types <code>char{2|4|8|16}</code>, <code>uchar{2|4|8|16}</code>, <code>short{2|4|8|16}</code>,
+<code>ushort{2|4|8|16}</code>, <code>half{2|4|8|16}</code> <sup class="footnote">[<a id="_footnoteref_56" class="footnote" href="#_footnotedef_56" title="View footnote.">56</a>]</sup>,
+<code>int{2|4|8|16}</code>, <code>uint{2|4|8|16}</code>, <code>long{2|4|8|16}</code>
+<sup class="footnote">[<a id="_footnoteref_57" class="footnote" href="#_footnotedef_57" title="View footnote.">57</a>]</sup>, <code>ulong{2|4|8|16}</code>, <code>float{2|4|8|16}</code>, or
+<code>double{2|4|8|16}</code> <sup class="footnote">[<a id="_footnoteref_58" class="footnote" href="#_footnotedef_58" title="View footnote.">58</a>]</sup> as the type for
+the arguments unless otherwise stated.
 We use the generic name <code>ugentype<em>n</em></code> to indicate the built-in unsigned
 integer data types.</p>
 </div>
-<div class="paragraph">
-<p>[49] Only if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.</p>
-</div>
-<div class="paragraph">
-<p>[50] Only if double precision is supported.</p>
-</div>
 <table id="table-misc-vector" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 22. Built-in Miscellaneous Vector Functions</caption>
+<caption class="title">Table 24. Built-in Miscellaneous Vector Functions</caption>
 <colgroup>
 <col style="width: 33.3333%;">
 <col style="width: 66.6667%;">
@@ -10131,7 +10741,8 @@
 <p class="tableblock">      The <strong>vec_step</strong> built-in functions that take a 3-component vector
       return 4.</p>
 <p class="tableblock">      <strong>vec_step</strong> may also take a pure type as an argument, e.g.
-      <strong>vec_step</strong>(float2)</p></td>
+      <strong>vec_step</strong>(float2)</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype<em>n</em> <strong>shuffle</strong>(gentype<em>m</em> <em>x</em>,
@@ -10161,6 +10772,9 @@
 which element of the one or two input vectors the result element gets.</p>
 </div>
 <div class="paragraph">
+<p><a href="#unified-spec">Requires</a> support for OpenCL C 1.1 or newer.</p>
+</div>
+<div class="paragraph">
 <p>Examples:</p>
 </div>
 <div class="listingblock">
@@ -10199,14 +10813,26 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="printf">6.13.13. printf</h4>
+<h4 id="printf"><a class="anchor" href="#printf"></a>6.15.14. printf</h4>
 <div class="openblock">
 <div class="content">
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<strong>printf</strong> <a href="#unified-spec">requires</a> support for OpenCL C 1.2.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
 <p>The OpenCL C programming language implements the <strong>printf</strong> function.</p>
 </div>
 <table id="table-printf" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 23. Built-in printf Function</caption>
+<caption class="title">Table 25. Built-in printf Function</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -10235,7 +10861,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="printf-output-synchronization">printf output synchronization</h5>
+<h5 id="printf-output-synchronization"><a class="anchor" href="#printf-output-synchronization"></a>6.15.14.1. printf output synchronization</h5>
 <div class="paragraph">
 <p>When the event that is associated with a particular kernel invocation is
 completed, the output of all printf() calls executed by this kernel
@@ -10251,7 +10877,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="printf-format-string">printf format string</h5>
+<h5 id="printf-format-string"><a class="anchor" href="#printf-format-string"></a>6.15.14.2. printf format string</h5>
 <div class="paragraph">
 <p>The format shall be a character sequence, beginning and ending in its
 initial shift state.
@@ -10279,7 +10905,8 @@
 If the converted value has fewer characters than the field width, it is
 padded with spaces (by default) on the left (or right, if the left
 adjustment flag, described later, has been given) to the field width.
-The field width takes the form of a nonnegative decimal integer<sup>51</sup>.</p>
+The field width takes the form of a nonnegative decimal integer
+<sup class="footnote">[<a id="_footnoteref_59" class="footnote" href="#_footnotedef_59" title="View footnote.">59</a>]</sup>.</p>
 </li>
 <li>
 <p>An optional <em>precision</em> that gives the minimum number of digits to
@@ -10313,9 +10940,6 @@
 </ul>
 </div>
 <div class="paragraph">
-<p>[51] Note that <strong>0</strong> is taken as a flag, not as the beginning of a field width.</p>
-</div>
-<div class="paragraph">
 <p>The flag characters and their meanings are:</p>
 </div>
 <div class="paragraph">
@@ -10326,11 +10950,7 @@
 <p><strong>+</strong> The result of a signed conversion always begins with a plus or minus
 sign.
 (It begins with a sign only when a negative value is converted if this flag
-is not specified.)<sup>52</sup></p>
-</div>
-<div class="paragraph">
-<p>[52] The results of all floating conversions of a negative zero, and of
-negative values that round to zero, include a minus sign.</p>
+is not specified.) <sup class="footnote">[<a id="_footnoteref_60" class="footnote" href="#_footnotedef_60" title="View footnote.">60</a>]</sup></p>
 </div>
 <div class="paragraph">
 <p><em>space</em> If the first character of a signed conversion is not a sign, or if a
@@ -10374,13 +10994,12 @@
 <div class="paragraph">
 <p>The vector value is displayed in the following general form:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>value1 C value2 C &#8230;&#8203; C value<em>n</em></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>where C is a separator character.
@@ -10422,10 +11041,8 @@
 <p><strong>h</strong> Specifies that a following <strong>d</strong>, <strong>i</strong>, <strong>o</strong>, <strong>u</strong>, <strong>x</strong>, or <strong>X</strong> conversion
 specifier applies to a <code>short<em>n</em></code> or <code>ushort<em>n</em></code> argument (the argument
 will not be promoted); that a following <strong>a</strong>, <strong>A</strong>, <strong>e</strong>, <strong>E</strong>, <strong>f</strong>, <strong>F</strong>, <strong>g</strong>,
-or <strong>G</strong> conversion specifier applies to a <code>half<em>n</em></code><sup>53</sup> argument.</p>
-</div>
-<div class="paragraph">
-<p>[53] Only if the cl_khr_fp16 extension is supported and has been enabled.</p>
+or <strong>G</strong> conversion specifier applies to a <code>half<em>n</em></code>
+<sup class="footnote">[<a id="_footnoteref_61" class="footnote" href="#_footnotedef_61" title="View footnote.">61</a>]</sup> argument.</p>
 </div>
 <div class="paragraph">
 <p><strong>hl</strong> This modifier can only be used with the vector specifier.
@@ -10500,12 +11117,7 @@
 <em>[</em><strong>-</strong><em>]</em><strong>nan(</strong><em>n-char-sequence</em><strong>) </strong>&#8201;&#8212;&#8201;which style, and the meaning of any <em>n-char-sequence</em>, is
 implementation-defined.
 The <strong>F</strong> conversion specifier produces <code>INF</code>, <code>INFINITY</code>, or <code>NAN</code> instead of
-<strong>inf</strong>, <strong>infinity</strong>, or <strong>nan</strong>, respectively<sup>54</sup>.</p>
-</div>
-<div class="paragraph">
-<p>[54] When applied to infinite and NaN values, the <strong>-</strong>, <strong>+</strong>, and <em>space</em> flag
-characters have their usual meaning; the <strong>#</strong> and <strong>0</strong> flag characters have no
-effect.</p>
+<strong>inf</strong>, <strong>infinity</strong>, or <strong>nan</strong>, respectively <sup class="footnote">[<a id="_footnoteref_62" class="footnote" href="#_footnotedef_62" title="View footnote.">62</a>]</sup>.</p>
 </div>
 <div class="paragraph">
 <p><strong>e,E</strong> A <code>double</code>, <code>half<em>n</em></code>, <code>float<em>n</em></code> or <code>double<em>n</em></code> argument
@@ -10549,10 +11161,11 @@
 <em>[</em><strong>-</strong><em>]</em><strong>0x</strong><em>h</em><strong>.</strong><em>hhhh </em><strong>p±</strong><em>d</em>, where there is one
 hexadecimal digit (which is nonzero if the argument is a normalized
 floating-point number and is otherwise unspecified) before the decimal-point
-character<sup>55</sup> and the number of hexadecimal digits after it is equal to the
-precision; if the precision is missing, then the precision is sufficient for
-an exact representation of the value; if the precision is zero and the <strong>#</strong>
-flag is not specified, no decimal point character appears.
+character <sup class="footnote">[<a id="_footnoteref_63" class="footnote" href="#_footnotedef_63" title="View footnote.">63</a>]</sup> and the number of hexadecimal digits
+after it is equal to the precision; if the precision is missing, then the
+precision is sufficient for an exact representation of the value; if the
+precision is zero and the <strong>#</strong> flag is not specified, no decimal point character
+appears.
 The letters <strong>abcdef</strong> are used for <strong>a</strong> conversion and the letters <strong>ABCDEF</strong>
 for <strong>A</strong> conversion.
 The <strong>A</strong> conversion specifier produces a number with <strong>X</strong> and <strong>P</strong> instead of
@@ -10564,11 +11177,6 @@
 an infinity or NaN is converted in the style of an <strong>f</strong> or <strong>F</strong> conversion
 specifier.</p>
 </div>
-<div class="paragraph">
-<p>[55] Binary implementations can choose the hexadecimal digit to the left of
-the decimal-point character so that subsequent digits align to nibble
-(4-bit) boundaries.</p>
-</div>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -10579,7 +11187,8 @@
 <div class="paragraph">
 <p>The conversion specifiers <strong>e,E,g,G,a,A</strong> convert a <code>float</code> or <code>half</code> argument
 that is a scalar type to a <code>double</code> only if the <code>double</code> data type is
-supported.
+supported, e.g. for OpenCL C 3.0 or newer the <code>__opencl_c_fp64</code> feature
+macro is present.
 If the <code>double</code> data type is not supported, the argument will be a <code>float</code>
 instead of a <code>double</code> and the <code>half</code> type will be converted to a <code>float</code>.</p>
 </div>
@@ -10592,7 +11201,8 @@
 character is written.</p>
 </div>
 <div class="paragraph">
-<p><strong>s</strong> The argument shall be a literal string<sup>56</sup>.
+<p><strong>s</strong> The argument shall be a literal string
+<sup class="footnote">[<a id="_footnoteref_64" class="footnote" href="#_footnotedef_64" title="View footnote.">64</a>]</sup>.
 Characters from the literal string array are written up to (but not
 including) the terminating null character.
 If the precision is specified, no more than that many bytes are written.
@@ -10600,11 +11210,6 @@
 the array shall contain a null character.</p>
 </div>
 <div class="paragraph">
-<p>[56] No special provisions are made for multibyte characters.
-The behavior of <strong>printf</strong> with the <strong>s</strong> conversion specifier is undefined if
-the argument value is not a pointer to a literal string.</p>
-</div>
-<div class="paragraph">
 <p><strong>p</strong> The argument shall be a pointer to <strong>void</strong>.
 The pointer can refer to a memory region in the <code>global</code>, <code>constant</code>,
 <code>local</code>, <code>private</code>, or generic address space.
@@ -10697,7 +11302,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="differences-between-opencl-c-and-c99-printf">Differences between OpenCL C and C99 printf</h5>
+<h5 id="differences-between-opencl-c-and-c99-printf"><a class="anchor" href="#differences-between-opencl-c-and-c99-printf"></a>6.15.14.3. Differences between OpenCL C and C99 printf</h5>
 <div class="ulist">
 <ul>
 <li>
@@ -10743,7 +11348,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="image-read-and-write-functions">6.13.14. Image Read and Write Functions</h4>
+<h4 id="image-read-and-write-functions"><a class="anchor" href="#image-read-and-write-functions"></a>6.15.15. Image Read and Write Functions</h4>
 <div class="paragraph">
 <p>The built-in functions defined in this section can only be used with image
 memory objects.
@@ -10751,6 +11356,13 @@
 from and/or write to specific locations in the image.</p>
 </div>
 <div class="paragraph">
+<p>Support for the image built-in functions is optional.
+If a device supports images then the value of the <a href="#opencl-device-queries"><code>CL_DEVICE_IMAGE_SUPPORT</code> device query</a>) is <code>CL_TRUE</code> and the OpenCL C
+compiler for that device must define the <code>__IMAGE_SUPPORT__</code> macro.
+A compiler for OpenCL C 3.0 or newer for that device must also support the
+<code>__opencl_c_images</code> feature.</p>
+</div>
+<div class="paragraph">
 <p>Image memory objects that are being read by a kernel should be declared with
 the <code>read_only</code> qualifier.
 <strong>write_image</strong> calls to image memory objects declared with the read_only
@@ -10773,7 +11385,7 @@
 component.</p>
 </div>
 <div class="sect4">
-<h5 id="samplers">Samplers</h5>
+<h5 id="samplers"><a class="anchor" href="#samplers"></a>6.15.15.1. Samplers</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -10841,7 +11453,7 @@
 <p>The sampler fields are described in the following table.</p>
 </div>
 <table id="table-sampler-descriptor" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 24. Sampler Descriptor</caption>
+<caption class="title">Table 26. Sampler Descriptor</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -10880,8 +11492,8 @@
       generate image coordinates that are undefined.</p>
 <p class="tableblock">      <code>CLK_ADDRESS_CLAMP_TO_EDGE</code> - out-of-range image coordinates are
       clamped to the extent.</p>
-<p class="tableblock">      <code>CLK_ADDRESS_CLAMP</code><sup>57</sup> - out-of-range image coordinates will return a
-      border color.</p>
+<p class="tableblock">      <code>CLK_ADDRESS_CLAMP</code> - out-of-range image coordinates will return a
+      border color <sup class="footnote">[<a id="_footnoteref_65" class="footnote" href="#_footnotedef_65" title="View footnote.">65</a>]</sup>.</p>
 <p class="tableblock">      <code>CLK_ADDRESS_NONE</code> - for this addressing mode the programmer
       guarantees that the image coordinates used to sample elements of the
       image refer to a location inside the image; otherwise the results are
@@ -10902,9 +11514,6 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>[57] This is similar to the <code>GL_ADDRESS_CLAMP_TO_BORDER</code> addressing mode.</p>
-</div>
-<div class="paragraph">
 <p><strong>Examples</strong>:</p>
 </div>
 <div class="listingblock">
@@ -10925,7 +11534,7 @@
 </div>
 </div>
 <div class="sect5">
-<h6 id="determining-the-border-color-or-value"><strong>Determining the border color or value</strong></h6>
+<h6 id="determining-the-border-color-or-value"><a class="anchor" href="#determining-the-border-color-or-value"></a>6.15.15.1.1. <strong>Determining the border color or value</strong></h6>
 <div class="paragraph">
 <p>If <code>&lt;addressing mode&gt;</code> in sampler is <code>CLK_ADDRESS_CLAMP</code>, then out-of-range
 image coordinates return the border color.
@@ -10951,7 +11560,7 @@
 </div>
 </div>
 <div class="sect5">
-<h6 id="srgb-images"><strong>sRGB Images</strong></h6>
+<h6 id="srgb-images"><a class="anchor" href="#srgb-images"></a>6.15.15.1.2. <strong>sRGB Images</strong></h6>
 <div class="paragraph">
 <p>The built-in image read functions will perform sRGB to linear RGB
 conversions if the image is an sRGB image.
@@ -10966,19 +11575,15 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-image-read-functions">Built-in Image Read Functions</h5>
+<h5 id="built-in-image-read-functions"><a class="anchor" href="#built-in-image-read-functions"></a>6.15.15.2. Built-in Image Read Functions</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
-<p>The following built-in function calls to read images with a sampler<sup>58</sup> are
-supported.</p>
-</div>
-<div class="paragraph">
-<p>[58] The built-in function calls to read images with a sampler are not
-supported for <code>image1d_buffer_t</code> image types.</p>
+<p>The following built-in function calls to read images with a sampler are
+supported <sup class="footnote">[<a id="_footnoteref_66" class="footnote" href="#_footnotedef_66" title="View footnote.">66</a>]</sup>.</p>
 </div>
 <table id="table-image-read" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 25. Built-in Image Read Functions</caption>
+<caption class="title">Table 27. Built-in Image Read Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -11219,7 +11824,8 @@
       <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p>
 <p class="tableblock">      Values returned by <strong>read_imagef</strong> for image objects with
       <em>image_channel_data_type</em> values not specified in the description
-      above are undefined.</p></td>
+      above are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11260,7 +11866,8 @@
       coordinates must use a sampler with normalized coordinates set to
       <code>CLK_NORMALIZED_COORDS_FALSE</code> and addressing mode set to
       <code>CLK_ADDRESS_CLAMP_TO_EDGE</code>, <code>CLK_ADDRESS_CLAMP</code> or
-      <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p></td>
+      <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11289,7 +11896,8 @@
       <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p>
 <p class="tableblock">      Values returned by <strong>read_imagef</strong> for image objects with
       image_channel_data_type values not specified in the description above
-      are undefined.</p></td>
+      are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">int4 <strong>read_imagei</strong>(read_only image1d_array_t <em>image</em>, sampler_t <em>sampler</em>,
@@ -11326,7 +11934,8 @@
       coordinates must use a sampler with normalized coordinates set to
       <code>CLK_NORMALIZED_COORDS_FALSE</code> and addressing mode set to
       <code>CLK_ADDRESS_CLAMP_TO_EDGE</code>, <code>CLK_ADDRESS_CLAMP</code> or
-      <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p></td>
+      <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11351,7 +11960,9 @@
       <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p>
 <p class="tableblock">      Values returned by <strong>read_imagef</strong> for depth image objects with
       <em>image_channel_data_type</em> values not specified in the description
-      above are undefined.</p></td>
+      above are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11376,7 +11987,9 @@
       <code>CLK_ADDRESS_NONE</code>; otherwise the values returned are undefined.</p>
 <p class="tableblock">      Values returned by <strong>read_imagef</strong> for image objects with
       <em>image_channel_data_type</em> values not specified in the description
-      above are undefined.</p></td>
+      above are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11388,9 +12001,24 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-image-sampler-less-read-functions">Built-in Image Sampler-less Read Functions</h5>
+<h5 id="built-in-image-sampler-less-read-functions"><a class="anchor" href="#built-in-image-sampler-less-read-functions"></a>6.15.15.3. Built-in Image Sampler-less Read Functions</h5>
 <div class="openblock">
 <div class="content">
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Sampler-less image read functions <a href="#unified-spec">require</a> support for
+OpenCL C 1.2 or newer, with some functions requiring support for newer
+versions of OpenCL C as noted in the <a href="#table-image-samplerless-read">table
+below</a>.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
 <p>The sampler-less image read functions behave exactly as the corresponding
 <a href="#built-in-image-read-functions">built-in image read functions</a> that take
@@ -11409,7 +12037,7 @@
 For samplerless read functions this may be <code>read_only</code> or <code>read_write</code>.</p>
 </div>
 <table id="table-image-samplerless-read" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 26. Built-in Image Sampler-less Read Functions</caption>
+<caption class="title">Table 28. Built-in Image Sampler-less Read Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -11675,7 +12303,9 @@
       created with <em>image_channel_data_type</em> set to <code>CL_FLOAT</code>.</p>
 <p class="tableblock">      Values returned by <strong>read_imagef</strong> for image objects with
       <em>image_channel_data_type</em> values not specified in the description
-      above are undefined.</p></td>
+      above are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11692,7 +12322,9 @@
       created with <em>image_channel_data_type</em> set to <code>CL_FLOAT</code>.</p>
 <p class="tableblock">      Values returned by <strong>read_imagef</strong> for image objects with
       <em>image_channel_data_type</em> values not specified in the description
-      above are undefined.</p></td>
+      above are undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11704,7 +12336,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-image-write-functions">Built-in Image Write Functions</h5>
+<h5 id="built-in-image-write-functions"><a class="anchor" href="#built-in-image-write-functions"></a>6.15.15.4. Built-in Image Write Functions</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -11715,7 +12347,7 @@
 For write functions this may be <code>write_only</code> or <code>read_write</code>.</p>
 </div>
 <table id="table-image-write" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 27. Built-in Image Write Functions</caption>
+<caption class="title">Table 29. Built-in Image Write Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -11845,7 +12477,8 @@
 <p class="tableblock">      The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
       image objects created with <em>image_channel_data_type</em> values not
       specified in the description above, or with a coordinate value that is
-      not in the range [0, image width-1], is undefined.</p></td>
+      not in the range [0, image width-1], is undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11886,7 +12519,8 @@
       image objects created with <em>image_channel_data_type</em> values not
       specified in the description above or with (<em>x</em>, <em>y</em>) coordinate
       values that are not in the range [0, image width-1] and [0, image
-      number of layers-1], respectively, is undefined.</p></td>
+      number of layers-1], respectively, is undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or newer.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11912,7 +12546,9 @@
       image objects created with <em>image_channel_data_type</em> values not
       specified in the description above or with (<em>x</em>, <em>y</em>) coordinate
       values that are not in the range [0, image width-1] and [0, image
-      height-1], respectively, is undefined.</p></td>
+      height-1], respectively, is undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11939,7 +12575,9 @@
       image objects created with <em>image_channel_data_type</em> values not
       specified in the description above or with (<em>x</em>, <em>y</em>, <em>z</em>) coordinate
       values that are not in the range [0, image width-1], [0, image
-      height-1], [0, image number of layers-1], respectively, is undefined.</p></td>
+      height-1], [0, image number of layers-1], respectively, is undefined.</p>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+      <code>cl_khr_depth_images</code> extension.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
@@ -11981,8 +12619,9 @@
       the description above or with (<em>x</em>, <em>y</em>, <em>z</em>) coordinate values that
       are not in the range [0, image width-1], [0, image height-1], and [0,
       image depth-1], respectively, is undefined.</p>
-<p class="tableblock">      Requires support for OpenCL C 2.0, the <code>__opencl_c_3d_image_writes</code>
-      feature macro, or the <code>cl_khr_3d_image_writes</code> extension.</p></td>
+<p class="tableblock">      <a href="#unified-spec">Requires</a> support for OpenCL C 2.0, or OpenCL C 3.0 or
+      newer and the <code>__opencl_c_3d_image_writes</code> feature, or the
+      <code>cl_khr_3d_image_writes</code> extension.</p></td>
 </tr>
 </tbody>
 </table>
@@ -11990,7 +12629,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-image-query-functions">Built-in Image Query Functions</h5>
+<h5 id="built-in-image-query-functions"><a class="anchor" href="#built-in-image-query-functions"></a>6.15.15.5. Built-in Image Query Functions</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -12002,7 +12641,7 @@
 For query functions this may be <code>read_only</code>, <code>write_only</code> or <code>read_write</code>.</p>
 </div>
 <table id="table-image-query" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 28. Built-in Image Query Functions</caption>
+<caption class="title">Table 30. Built-in Image Query Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -12013,21 +12652,25 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>get_image_width</strong>(<em>aQual</em> image1d_t <em>image</em>)<br>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>get_image_width</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
+  int <strong>get_image_width</strong>(<em>aQual</em> image3d_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 1.2 or newer:<br></p>
+<p class="tableblock">  int <strong>get_image_width</strong>(<em>aQual</em> image1d_t <em>image</em>)<br>
   int <strong>get_image_width</strong>(<em>aQual</em> image1d_buffer_t <em>image</em>)<br>
-  int <strong>get_image_width</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
-  int <strong>get_image_width</strong>(<em>aQual</em> image3d_t <em>image</em>)<br>
   int <strong>get_image_width</strong>(<em>aQual</em> image1d_array_t <em>image</em>)<br>
-  int <strong>get_image_width</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br>
-  int <strong>get_image_width</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
+  int <strong>get_image_width</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 2.0 or newer, also see <code>cl_khr_depth_images</code> extension:<br></p>
+<p class="tableblock">  int <strong>get_image_width</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
   int <strong>get_image_width</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the image width in pixels.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>get_image_height</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
-  int <strong>get_image_height</strong>(<em>aQual</em> image3d_t <em>image</em>)<br>
-  int <strong>get_image_height</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br>
-  int <strong>get_image_height</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
+  int <strong>get_image_height</strong>(<em>aQual</em> image3d_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 1.2 or newer:<br></p>
+<p class="tableblock">  int <strong>get_image_height</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 2.0 or newer, also see <code>cl_khr_depth_images</code> extension:<br></p>
+<p class="tableblock">  int <strong>get_image_height</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
   int <strong>get_image_height</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the image height in pixels.</p></td>
 </tr>
@@ -12040,13 +12683,17 @@
 <td class="tableblock halign-left valign-top"></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image1d_t <em>image</em>)<br>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
+  int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image3d_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 1.2 or newer:<br></p>
+<p class="tableblock">  int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image1d_t <em>image</em>)<br>
   int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image1d_buffer_t <em>image</em>)<br>
   int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
   int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image3d_t <em>image</em>)<br>
   int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image1d_array_t <em>image</em>)<br>
-  int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br>
-  int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
+  int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 2.0 or newer, also see <code>cl_khr_depth_images</code> extension:<br></p>
+<p class="tableblock">  int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
   int <strong>get_image_channel_data_type</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the channel data type. Valid values are:</p>
 <p class="tableblock">      <code>CLK_SNORM_INT8</code><br>
@@ -12055,7 +12702,7 @@
       <code>CLK_UNORM_INT16</code><br>
       <code>CLK_UNORM_SHORT_565</code><br>
       <code>CLK_UNORM_SHORT_555</code><br>
-      <code>CLK_UNORM_SHORT_101010</code><br>
+      <code>CLK_UNORM_INT_101010</code><br>
       <code>CLK_SIGNED_INT8</code><br>
       <code>CLK_SIGNED_INT16</code><br>
       <code>CLK_SIGNED_INT32</code><br>
@@ -12063,32 +12710,38 @@
       <code>CLK_UNSIGNED_INT16</code><br>
       <code>CLK_UNSIGNED_INT32</code><br>
       <code>CLK_HALF_FLOAT</code><br>
-      <code>CLK_FLOAT</code></p></td>
+      <code>CLK_FLOAT</code><br></p>
+<p class="tableblock">      Additionally, for OpenCL C 3.0 or newer:<br></p>
+<p class="tableblock">      <code>CLK_UNORM_INT_101010_2</code> <sup class="footnote">[<a id="_footnoteref_67" class="footnote" href="#_footnotedef_67" title="View footnote.">67</a>]</sup></p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>get_image_channel_order</strong>(<em>aQual</em> image1d_t <em>image</em>)<br>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>get_image_channel_order</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
+  int <strong>get_image_channel_order</strong>(<em>aQual</em> image3d_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 1.2 or newer:<br></p>
+<p class="tableblock">  int <strong>get_image_channel_order</strong>(<em>aQual</em> image1d_t <em>image</em>)<br>
   int <strong>get_image_channel_order</strong>(<em>aQual</em> image1d_buffer_t <em>image</em>)<br>
-  int <strong>get_image_channel_order</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
-  int <strong>get_image_channel_order</strong>(<em>aQual</em> image3d_t <em>image</em>)<br>
   int <strong>get_image_channel_order</strong>(<em>aQual</em> image1d_array_t <em>image</em>)<br>
-  int <strong>get_image_channel_order</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br>
-  int <strong>get_image_channel_order</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
+  int <strong>get_image_channel_order</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 2.0 or newer, also see <code>cl_khr_depth_images</code> extension:<br></p>
+<p class="tableblock">  int <strong>get_image_channel_order</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
   int <strong>get_image_channel_order</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the image channel order. Valid values are:</p>
 <p class="tableblock">      <code>CLK_A</code><br>
       <code>CLK_R</code><br>
-      <code>CLK_Rx</code><br>
       <code>CLK_RG</code><br>
-      <code>CLK_RGx</code><br>
       <code>CLK_RA</code><br>
       <code>CLK_RGB</code><br>
-      <code>CLK_RGBx</code><br>
       <code>CLK_RGBA</code><br>
       <code>CLK_ARGB</code><br>
       <code>CLK_BGRA</code><br>
       <code>CLK_INTENSITY</code><br>
-      <code>CLK_LUMINANCE</code><br>
-      <code>CLK_ABGR</code><br>
+      <code>CLK_LUMINANCE</code><br></p>
+<p class="tableblock">      Additionally, for OpenCL C 1.1 or newer:<br></p>
+<p class="tableblock">      <code>CLK_Rx</code><br>
+      <code>CLK_RGx</code><br>
+      <code>CLK_RGBx</code><br></p>
+<p class="tableblock">      Additionally, for OpenCL C 2.0 or newer:<br></p>
+<p class="tableblock">      <code>CLK_ABGR</code><br>
       <code>CLK_DEPTH</code><br>
       <code>CLK_sRGB</code><br>
       <code>CLK_sRGBx</code><br>
@@ -12100,9 +12753,11 @@
 <td class="tableblock halign-left valign-top"></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">int2 <strong>get_image_dim</strong>(<em>aQual</em> image2d_t <em>image</em>)<br>
-  int2 <strong>get_image_dim</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br>
-  int2 <strong>get_image_dim</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int2 <strong>get_image_dim</strong>(<em>aQual</em> image2d_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 1.2 or newer:<br></p>
+<p class="tableblock">  int2 <strong>get_image_dim</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 2.0 or newer, also see <code>cl_khr_depth_images</code> extension:<br></p>
+<p class="tableblock">  int2 <strong>get_image_dim</strong>(<em>aQual</em> image2d_depth_t <em>image</em>)<br>
   int2 <strong>get_image_dim</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the 2D image width and height as an int2 type.
       The width is returned in the <em>x</em> component, and the height in the <em>y</em>
@@ -12119,12 +12774,15 @@
 <td class="tableblock halign-left valign-top"></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_image_array_size</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br>
-  size_t <strong>get_image_array_size</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">For OpenCL C 1.2 or newer:<br></p>
+<p class="tableblock">  size_t <strong>get_image_array_size</strong>(<em>aQual</em> image2d_array_t <em>image</em>)<br></p>
+<p class="tableblock">  For OpenCL C 2.0 or newer, also see <code>cl_khr_depth_images</code> extension:<br></p>
+<p class="tableblock">  size_t <strong>get_image_array_size</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the number of images in the 2D image array.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_image_array_size</strong>(<em>aQual</em> image1d_array_t <em>image</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">For OpenCL C 1.2 or newer:<br></p>
+<p class="tableblock">  size_t <strong>get_image_array_size</strong>(<em>aQual</em> image1d_array_t <em>image</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return the number of images in the 1D image array.</p></td>
 </tr>
 </tbody>
@@ -12143,7 +12801,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="reading-and-writing-to-the-same-image-in-a-kernel">Reading and writing to the same image in a kernel</h5>
+<h5 id="reading-and-writing-to-the-same-image-in-a-kernel"><a class="anchor" href="#reading-and-writing-to-the-same-image-in-a-kernel"></a>6.15.15.6. Reading and writing to the same image in a kernel</h5>
 <div class="paragraph">
 <p>The <strong>atomic_work_item_fence</strong>(<code>CLK_IMAGE_MEM_FENCE</code>) built-in function can be
 used to make sure that sampler-less writes are visible to later reads by the
@@ -12185,7 +12843,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="mapping-image-channels-to-color-values-returned-by-read_image-and-color-values-passed-to-write_image-to-image-channels">Mapping image channels to color values returned by read_image and color values passed to write_image to image channels</h5>
+<h5 id="mapping-image-channels-to-color-values-returned-by-read_image-and-color-values-passed-to-write_image-to-image-channels"><a class="anchor" href="#mapping-image-channels-to-color-values-returned-by-read_image-and-color-values-passed-to-write_image-to-image-channels"></a>6.15.15.7. Mapping image channels to color values returned by read_image and color values passed to write_image to image channels</h5>
 <div class="paragraph">
 <p>The following table describes the mapping of the number of channels of an
 image element to the appropriate components in the <code>float4</code>, <code>int4</code> or
@@ -12240,7 +12898,9 @@
 </table>
 <div class="paragraph">
 <p>For <code>CL_DEPTH</code> images, a scalar value is returned by <strong>read_imagef</strong> or
-supplied to <strong>write_imagef</strong>.</p>
+supplied to <strong>write_imagef</strong>.
+<a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer, also see
+<code>cl_khr_depth_images</code> extension.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -12270,7 +12930,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="work-group-functions">6.13.15. Work-group Collective Functions</h4>
+<h4 id="work-group-functions"><a class="anchor" href="#work-group-functions"></a>6.15.16. Work-group Collective Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="admonitionblock note">
@@ -12280,8 +12940,9 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in this section requires support for
-OpenCL C 2.0 or the <code>__opencl_c_work_group_collective_functions</code> feature macro.
+The functionality described in this section <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and the
+<code>__opencl_c_work_group_collective_functions</code> feature.
 </td>
 </tr>
 </table>
@@ -12292,17 +12953,12 @@
 These built-in functions must be encountered by all work-items in a
 work-group executing the kernel.
 We use the generic type name <code>gentype</code> to indicate the built-in data types
-<code>half</code><sup>59</sup>, <code>int</code>, <code>uint</code>, <code>long</code>, <code>ulong</code>, <code>float</code> or <code>double</code><sup>60</sup> as the
-type for the arguments.</p>
-</div>
-<div class="paragraph">
-<p>[59] Only if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.</p>
-</div>
-<div class="paragraph">
-<p>[60] Only if double precision is supported.</p>
+<code>half</code> <sup class="footnote">[<a id="_footnoteref_68" class="footnote" href="#_footnotedef_68" title="View footnote.">68</a>]</sup>, <code>int</code>, <code>uint</code>, <code>long</code>
+<sup class="footnote">[<a id="_footnoteref_69" class="footnote" href="#_footnotedef_69" title="View footnote.">69</a>]</sup>, <code>ulong</code>, <code>float</code> or <code>double</code>
+<sup class="footnote">[<a id="_footnoteref_70" class="footnote" href="#_footnotedef_70" title="View footnote.">70</a>]</sup> as the type for the arguments.</p>
 </div>
 <table id="table-builtin-work-group" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 29. Built-in Work-group Collective Functions</caption>
+<caption class="title">Table 31. Built-in Work-group Collective Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -12427,7 +13083,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="pipe-functions">6.13.16. Pipe Functions</h4>
+<h4 id="pipe-functions"><a class="anchor" href="#pipe-functions"></a>6.15.17. Pipe Functions</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -12435,8 +13091,8 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in this section requires support for
-OpenCL C 2.0 or the <code>__opencl_c_pipes</code> feature macro.
+The functionality described in this section <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and the <code>__opencl_c_pipes</code> feature.
 </td>
 </tr>
 </table>
@@ -12493,7 +13149,7 @@
 <p>The macro <code>CLK_NULL_RESERVE_ID</code> refers to an invalid reservation ID.</p>
 </div>
 <div class="sect4">
-<h5 id="restrictions-3">Restrictions</h5>
+<h5 id="restrictions-3"><a class="anchor" href="#restrictions-3"></a>6.15.17.1. Restrictions</h5>
 <div class="ulist">
 <ul>
 <li>
@@ -12511,25 +13167,20 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-pipe-read-and-write-functions">Built-in Pipe Read and Write Functions</h5>
+<h5 id="built-in-pipe-read-and-write-functions"><a class="anchor" href="#built-in-pipe-read-and-write-functions"></a>6.15.17.2. Built-in Pipe Read and Write Functions</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>The OpenCL C programming language implements the following built-in
 functions that read from or write to a pipe.
-We use the generic type name <code>gentype</code> to indicate the built-in OpenCL C
-scalar or vector integer or floating-point data types<sup>61</sup> or any user defined
-type built from these scalar and vector data types can be used as the type
-for the arguments to the pipe functions listed in the following table.</p>
-</div>
-<div class="paragraph">
-<p>[61] The <code>half</code> scalar and vector types can only be used if the <strong>cl_khr_fp16</strong>
-extension is supported and has been enabled.
-The <code>double</code> scalar and vector types can only be used if <code>double</code> precision
-is supported.</p>
+We use the generic type name <code>gentype</code> to indicate the built-in OpenCL C scalar
+or vector integer or floating-point data types
+<sup class="footnote">[<a id="_footnoteref_71" class="footnote" href="#_footnotedef_71" title="View footnote.">71</a>]</sup> or any user defined type built from these
+scalar and vector data types can be used as the type for the arguments to the
+pipe functions listed in the following table.</p>
 </div>
 <table id="table-builtin-pipe" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 30. Built-in Pipe Functions</caption>
+<caption class="title">Table 32. Built-in Pipe Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -12605,7 +13256,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-work-group-pipe-read-and-write-functions">Built-in Work-group Pipe Read and Write Functions</h5>
+<h5 id="built-in-work-group-pipe-read-and-write-functions"><a class="anchor" href="#built-in-work-group-pipe-read-and-write-functions"></a>6.15.17.3. Built-in Work-group Pipe Read and Write Functions</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -12614,19 +13265,14 @@
 These built-in functions must be encountered by all work-items in a
 work-group executing the kernel with the same argument values; otherwise the
 behavior is undefined.
-We use the generic type name <code>gentype</code> to indicate the built-in OpenCL C
-scalar or vector integer or floating-point data types<sup>62</sup> or any user defined
-type built from these scalar and vector data types can be used as the type
-for the arguments to the pipe functions listed in the following table.</p>
-</div>
-<div class="paragraph">
-<p>[62] The <code>half</code> scalar and vector types can only be used if the <strong>cl_khr_fp16</strong>
-extension is supported and has been enabled.
-The <code>double</code> scalar and vector types can only be used if <code>double</code> precision
-is supported.</p>
+We use the generic type name <code>gentype</code> to indicate the built-in OpenCL C scalar
+or vector integer or floating-point data types
+<sup class="footnote">[<a id="_footnoteref_72" class="footnote" href="#_footnotedef_72" title="View footnote.">72</a>]</sup> or any user defined type built from these
+scalar and vector data types can be used as the type for the arguments to the
+pipe functions listed in the following table.</p>
 </div>
 <table id="table-builtin-pipe-work-group" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 31. Built-in Pipe Work-group Functions</caption>
+<caption class="title">Table 33. Built-in Pipe Work-group Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -12704,29 +13350,24 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-pipe-query-functions">Built-in Pipe Query Functions</h5>
+<h5 id="built-in-pipe-query-functions"><a class="anchor" href="#built-in-pipe-query-functions"></a>6.15.17.4. Built-in Pipe Query Functions</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
 <p>The OpenCL C programming language implements the following built-in query
 functions for a pipe.
-We use the generic type name <code>gentype</code> to indicate the built-in OpenCL C
-scalar or vector integer or floating-point data types<sup>63</sup> or any user defined
-type built from these scalar and vector data types can be used as the type
-for the arguments to the pipe functions listed in the following table.</p>
-</div>
-<div class="paragraph">
-<p>[63] The <code>half</code> scalar and vector types can only be used if the <strong>cl_khr_fp16</strong>
-extension is supported and has been enabled.
-The <code>double</code> scalar and vector types can only be used if <code>double</code> precision
-is supported.</p>
+We use the generic type name <code>gentype</code> to indicate the built-in OpenCL C scalar
+or vector integer or floating-point data types
+<sup class="footnote">[<a id="_footnoteref_73" class="footnote" href="#_footnotedef_73" title="View footnote.">73</a>]</sup> or any user defined type built from these
+scalar and vector data types can be used as the type for the arguments to the
+pipe functions listed in the following table.</p>
 </div>
 <div class="paragraph">
 <p><em>aQual</em> in the following table refers to one of the access qualifiers.
 For pipe query functions this may be <code>read_only</code> or <code>write_only</code>.</p>
 </div>
 <table id="table-builtin-pipe-query" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 32. Built-in Pipe Query Functions</caption>
+<caption class="title">Table 34. Built-in Pipe Query Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -12753,7 +13394,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="restrictions-4">Restrictions</h5>
+<h5 id="restrictions-4"><a class="anchor" href="#restrictions-4"></a>6.15.17.5. Restrictions</h5>
 <div class="paragraph">
 <p>The following behavior is undefined</p>
 </div>
@@ -12803,7 +13444,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="enqueuing-kernels">6.13.17. Enqueuing Kernels</h4>
+<h4 id="enqueuing-kernels"><a class="anchor" href="#enqueuing-kernels"></a>6.15.18. Enqueuing Kernels</h4>
 <div class="openblock">
 <div class="content">
 <div class="admonitionblock note">
@@ -12813,8 +13454,9 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in this section requires support for
-OpenCL C 2.0 or the <code>__opencl_c_device_enqueue</code> feature macro.
+The functionality described in this section <a href="#unified-spec">requires</a>
+support for OpenCL C 2.0, or OpenCL C 3.0 or newer and the
+<code>__opencl_c_device_enqueue</code> feature.
 </td>
 </tr>
 </table>
@@ -12839,9 +13481,9 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-functions-enqueuing-a-kernel">Built-in Functions - Enqueuing a kernel</h5>
+<h5 id="built-in-functions-enqueuing-a-kernel"><a class="anchor" href="#built-in-functions-enqueuing-a-kernel"></a>6.15.18.1. Built-in Functions - Enqueuing a kernel</h5>
 <table id="table-builtin-kernel-enqueue" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 33. Built-in Kernel Enqueue Functions</caption>
+<caption class="title">Table 35. Built-in Kernel Enqueue Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13038,7 +13680,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="arguments-that-are-a-pointer-type-to-local-address-space">Arguments that are a pointer type to local address space</h5>
+<h5 id="arguments-that-are-a-pointer-type-to-local-address-space"><a class="anchor" href="#arguments-that-are-a-pointer-type-to-local-address-space"></a>6.15.18.2. Arguments that are a pointer type to local address space</h5>
 <div class="paragraph">
 <p>A block passed to enqueue_kernel can have arguments declared to be a pointer
 to <code>local</code> memory.
@@ -13112,7 +13754,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="a-complete-example">A Complete Example</h5>
+<h5 id="a-complete-example"><a class="anchor" href="#a-complete-example"></a>6.15.18.3. A Complete Example</h5>
 <div class="paragraph">
 <p>The example below shows how to implement an iterative algorithm where the
 host enqueues the first instance of the nd-range kernel (dp_func_A).
@@ -13174,19 +13816,15 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="determining-when-a-child-kernel-begins-execution">Determining when a child kernel begins execution</h5>
+<h5 id="determining-when-a-child-kernel-begins-execution"><a class="anchor" href="#determining-when-a-child-kernel-begins-execution"></a>6.15.18.4. Determining when a child kernel begins execution</h5>
 <div class="paragraph">
-<p>The <code>kernel_enqueue_flags_t</code><sup>64</sup> argument to enqueue_kernel built-in
-functions can be used to specify when the child kernel begins execution.
+<p>The <code>kernel_enqueue_flags_t</code> <sup class="footnote">[<a id="_footnoteref_74" class="footnote" href="#_footnotedef_74" title="View footnote.">74</a>]</sup> argument
+to the <code>enqueue_kernel</code> built-in functions can be used to specify when the child
+kernel begins execution.
 Supported values are described in the table below:</p>
 </div>
-<div class="paragraph">
-<p>[64] Implementations are not required to honor this flag.
-Implementations may not schedule kernel launch earlier than the point
-specified by this flag, however.</p>
-</div>
 <table id="table-kernel-enqueue-flags" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 34. Kernel Enqueue Flags</caption>
+<caption class="title">Table 36. Kernel Enqueue Flags</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13204,25 +13842,17 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CLK_ENQUEUE_FLAGS_WAIT_KERNEL</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that all work-items of the parent kernel must finish
-      executing and all immediate<sup>65</sup> side effects committed before the
-      enqueued child kernel may begin execution.</p></td>
+      executing and all immediate <sup class="footnote">[<a id="_footnoteref_75" class="footnote" href="#_footnotedef_75" title="View footnote.">75</a>]</sup> side
+      effects committed before the enqueued child kernel may begin execution.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CLK_ENQUEUE_FLAGS_WAIT_WORK_GROUP</code><sup>66</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CLK_ENQUEUE_FLAGS_WAIT_WORK_GROUP</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that the enqueued kernels wait only for the workgroup that
-      enqueued the kernels to finish before they begin execution.</p></td>
+      enqueued the kernels to finish before they begin execution.
+      <sup class="footnote">[<a id="_footnoteref_76" class="footnote" href="#_footnotedef_76" title="View footnote.">76</a>]</sup></p></td>
 </tr>
 </tbody>
 </table>
-<div class="paragraph">
-<p>[65] Immediate meaning not side effects resulting from child kernels.
-The side effects would include stores to <code>global</code> memory and pipe reads and
-writes.</p>
-</div>
-<div class="paragraph">
-<p>[66] This acts as a memory synchronization point between work-items in a
-work-group and child kernels enqueued by work-items in the work-group.</p>
-</div>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -13243,7 +13873,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="determining-when-a-parent-kernel-has-finished-execution">Determining when a parent kernel has finished execution</h5>
+<h5 id="determining-when-a-parent-kernel-has-finished-execution"><a class="anchor" href="#determining-when-a-parent-kernel-has-finished-execution"></a>6.15.18.5. Determining when a parent kernel has finished execution</h5>
 <div class="paragraph">
 <p>A parent kernel&#8217;s execution status is considered to be complete when it and
 all its child kernels have finished execution.
@@ -13269,11 +13899,11 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-functions-kernel-query-functions">Built-in Functions - Kernel Query Functions</h5>
+<h5 id="built-in-functions-kernel-query-functions"><a class="anchor" href="#built-in-functions-kernel-query-functions"></a>6.15.18.6. Built-in Functions - Kernel Query Functions</h5>
 <div class="openblock">
 <div class="content">
 <table id="table-builtin-kernel-query" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 35. Built-in Kernel Query Functions</caption>
+<caption class="title">Table 37. Built-in Kernel Query Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13308,7 +13938,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-functions-queuing-other-commands">Built-in Functions - Queuing other commands</h5>
+<h5 id="built-in-functions-queuing-other-commands"><a class="anchor" href="#built-in-functions-queuing-other-commands"></a>6.15.18.7. Built-in Functions - Queuing other commands</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -13316,7 +13946,7 @@
 used to enqueue commands such as a marker.</p>
 </div>
 <table id="table-builtin-other-enqueue" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 36. Built-in Other Enqueue Functions</caption>
+<caption class="title">Table 38. Built-in Other Enqueue Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13374,7 +14004,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-functions-event-functions">Built-in Functions - Event Functions</h5>
+<h5 id="built-in-functions-event-functions"><a class="anchor" href="#built-in-functions-event-functions"></a>6.15.18.8. Built-in Functions - Event Functions</h5>
 <div class="openblock">
 <div class="content">
 <div class="paragraph">
@@ -13382,7 +14012,7 @@
 events.</p>
 </div>
 <table id="table-builtin-event" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 37. Built-in Event Functions</caption>
+<caption class="title">Table 39. Built-in Event Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13600,11 +14230,11 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="built-in-functions-helper-functions">Built-in Functions - Helper Functions</h5>
+<h5 id="built-in-functions-helper-functions"><a class="anchor" href="#built-in-functions-helper-functions"></a>6.15.18.9. Built-in Functions - Helper Functions</h5>
 <div class="openblock">
 <div class="content">
 <table id="table-builtin-helper" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 38. Built-in Helper Functions</caption>
+<caption class="title">Table 40. Built-in Helper Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13651,7 +14281,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="subgroup-functions">6.13.18. Subgroup Functions</h4>
+<h4 id="subgroup-functions"><a class="anchor" href="#subgroup-functions"></a>6.15.19. Subgroup Functions</h4>
 <div class="openblock">
 <div class="content">
 <div class="admonitionblock note">
@@ -13661,7 +14291,8 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in this section requires support for the <code>__opencl_c_subgroups</code> feature macro.
+The functionality described in this section <a href="#unified-spec">requires</a>
+support for OpenCL C 3.0 or newer and the <code>__opencl_c_subgroups</code> feature.
 </td>
 </tr>
 </table>
@@ -13669,10 +14300,13 @@
 <div class="paragraph">
 <p>The table below describes OpenCL C programming language built-in functions that operate on a subgroup level.
 These built-in functions must be encountered by all work items in the subgroup executing the kernel.
-For the functions below, the generic type name <code>gentype</code> may be the one of the supported built-in scalar data types <code>int</code>, <code>uint</code>, <code>long</code>, <code>ulong</code>, <code>float</code>, <code>double</code> (if double precision is supported), or <code>half</code> (if half precision is supported).</p>
+For the functions below, the generic type name <code>gentype</code> may be the one of the
+supported built-in scalar data types <code>int</code>, <code>uint</code>, <code>long</code>
+<sup class="footnote">[<a id="_footnoteref_77" class="footnote" href="#_footnotedef_77" title="View footnote.">77</a>]</sup>, <code>ulong</code>, <code>half</code> <sup class="footnote">[<a id="_footnoteref_78" class="footnote" href="#_footnotedef_78" title="View footnote.">78</a>]</sup>,
+<code>float</code>, and <code>double</code> <sup class="footnote">[<a id="_footnoteref_79" class="footnote" href="#_footnotedef_79" title="View footnote.">79</a>]</sup>.</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 39. Built-in Subgroup Collective Functions</caption>
+<caption class="title">Table 41. Built-in Subgroup Collective Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13768,7 +14402,8 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in the following table requires support for the <code><em>opencl_c_subgroups</code> and <code></em>opencl_c_pipes</code> feature macros.
+The functionality described in the following table <a href="#unified-spec">requires</a> support for OpenCL C 3.0 or newer and the <code>__opencl_c_subgroups</code>
+and <code>__opencl_c_pipes</code> features.
 </td>
 </tr>
 </table>
@@ -13785,7 +14420,7 @@
 for the arguments to the pipe functions listed in <em>table 6.29</em>.</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 40. Built-in Subgroup Pipe Functions</caption>
+<caption class="title">Table 42. Built-in Subgroup Pipe Functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -13837,7 +14472,8 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-The functionality described in the following table requires support for the <code><em>opencl_c_subgroups</code> feature macro and either OpenCL C 2.0 or the <code></em>opencl_c_device_enqueue</code> feature macro.
+The functionality described in the following table <a href="#unified-spec">requires</a> support for OpenCL C 3.0 or newer and the <code>__opencl_c_subgroups</code>
+and <code>__opencl_c_device_enqueue</code> features.
 </td>
 </tr>
 </table>
@@ -13847,7 +14483,7 @@
 information for a block to be enqueued.</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 41. Built-in Subgroup Kernel Query Functions</caption>
+<caption class="title">Table 43. Built-in Subgroup Kernel Query Functions</caption>
 <colgroup>
 <col style="width: 55.5555%;">
 <col style="width: 44.4445%;">
@@ -13889,7 +14525,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="opencl-numerical-compliance">7. OpenCL Numerical Compliance</h2>
+<h2 id="opencl-numerical-compliance"><a class="anchor" href="#opencl-numerical-compliance"></a>7. OpenCL Numerical Compliance</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes features of the <a href="#C99-spec">C99</a> and IEEE 754
@@ -13902,7 +14538,7 @@
 Double precision floating-point is an optional feature.</p>
 </div>
 <div class="sect2">
-<h3 id="rounding-modes-1">7.1. Rounding Modes</h3>
+<h3 id="rounding-modes-1"><a class="anchor" href="#rounding-modes-1"></a>7.1. Rounding Modes</h3>
 <div class="paragraph">
 <p>Floating-point calculations may be carried out internally with extra
 precision and then rounded to fit into the destination type.
@@ -13925,20 +14561,17 @@
 </ul>
 </div>
 <div class="paragraph">
-<p><em>Round to nearest</em> <em>even</em> is currently the only rounding mode required<sup>67</sup> by
-the OpenCL specification for single precision and double precision
-operations and is therefore the default rounding mode.
+<p><em>Round to nearest</em> <em>even</em> is currently the only rounding mode required by the
+OpenCL specification for single precision and double precision operations and is
+therefore the default rounding mode
+<sup class="footnote">[<a id="_footnoteref_80" class="footnote" href="#_footnotedef_80" title="View footnote.">80</a>]</sup>.
 In addition, only static selection of rounding mode is supported.
 Dynamically reconfiguring the rounding modes as specified by the IEEE 754
 spec is unsupported.</p>
 </div>
-<div class="paragraph">
-<p>[67] Except for the embedded profile whether either round to zero or round to
-nearest rounding mode may be supported for single precision floating-point.</p>
-</div>
 </div>
 <div class="sect2">
-<h3 id="inf-nan-and-denormalized-numbers">7.2. INF, NaN and Denormalized Numbers</h3>
+<h3 id="inf-nan-and-denormalized-numbers"><a class="anchor" href="#inf-nan-and-denormalized-numbers"></a>7.2. INF, NaN and Denormalized Numbers</h3>
 <div class="paragraph">
 <p><code>INF</code> and NaNs must be supported.
 Support for signaling NaNs is not required.</p>
@@ -13954,7 +14587,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="floating-point-exceptions">7.3. Floating-Point Exceptions</h3>
+<h3 id="floating-point-exceptions"><a class="anchor" href="#floating-point-exceptions"></a>7.3. Floating-Point Exceptions</h3>
 <div class="paragraph">
 <p>Floating-point exceptions are disabled in OpenCL.
 The result of a floating-point exception must match the IEEE 754 spec for
@@ -13992,7 +14625,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="relative-error-as-ulps">7.4. Relative Error as ULPs</h3>
+<h3 id="relative-error-as-ulps"><a class="anchor" href="#relative-error-as-ulps"></a>7.4. Relative Error as ULPs</h3>
 <div class="paragraph">
 <p>In this section we discuss the maximum relative error defined as ulp (units
 in the last place).
@@ -14030,17 +14663,14 @@
 </div>
 </div>
 <div class="paragraph">
-<p>The following table<sup>68</sup> describes the minimum accuracy of single precision
+<p>The following table describes the minimum accuracy of single precision
 floating-point arithmetic operations given as ULP values.
 The reference value used to compute the ULP value of an arithmetic operation
-is the infinitely precise result.</p>
-</div>
-<div class="paragraph">
-<p>[68] The ULP values for built-in math functions <strong>lgamma</strong> and <strong>lgamma_r</strong> is
-currently undefined.</p>
+is the infinitely precise result.
+0 ulp is used for math functions that do not require rounding.</p>
 </div>
 <table id="table-ulp-float-math" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 42. ULP values for single precision built-in math functions</caption>
+<caption class="title">Table 44. ULP values for single precision built-in math functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -14048,7 +14678,7 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Function</strong></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong><sup>69</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><em>x</em> + <em>y</em></p></td>
@@ -14239,6 +14869,14 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">Correctly rounded</p></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>lgamma</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Undefined</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>lgamma_r</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Undefined</p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>log</strong></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">≤ 3 ulp</p></td>
 </tr>
@@ -14531,17 +15169,15 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>[69] 0 ulp is used for math functions that do not require rounding.</p>
-</div>
-<div class="paragraph">
 <p>The following table describes the minimum accuracy of single precision
 floating-point arithmetic operations given as ULP values for the embedded
 profile.
 The reference value used to compute the ULP value of an arithmetic operation
-is the infinitely precise result.</p>
+is the infinitely precise result.
+0 ulp is used for math functions that do not require rounding.</p>
 </div>
 <table id="table-ulp-embedded" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 43. ULP values for the embedded profile</caption>
+<caption class="title">Table 45. ULP values for the embedded profile</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -14549,7 +15185,7 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Function</strong></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong><sup>70</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><em>x</em> + <em>y</em></p></td>
@@ -15030,13 +15666,10 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>[70] 0 ulp is used for math functions that do not require rounding.</p>
-</div>
-<div class="paragraph">
-<p>The following table describes the minimum accuracy of commonly used single
-precision floating-point arithmetic operations given as ULP values if the
-<code>-cl-unsafe-math-optimizations</code> compiler option is specified when compiling or
-building an OpenCL program.
+<p>The <a href="#table-float-ulp-relaxed">following table</a> describes the minimum accuracy
+of commonly used single precision floating-point arithmetic operations given
+as ULP values if the <code>-cl-unsafe-math-optimizations</code> compiler option is
+specified when compiling or building an OpenCL program.
 For derived implementations, the operations used in the derivation may
 themselves be relaxed according to the following table.
 The minimum accuracy of math functions not defined in the following table
@@ -15044,10 +15677,15 @@
 in <a href="#table-ulp-float-math">ULP values for single precision built-in math functions</a> when operating in the full profile, and as
 defined in <a href="#table-ulp-embedded">ULP values for the embedded profile</a> when operating in the embedded profile.
 The reference value used to compute the ULP value of an arithmetic operation
-is the infinitely precise result.</p>
+is the infinitely precise result.
+0 ulp is used for math functions that do not require rounding.</p>
+</div>
+<div class="paragraph">
+<p>Defined minimum accuracy of single precision floating-point arithmetic
+operations and builtins with <code>-cl-unsafe-math-optimizations</code> <a href="#unified-spec">requires</a> support for OpenCL C 2.0 or newer.</p>
 </div>
 <table id="table-float-ulp-relaxed" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 44. ULP values for single precision built-in math functions with unsafe math optimizations in the full and embedded profiles</caption>
+<caption class="title">Table 46. ULP values for single precision built-in math functions with unsafe math optimizations in the full and embedded profiles</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -15055,7 +15693,7 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Function</strong></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong><sup>71</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>1.0 / <em>x</em></strong></p></td>
@@ -15128,7 +15766,7 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>cosh</strong>(<em>x</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Defined for <em>x</em> in the domain [-88,88] and implemented as 0.5f *
       (<strong>exp</strong>(<em>x</em>) + <strong>exp</strong>(-<em>x</em>)).
-      For non-derived implementations, the error is ≤ 8192 ULP.</p></td>
+      For non-derived implementations, the error is ≤ 8192 ulp.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>cospi</strong>(<em>x</em>)</p></td>
@@ -15186,9 +15824,10 @@
       For <em>x</em> &gt; 0 or <em>x</em> &lt; 0 and even <em>y</em>, derived implementations implement
       this as <strong>exp2</strong>(<em>y</em> * <strong>log2</strong>(<strong>fabs</strong>(<em>x</em>))).
       For <em>x</em> &lt; 0 and odd <em>y</em>, derived implementations implement this as
-      -<strong>exp2</strong>(<em>y</em> * <strong>log2</strong>(<strong>fabs</strong>(<em>x</em>))<sup>72</sup>.
+      -<strong>exp2</strong>(<em>y</em> * <strong>log2</strong>(<strong>fabs</strong>(<em>x</em>)).
       For <em>x</em> == 0 and nonzero <em>y</em>, derived implementations return zero.
-      For non-derived implementations, the error is ≤ 8192 ULP</p></td>
+      For non-derived implementations, the error is ≤ 8192 ulp.
+      <sup class="footnote">[<a id="_footnoteref_81" class="footnote" href="#_footnotedef_81" title="View footnote.">81</a>]</sup></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>pown</strong>(<em>x</em>, <em>y</em>)</p></td>
@@ -15215,7 +15854,7 @@
       this case as -<strong>exp2</strong>(<strong>log2</strong>(-<em>x</em>) / <em>y</em>).
       Defined for <em>x</em> = +/-0 when <em>y</em> &gt; 0, derived implementations will
       return +0 in this case.
-      For non-derived implementations, the error is ≤ 8192 ULP.</p></td>
+      For non-derived implementations, the error is ≤ 8192 ulp.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>sin</strong>(<em>x</em>)</p></td>
@@ -15232,7 +15871,7 @@
       For <em>x</em> in [-2<sup>-10,2</sup>-10], derived implementations implement as <em>x</em>.
       For <em>x</em> outside of [-2<sup>10,2</sup>10], derived implement as <strong>0.5f *
       (*exp</strong>(<em>x</em>) - <strong>exp</strong>(-<em>x</em>)).
-      For non-derived implementations, the error is ≤ 8192 ULP.</p></td>
+      For non-derived implementations, the error is ≤ 8192 ulp.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>sinpi</strong>(<em>x</em>)</p></td>
@@ -15259,23 +15898,14 @@
 </tbody>
 </table>
 <div class="paragraph">
-<p>[71] 0 ulp is used for math functions that do not require rounding.</p>
-</div>
-<div class="paragraph">
-<p>[72] On some implementations, <strong>powr</strong>() or <strong>pown</strong>() may perform faster than
-<strong>pow</strong>().
-If <em>x</em> is known to be &gt;= 0, consider using <strong>powr</strong>() in place of <strong>pow</strong>(), or
-if <em>y</em> is known to be an integer, consider using <strong>pown</strong>() in place of
-<strong>pow</strong>().</p>
-</div>
-<div class="paragraph">
 <p>The following table describes the minimum accuracy of double precision
 floating-point arithmetic operations given as ULP values.
 The reference value used to compute the ULP value of an arithmetic operation
-is the infinitely precise result.</p>
+is the infinitely precise result.
+0 ulp is used for math functions that do not require rounding.</p>
 </div>
 <table id="table-ulp-double" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 45. ULP values for double precision built-in math functions</caption>
+<caption class="title">Table 47. ULP values for double precision built-in math functions</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -15283,7 +15913,7 @@
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Function</strong></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong><sup>73</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min Accuracy - ULP values</strong></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><em>x</em> + <em>y</em></p></td>
@@ -15627,19 +16257,16 @@
 </tr>
 </tbody>
 </table>
-<div class="paragraph">
-<p>[73] 0 ulp is used for math functions that do not require rounding.</p>
-</div>
 </div>
 <div class="sect2">
-<h3 id="edge-case-behavior">7.5. Edge Case Behavior</h3>
+<h3 id="edge-case-behavior"><a class="anchor" href="#edge-case-behavior"></a>7.5. Edge Case Behavior</h3>
 <div class="paragraph">
 <p>The edge case behavior of the <a href="#math-functions">math functions</a> shall
 conform to <a href="#C99-spec">sections F.9 and G.6 of the C99 Specification</a>,
 except <a href="#additional-requirements-beyond-c99-tc2">where noted below</a>.</p>
 </div>
 <div class="sect3">
-<h4 id="additional-requirements-beyond-c99-tc2">7.5.1. Additional Requirements Beyond C99 TC2</h4>
+<h4 id="additional-requirements-beyond-c99-tc2"><a class="anchor" href="#additional-requirements-beyond-c99-tc2"></a>7.5.1. Additional Requirements Beyond C99 TC2</h4>
 <div class="paragraph">
 <p>All functions that return a NaN should return a quiet NaN.</p>
 </div>
@@ -15665,186 +16292,143 @@
 For example, <strong>sin</strong>(±0) = ±0 shall be interpreted to mean
 <strong>sin</strong>(+0) is +0 and <strong>sin</strong>(-0) is -0.</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>acospi</strong>(1) = +0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>acospi</strong>(<em>x</em>) returns a NaN for |<em>x</em>| &gt; 1.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>asinpi</strong>(±0) = ±0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>asinpi</strong>(<em>x</em>) returns a NaN for |<em>x</em>| &gt; 1.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atanpi</strong>(±0) = ±0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atanpi</strong>(±∞) = ±0.5.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±0, -0) = ±1.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±0, +0) = ±0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±0, <em>x</em>) returns ±1 for <em>x</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±0, <em>x</em>) returns ±0 for <em>x</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(<em>y</em>, ±0) returns -0.5 for <em>y</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(<em>y</em>, ±0) returns 0.5 for <em>y</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±_y_, -∞) returns ±1 for finite <em>y</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±_y_, +∞) returns ±0 for finite <em>y</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±∞, <em>x</em>) returns ±0.5 for finite <em>x.</em></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±∞, -∞) returns ±0.75.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>atan2pi</strong>(±∞, +∞) returns ±0.25.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>ceil</strong>(-1 &lt; <em>x</em> &lt; 0) returns -0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>cospi</strong>(±0) returns 1</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>cospi</strong>(<em>n</em> + 0.5) is +0 for any integer <em>n</em> where <em>n</em> + 0.5 is
 representable.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>cospi</strong>(±∞) returns a NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>exp10</strong>(-∞) returns +0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>exp10</strong>(+∞) returns +∞.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>distance</strong>(<em>x</em>, <em>y</em>) calculates the distance from <em>x</em> to <em>y</em> without
 overflow or extraordinary precision loss due to underflow.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fdim</strong>(any, NaN) returns NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fdim</strong>(NaN, any) returns NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fmod</strong>(±0, NaN) returns NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>frexp</strong>(±∞, <em>exp</em>) returns ±∞ and stores 0 in
 <em>exp</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>frexp</strong>(NaN, <em>exp</em>) returns the NaN and stores 0 in <em>exp</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fract</strong>(<em>x</em>, <em>iptr</em>) shall not return a value greater than or equal to
 1.0, and shall not return a value less than 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fract</strong>(+0, <em>iptr</em>) returns +0 and +0 in iptr.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fract</strong>(-0, <em>iptr</em>) returns -0 and -0 in iptr.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fract</strong>(+∞, <em>iptr</em>) returns +0 and +∞ in <em>iptr</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fract</strong>(-∞, <em>iptr</em>) returns -0 and -∞ in <em>iptr</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fract</strong>(NaN, <em>iptr</em>) returns the NaN and NaN in <em>iptr</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>length</strong> calculates the length of a vector without overflow or
 extraordinary precision loss due to underflow.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>lgamma_r</strong>(<em>x</em>, <em>signp</em>) returns 0 in <em>signp</em> if <em>x</em> is zero or a
 negative integer.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>nextafter</strong>(-0, <em>y</em> &gt; 0) returns smallest positive denormal value.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>nextafter</strong>(+0, <em>y</em> &lt; 0) returns smallest negative denormal value.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>normalize</strong> shall reduce the vector to unit length, pointing in the
 same direction without overflow or extraordinary precision loss due to
 underflow.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>normalize</strong>(<em>v</em>) returns <em>v</em> if all elements of <em>v</em> are zero.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>normalize</strong>(<em>v</em>) returns a vector full of NaNs if any element is a NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>normalize</strong>(<em>v</em>) for which any element in <em>v</em> is infinite shall proceed
 as if the elements in <em>v</em> were replaced as follows:</p>
 <div class="listingblock">
@@ -15853,165 +16437,128 @@
    v[i] = isinf(v[i]) ? copysign(<span class="float">1</span><span class="float">.0</span>, v[i]) : <span class="float">0</span><span class="float">.0</span> * v[i];</code></pre>
 </div>
 </div>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>pow</strong>(±0, -∞) returns +∞</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>pown</strong>(<em>x</em>, 0) is 1 for any <em>x</em>, even zero, NaN or infinity.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>pown</strong>(±0, <em>n</em>) is ±∞ for odd <em>n</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>pown</strong>(±0, <em>n</em>) is +∞ for even <em>n</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>pown</strong>(±0, <em>n</em>) is +0 for even <em>n</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>pown</strong>(±0, <em>n</em>) is ±0 for odd <em>n</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(<em>x</em>, ±0) is 1 for finite <em>x</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(±0, <em>y</em>) is +∞ for finite <em>y</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(±0, -∞) is +∞.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(±0, <em>y</em>) is +0 for <em>y</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(+1, <em>y</em>) is 1 for finite <em>y.</em></p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(<em>x</em>, <em>y</em>) returns NaN for <em>x</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(±0, ±0) returns NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(+∞, ±0) returns NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(+1, ±∞) returns NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(<em>x</em>, NaN) returns the NaN for <em>x</em> &gt;= 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>powr</strong>(NaN, <em>y</em>) returns the NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>rint</strong>(-0.5 &lt;= <em>x</em> &lt; 0) returns -0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>remquo</strong>(<em>x</em>, <em>y</em>, &amp;_quo_) returns a NaN and 0 in <em>quo</em> if <em>x</em> is
 ±∞, or if <em>y</em> is 0 and the other argument is non-NaN or if
 either argument is a NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>rootn</strong>(±0, <em>n</em>) is ±∞ for odd <em>n</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>rootn</strong>(±0, <em>n</em>) is +∞ for even <em>n</em> &lt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>rootn</strong>(±0, <em>n</em>) is +0 for even <em>n</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>rootn</strong>(±0, <em>n</em>) is ±0 for odd <em>n</em> &gt; 0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>rootn</strong>(<em>x</em>, <em>n</em>) returns a NaN for <em>x</em> &lt; 0 and <em>n</em> is even.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>rootn</strong>(<em>x</em>, 0) returns a NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>round</strong>(-0.5 &lt; <em>x</em> &lt; 0) returns -0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>sinpi</strong>(±0) returns ±0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>sinpi</strong>(+<em>n</em>) returns +0 for positive integers <em>n</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>sinpi</strong>(-<em>n</em>) returns -0 for negative integers <em>n</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>sinpi</strong>(±∞) returns a NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>tanpi</strong>(±0) returns ±0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>tanpi</strong>(±∞) returns a NaN.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>tanpi</strong>(<em>n</em>) is <strong>copysign</strong>(0.0, <em>n</em>) for even integers <em>n</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>tanpi</strong>(<em>n</em>) is <strong>copysign</strong>(0.0, - <em>n</em>) for odd integers <em>n</em>.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>tanpi</strong>(<em>n</em> + 0.5) for even integer <em>n</em> is +∞ where <em>n</em> + 0.5 is
 representable.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>tanpi</strong>(<em>n</em> + 0.5) for odd integer <em>n</em> is -∞ where <em>n</em> + 0.5 is
 representable.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>trunc</strong>(-1 &lt; <em>x</em> &lt; 0) returns -0.
 Binary file (standard input) matches</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 </div>
 <div class="sect3">
-<h4 id="changes-to-c99-tc2-behavior">7.5.2. Changes to C99 TC2 Behavior</h4>
+<h4 id="changes-to-c99-tc2-behavior"><a class="anchor" href="#changes-to-c99-tc2-behavior"></a>7.5.2. Changes to C99 TC2 Behavior</h4>
 <div class="paragraph">
 <p><strong>modf</strong> behaves as though implemented by:</p>
 </div>
@@ -16030,7 +16577,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="edge-case-behavior-in-flush-to-zero-mode">7.5.3. Edge Case Behavior in Flush To Zero Mode</h4>
+<h4 id="edge-case-behavior-in-flush-to-zero-mode"><a class="anchor" href="#edge-case-behavior-in-flush-to-zero-mode"></a>7.5.3. Edge Case Behavior in Flush To Zero Mode</h4>
 <div class="paragraph">
 <p>If denormals are flushed to zero, then a function may return one of four
 results:</p>
@@ -16063,25 +16610,21 @@
 following edge cases for <strong>nextafter</strong> instead of those listed in the
 <a href="#additional-requirements-beyond-c99-tc2">additional requirements</a> section.</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>nextafter</strong>(+smallest normal, <em>y</em> &lt; +smallest normal) = +0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>nextafter</strong>(-smallest normal, <em>y</em> &gt; -smallest normal) = -0.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>nextafter</strong>(-0, <em>y</em> &gt; 0) returns smallest positive normal value.</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>nextafter</strong>(+0, <em>y</em> &lt; 0) returns smallest negative normal value.</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>For clarity, subnormals or denormals are defined to be the set of
@@ -16089,19 +16632,15 @@
 <em>x</em> &lt; -0.
 They do not include ±0.
 A non-zero number is said to be sub-normal before rounding if after
-normalization, its radix-2 exponent is less than (<code>TYPE_MIN_EXP</code> - 1)<sup>74</sup>.</p>
-</div>
-<div class="paragraph">
-<p>[74] Here <code>TYPE_MIN</code> and <code>TYPE_MIN_EXP</code> should be substituted by constants
-appropriate to the floating-point type under consideration, such as
-<code>FLT_MIN</code> and <code>FLT_MIN_EXP</code> for <code>float</code>.</p>
+normalization, its radix-2 exponent is less than (<code>TYPE_MIN_EXP</code> - 1)
+<sup class="footnote">[<a id="_footnoteref_82" class="footnote" href="#_footnotedef_82" title="View footnote.">82</a>]</sup>.</p>
 </div>
 </div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="image-addressing-and-filtering">8. Image Addressing and Filtering</h2>
+<h2 id="image-addressing-and-filtering"><a class="anchor" href="#image-addressing-and-filtering"></a>8. Image Addressing and Filtering</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Let w<sub>t</sub>, h<sub>t</sub> and d<sub>t</sub> be the width, height (or image array size for a 1D
@@ -16113,7 +16652,7 @@
 sample the image and return an appropriate color.</p>
 </div>
 <div class="sect2">
-<h3 id="image-coordinates">8.1. Image Coordinates</h3>
+<h3 id="image-coordinates"><a class="anchor" href="#image-coordinates"></a>8.1. Image Coordinates</h3>
 <div class="paragraph">
 <p>This affects the interpretation of image coordinates.
 If image coordinates specified to <strong>read_image{f|i|ui}</strong> are normalized (as
@@ -16129,7 +16668,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="addressing-and-filter-modes">8.2. Addressing and Filter Modes</h3>
+<h3 id="addressing-and-filter-modes"><a class="anchor" href="#addressing-and-filter-modes"></a>8.2. Addressing and Filter Modes</h3>
 <div class="paragraph">
 <p>We first describe how the addressing and filter modes are applied to
 generate the appropriate sample locations to read from the image if the
@@ -16172,7 +16711,7 @@
 <p>The following table describes the address_mode function.</p>
 </div>
 <table id="table-address-modes-texel-location" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 46. Addressing modes to generate texel location</caption>
+<caption class="title">Table 48. Addressing modes to generate texel location</caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -16587,30 +17126,30 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="conversion-rules">8.3. Conversion Rules</h3>
+<h3 id="conversion-rules"><a class="anchor" href="#conversion-rules"></a>8.3. Conversion Rules</h3>
 <div class="paragraph">
 <p>In this section we discuss conversion rules that are applied when reading
 and writing images in a kernel.</p>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-normalized-integer-channel-data-types">8.3.1. Conversion rules for normalized integer channel data types</h4>
+<h4 id="conversion-rules-for-normalized-integer-channel-data-types"><a class="anchor" href="#conversion-rules-for-normalized-integer-channel-data-types"></a>8.3.1. Conversion rules for normalized integer channel data types</h4>
 <div class="paragraph">
 <p>In this section we discuss converting normalized integer channel data types
 to floating-point values and vice-versa.</p>
 </div>
 <div class="sect4">
-<h5 id="converting-normalized-integer-channel-data-types-to-floating-point-values">Converting normalized integer channel data types to floating-point values</h5>
+<h5 id="converting-normalized-integer-channel-data-types-to-floating-point-values"><a class="anchor" href="#converting-normalized-integer-channel-data-types-to-floating-point-values"></a>8.3.1.1. Converting normalized integer channel data types to floating-point values</h5>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and
 <code>CL_UNORM_INT16</code>, <strong>read_imagef</strong> will convert the channel values from an
 8-bit or 16-bit unsigned integer to normalized floating-point values in the
-range [<code>0.0f</code>, <code>1.0</code>].</p>
+range [<code>0.0f</code>, <code>1.0f</code>].</p>
 </div>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_SNORM_INT8</code> and
 <code>CL_SNORM_INT16</code>, <strong>read_imagef</strong> will convert the channel values from an
 8-bit or 16-bit signed integer to normalized floating-point values in the
-range [<code>-1.0</code>, <code>1.0</code>].</p>
+range [<code>-1.0f</code>, <code>1.0f</code>].</p>
 </div>
 <div class="paragraph">
 <p>These conversions are performed as follows:</p>
@@ -16618,57 +17157,52 @@
 <div class="paragraph">
 <p><code>CL_UNORM_INT8</code> (8-bit unsigned integer) → <code>float</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>normalized <code>float</code> value = <code>(float)c / 255.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>CL_UNORM_INT_101010</code> (10-bit unsigned integer) → <code>float</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>normalized <code>float</code> value = <code>(float)c / 1023.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>CL_UNORM_INT16</code> (16-bit unsigned integer) → <code>float</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>normalized <code>float</code> value = <code>(float)c / 65535.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>CL_SNORM_INT8</code> (8-bit signed integer) → <code>float</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>normalized <code>float</code> value = <strong>max</strong>(<code>-1.0f</code>, <code>(float)c / 127.0f</code>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>CL_SNORM_INT16</code> (16-bit signed integer) → <code>float</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>normalized <code>float</code> value = <strong>max</strong>(<code>-1.0f</code>, <code>(float)c / 32767.0f</code>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>The precision of the above conversions is &lt;= 1.5 ulp except for the
@@ -16677,89 +17211,77 @@
 <div class="paragraph">
 <p>For <code>CL_UNORM_INT8</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>0 must convert to <code>0.0f</code> and</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>255 must convert to <code>1.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>For <code>CL_UNORM_INT_101010</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>0 must convert to <code>0.0f</code> and</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>1023 must convert to <code>1.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>For <code>CL_UNORM_INT16</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>0 must convert to <code>0.0f</code> and</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>65535 must convert to <code>1.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>For <code>CL_SNORM_INT8</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>-128 and -127 must convert to <code>-1.0f</code>,</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>0 must convert to <code>0.0f</code> and</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>127 must convert to <code>1.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>For <code>CL_SNORM_INT16</code></p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>-32768 and -32767 must convert to <code>-1.0f</code>,</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>0 must convert to <code>0.0f</code> and</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>32767 must convert to <code>1.0f</code></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 </div>
 <div class="sect4">
-<h5 id="converting-floating-point-values-to-normalized-integer-channel-data-types">Converting floating-point values to normalized integer channel data types</h5>
+<h5 id="converting-floating-point-values-to-normalized-integer-channel-data-types"><a class="anchor" href="#converting-floating-point-values-to-normalized-integer-channel-data-types"></a>8.3.1.2. Converting floating-point values to normalized integer channel data types</h5>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and
 <code>CL_UNORM_INT16</code>, <strong>write_imagef</strong> will convert the floating-point color value
@@ -16777,57 +17299,52 @@
 <div class="paragraph">
 <p><code>float</code> → <code>CL_UNORM_INT8</code> (8-bit unsigned integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_uchar_sat_rte</strong>(<code>f * 255.0f</code>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_UNORM_INT_101010</code> (10-bit unsigned integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>min</strong>(<strong>convert_ushort_sat_rte</strong>(<code>f * 1023.0f</code>), <code>0x3ff</code>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_UNORM_INT16</code> (16-bit unsigned integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_ushort_sat_rte</strong>(<code>f * 65535.0f</code>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_SNORM_INT8</code> (8-bit signed integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_char_sat_rte</strong>(<code>f * 127.0f</code>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_SNORM_INT16</code> (16-bit signed integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_short_sat_rte</strong>(<code>f * 32767.0f</code>)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>Please refer to the <a href="#out-of-range-behavior">out-of-range behavior and
@@ -16844,105 +17361,90 @@
 <div class="paragraph">
 <p><code>float</code> → <code>CL_UNORM_INT8</code> (8-bit unsigned integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>Let f<sub>preferred</sub> = <strong>convert_uchar_sat_rte</strong>(f * <code>255.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>Let f<sub>approx</sub> = <strong>convert_uchar_sat_&lt;impl-rounding-mode&gt;</strong>(f * <code>255.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fabs</strong>(f<sub>preferred</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_UNORM_INT_101010</code> (10-bit unsigned integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>Let f<sub>preferred</sub> = <strong>convert_ushort_sat_rte</strong>(f * <code>1023.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>Let f<sub>approx</sub> = <strong>convert_ushort_sat_&lt;impl-rounding-mode&gt;</strong>(f *
 <code>1023.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fabs</strong>(f<sub>preferred</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_UNORM_INT16</code> (16-bit unsigned integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>Let f<sub>preferred</sub> = <strong>convert_ushort_sat_rte</strong>(f * <code>65535.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>Let f<sub>approx</sub> = <strong>convert_ushort_sat_&lt;impl-rounding-mode&gt;</strong>(f *
 <code>65535.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fabs</strong>(f<sub>preferred</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_SNORM_INT8</code> (8-bit signed integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>Let f<sub>preferred</sub> = <strong>convert_char_sat_rte</strong>(f * <code>127.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>Let f<sub>approx</sub> = <strong>convert_char_sat_&lt;impl_rounding_mode&gt;</strong>(f * <code>127.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fabs</strong>(f<sub>preferred</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p><code>float</code> → <code>CL_SNORM_INT16</code> (16-bit signed integer)</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>Let f<sub>preferred</sub> = <strong>convert_short_sat_rte</strong>(f * <code>32767.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p>Let f<sub>approx</sub> = <strong>convert_short_sat_&lt;impl-rounding-mode&gt;</strong>(f *
 <code>32767.0f</code>)</p>
-</dd>
-<dt class="hdlist1"></dt>
-<dd>
+</li>
+<li>
 <p><strong>fabs</strong>(f<sub>preferred</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-half-precision-floating-point-channel-data-type">8.3.2. Conversion rules for half precision floating-point channel data type</h4>
+<h4 id="conversion-rules-for-half-precision-floating-point-channel-data-type"><a class="anchor" href="#conversion-rules-for-half-precision-floating-point-channel-data-type"></a>8.3.2. Conversion rules for half precision floating-point channel data type</h4>
 <div class="paragraph">
 <p>For images created with a channel data type of <code>CL_HALF_FLOAT</code>, the
 conversions from <code>half</code> to <code>float</code> are lossless (as described in
@@ -16957,7 +17459,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-floating-point-channel-data-type">8.3.3. Conversion rules for floating-point channel data type</h4>
+<h4 id="conversion-rules-for-floating-point-channel-data-type"><a class="anchor" href="#conversion-rules-for-floating-point-channel-data-type"></a>8.3.3. Conversion rules for floating-point channel data type</h4>
 <div class="paragraph">
 <p>The following rules apply for reading and writing images created with
 channel data type of <code>CL_FLOAT</code>.</p>
@@ -16977,7 +17479,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-signed-and-unsigned-8-bit-16-bit-and-32-bit-integer-channel-data-types">8.3.4. Conversion rules for signed and unsigned 8-bit, 16-bit and 32-bit integer channel data types</h4>
+<h4 id="conversion-rules-for-signed-and-unsigned-8-bit-16-bit-and-32-bit-integer-channel-data-types"><a class="anchor" href="#conversion-rules-for-signed-and-unsigned-8-bit-16-bit-and-32-bit-integer-channel-data-types"></a>8.3.4. Conversion rules for signed and unsigned 8-bit, 16-bit and 32-bit integer channel data types</h4>
 <div class="paragraph">
 <p>Calls to <strong>read_imagei</strong> with channel data type values of <code>CL_SIGNED_INT8</code>,
 <code>CL_SIGNED_INT16</code> and <code>CL_SIGNED_INT32</code> return the unmodified integer values
@@ -16994,35 +17496,32 @@
 <div class="paragraph">
 <p>32 bit signed integer → 8-bit signed integer</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_char_sat</strong>(i)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>32 bit signed integer → 16-bit signed integer</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_short_sat</strong>(i)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>32 bit signed integer → 32-bit signed integer</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>no conversion is performed</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>Calls to <strong>write_imageui</strong> will perform one of the following conversions:</p>
@@ -17030,42 +17529,39 @@
 <div class="paragraph">
 <p>32 bit unsigned integer → 8-bit unsigned integer</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_uchar_sat</strong>(i)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>32 bit unsigned integer → 16-bit unsigned integer</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><strong>convert_ushort_sat</strong>(i)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>32 bit unsigned integer → 32-bit unsigned integer</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>no conversion is performed</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>The conversions described in this section must be correctly saturated.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-srgba-and-sbgra-images">8.3.5. Conversion rules for sRGBA and sBGRA images</h4>
+<h4 id="conversion-rules-for-srgba-and-sbgra-images"><a class="anchor" href="#conversion-rules-for-srgba-and-sbgra-images"></a>8.3.5. Conversion rules for sRGBA and sBGRA images</h4>
 <div class="paragraph">
 <p>Standard RGB data, which roughly displays colors in a linear ramp of
 luminosity levels such that an average observer, under average viewing
@@ -17140,13 +17636,12 @@
 <div class="paragraph">
 <p>The precision of the above conversion should be such that</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p><code>|generated_channel_component - scaled_reference_result|</code> ≤ 0.6</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>where <code>generated_channel_component</code> is the actual value that the
@@ -17155,7 +17650,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="selecting-an-image-from-an-image-array">8.4. Selecting an Image from an Image Array</h3>
+<h3 id="selecting-an-image-from-an-image-array"><a class="anchor" href="#selecting-an-image-from-an-image-array"></a>8.4. Selecting an Image from an Image Array</h3>
 <div class="paragraph">
 <p>Let (<em>u</em>,<em>v</em>,<em>w</em>) represent the unnormalized image coordinate values for
 reading from and/or writing to a 2D image in a 2D image array.</p>
@@ -17163,24 +17658,22 @@
 <div class="paragraph">
 <p>When read using a sampler, the 2D image layer selected is computed as:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>layer = <strong>clamp</strong>(<strong>rint</strong>(<em>w</em>), 0, d<sub>t</sub> - 1)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>otherwise the layer selected is computed as:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>layer = <em>w</em></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>(since <em>w</em> is already an integer) and the result is undefined if <em>w</em> is not
@@ -17193,24 +17686,22 @@
 <div class="paragraph">
 <p>When read using a sampler, the 1D image layer selected is computed as:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>layer = <strong>clamp</strong>(<strong>rint</strong>(<em>v</em>), 0, h<sub>t</sub> - 1)</p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>otherwise the layer selected is computed as:</p>
 </div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"></dt>
-<dd>
+<div class="ulist none">
+<ul class="none">
+<li>
 <p>layer = <em>v</em></p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 <div class="paragraph">
 <p>(since <em>v</em> is already an integer) and the result is undefined if <em>v</em> is not
@@ -17220,7 +17711,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="references">9. Normative References</h2>
+<h2 id="references"><a class="anchor" href="#references"></a>9. Normative References</h2>
 <div class="sectionbody">
 <div class="olist arabic">
 <ol class="arabic">
@@ -17280,10 +17771,259 @@
 </div>
 </div>
 </div>
+<div id="footnotes">
+<hr>
+<div class="footnote" id="_footnotedef_1">
+<a href="#_footnoteref_1">1</a>. When any scalar value is converted to <code>bool</code>, the result is 0 if the value compares equal to 0; otherwise, the result is 1.
+</div>
+<div class="footnote" id="_footnotedef_2">
+<a href="#_footnoteref_2">2</a>. The <code>long</code>, <code>unsigned long</code> and <code>ulong</code> scalar types are optional types for EMBEDDED profile devices that are supported if the value of the <code>CL_DEVICE_EXTENSIONS</code> device query contains <strong>cles_khr_int64</strong>. An OpenCL C 3.0 compiler must also define the <code>__opencl_c_int64</code> feature macro unconditionally for FULL profile devices, or for EMBEDDED profile devices that support these types.
+</div>
+<div class="footnote" id="_footnotedef_3">
+<a href="#_footnoteref_3">3</a>. The <code>double</code> scalar type is an optional type that is supported if the value of the <code>CL_DEVICE_DOUBLE_FP_CONFIG</code> device query is not zero. If this is the case then an OpenCL C 3.0 compiler must also define the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_4">
+<a href="#_footnoteref_4">4</a>. This is a 32-bit type if the value of the <code>CL_DEVICE_ADDRESS_BITS</code> device query is 32-bits, and a 64-bit type if the value of the query is 64-bits.
+</div>
+<div class="footnote" id="_footnotedef_5">
+<a href="#_footnoteref_5">5</a>. <a href="#unified-spec">Requires</a> support for OpenCL C 1.2 or above. Also see extension <strong>cl_khr_fp64</strong>.
+</div>
+<div class="footnote" id="_footnotedef_6">
+<a href="#_footnoteref_6">6</a>. Built-in vector data types are supported by the OpenCL implementation even if the underlying compute device does not natively support any or all of the vector data types. They are to be converted by the device compiler to appropriate instructions that use underlying built-in types supported natively by the compute device. Refer to Appendix B in the OpenCL API specification for a description of the order of the components of a vector type in memory.
+</div>
+<div class="footnote" id="_footnotedef_7">
+<a href="#_footnoteref_7">7</a>. The <code>long<em>n</em></code> and <code>ulong<em>n</em></code> vector types are optional types for EMBEDDED profile devices that are supported if the value of the <code>CL_DEVICE_EXTENSIONS</code> device query contains <strong>cles_khr_int64</strong>. An OpenCL C 3.0 compiler must also define the <code>__opencl_c_int64</code> feature macro unconditionally for FULL profile devices, or for EMBEDDED profile devices that support these types.
+</div>
+<div class="footnote" id="_footnotedef_8">
+<a href="#_footnoteref_8">8</a>. The <code>double<em>n</em></code> vector type is an optional type that is supported if the value of the <code>CL_DEVICE_DOUBLE_FP_CONFIG</code> device query is not zero. If this is the case then an OpenCL C 3.0 compiler must also define the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_9">
+<a href="#_footnoteref_9">9</a>. Refer to the detailed description of the built-in <a href="#image-read-and-write-functions">Image Read and Write Functions</a> that use this type.
+</div>
+<div class="footnote" id="_footnotedef_10">
+<a href="#_footnoteref_10">10</a>. That is, for the purpose of applying type-based aliasing rules, a built-in vector data type will be considered equivalent to the corresponding array type.
+</div>
+<div class="footnote" id="_footnotedef_11">
+<a href="#_footnoteref_11">11</a>. Unless the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_12">
+<a href="#_footnoteref_12">12</a>. Unless the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_13">
+<a href="#_footnoteref_13">13</a>. For conversions to floating-point format, when a finite source value exceeds the maximum representable finite floating-point destination value, the rounding mode will affect whether the result is the maximum finite floating-point value or infinity of same sign as the source value, per IEEE-754 rules for rounding.
+</div>
+<div class="footnote" id="_footnotedef_14">
+<a href="#_footnoteref_14">14</a>. In addition, some other extensions to the C language designed to support a particular vector ISA (e.g. AltiVec™, CELL Broadband Engine™ Architecture) use such conversions in conjunction with swizzle operators to achieve type un-conversion. So as to support legacy code of this type, <strong>as_typen</strong>() allows conversions between vectors of the same size but different numbers of elements, even though the behavior of this sort of conversion is not likely to be portable except to other OpenCL implementations for the same hardware architecture.<br> AltiVec is a trademark of Motorola Inc.<br> Cell Broadband Engine is a trademark of Sony Computer Entertainment, Inc.
+</div>
+<div class="footnote" id="_footnotedef_15">
+<a href="#_footnoteref_15">15</a>. Unless the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_16">
+<a href="#_footnoteref_16">16</a>. While the union is intended to reflect the organization of data in memory, the <strong>as_type</strong>() and <strong>as_type<em>n</em></strong>() constructs are intended to reflect the organization of data in register. The <strong>as_type</strong>() and <strong>as_type<em>n</em></strong>() constructs are intended to compile to no instructions on devices that use a shared register file designed to operate on both the operand and result types. Note that while differences in memory organization are expected to largely be limited to those arising from endianness, the register based representation may also differ due to size of the element in register. For example, an architecture may load a <code>char</code> into a 32-bit register, or a <code>char</code> vector into a SIMD vector register with fixed 32-bit element size. If the element count does not match, then the implementation should pick a data representation that most closely matches what would happen if an appropriate result type operator was applied to a register containing data of the source type. If the number of elements matches, then the <strong>as_type<em>n</em></strong>() should faithfully reproduce the behavior expected from a similar data type reinterpretation using memory/unions. So, for example if an implementation stores all single precision data as <code>double</code> in register, it should implement <strong>as_int</strong>(<code>float</code>) by first down-converting the <code>double</code> to single precision and then (if necessary) moving the single precision bits to a register suitable for operating on integer data. If data stored in different address spaces do not have the same endianness, then the &#8220;dominant endianness&#8221; of the device should prevail.
+</div>
+<div class="footnote" id="_footnotedef_17">
+<a href="#_footnoteref_17">17</a>. This is different from the standard integer conversion rank described in <a href="#C99-spec">section 6.3.1.1 of the C99 Specification</a>.
+</div>
+<div class="footnote" id="_footnotedef_18">
+<a href="#_footnoteref_18">18</a>. The pre- and post- increment operators may have unexpected behavior on floating-point values and are therefore not supported for floating-point scalar and vector built-in types. For example, if variable <em>a</em> has type <code>float</code> and holds the value <code>0x1.0p25f</code>, then <code><em>a</em>++</code> returns <code>0x1.0p25f</code>.<br> Also, <code>(<em>a</em>++)--</code> is not guaranteed to return <em>a</em>, if <em>a</em> has fractional value.<br> In non-default rounding modes, <code>(<em>a</em>++)--</code> may produce the same result as <code><em>a</em>++</code> or <code><em>a</em>--</code> for large <em>a</em>.
+</div>
+<div class="footnote" id="_footnotedef_19">
+<a href="#_footnoteref_19">19</a>. To test whether any or all elements in the result of a vector relational operator test <em>true</em>, for example to use in the context in an <strong>if ( )</strong> statement, please see the <a href="#relational-functions"><strong>any</strong> and <strong>all</strong> built-ins</a>.
+</div>
+<div class="footnote" id="_footnotedef_20">
+<a href="#_footnoteref_20">20</a>. To test whether any or all elements in the result of a vector relational operator test <em>true</em>, for example to use in the context in an <strong>if ( )</strong> statement, please see the <a href="#relational-functions"><strong>any</strong> and <strong>all</strong> built-ins</a>.
+</div>
+<div class="footnote" id="_footnotedef_21">
+<a href="#_footnoteref_21">21</a>. Integer promotion is described in <a href="#C99-spec">section 6.3.1.1 of the C99 Specification</a>.
+</div>
+<div class="footnote" id="_footnotedef_22">
+<a href="#_footnoteref_22">22</a>. Variable length arrays are <a href="#restrictions-variable-length">not supported in OpenCL C</a>.
+</div>
+<div class="footnote" id="_footnotedef_23">
+<a href="#_footnoteref_23">23</a>. Except for 3-component vectors whose size is defined as 4 times the size of each scalar component.
+</div>
+<div class="footnote" id="_footnotedef_24">
+<a href="#_footnoteref_24">24</a>. Bit-field struct members are <a href="#restrictions-bitfield">not supported in OpenCL C</a>.
+</div>
+<div class="footnote" id="_footnotedef_25">
+<a href="#_footnoteref_25">25</a>. Among the invalid values for dereferencing a pointer by the unary <strong>*</strong> operator are a null pointer, an address inappropriately aligned for the type of object pointed to, and the address of an object after the end of its lifetime. If <strong>*P</strong> is an l-value and <strong>T</strong> is the name of an object pointer type, <strong>*(T)P</strong> is an l-value that has a type compatible with that to which <strong>T</strong> points.
+</div>
+<div class="footnote" id="_footnotedef_26">
+<a href="#_footnoteref_26">26</a>. Thus, <strong>&amp;*E</strong> is equivalent to <strong>E</strong> (even if <strong>E</strong> is a null pointer), and <strong>&amp;(E1[E2])</strong> is equivalent to <strong>E1) +  (E2</strong>. It is always true that if <strong>E</strong> is an l-value that is a valid operand of the unary <strong>&amp;</strong> operator, <strong>*&amp;E</strong> is an l-value equal to <strong>E</strong>.
+</div>
+<div class="footnote" id="_footnotedef_27">
+<a href="#_footnoteref_27">27</a>. Implicit in autovectorization is the assumption that any libraries called from the <code>__kernel</code> must be recompilable at run time to handle cases where the compiler decides to merge or separate workitems. This probably means that such libraries can never be hard coded binaries or that hard coded binaries must be accompanied either by source or some retargetable intermediate representation. This may be a code security question for some.
+</div>
+<div class="footnote" id="_footnotedef_28">
+<a href="#_footnoteref_28">28</a>. Unless the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_29">
+<a href="#_footnoteref_29">29</a>. This syntax is already part of the clang source tree on which most vendors have based their OpenCL implementations. Additionally, blocks based closures are supported by the clang open source C compiler as well as Mac OS X&#8217;s C and Objective C compilers. Specifically, Mac OS X&#8217;s Grand Central Dispatch allows applications to queue tasks as a block.
+</div>
+<div class="footnote" id="_footnotedef_30">
+<a href="#_footnoteref_30">30</a>. OpenCL C <a href="#restrictions">does not allow function pointers</a> primarily because it is difficult or expensive to implement generic indirections to executable code in many hardware architectures that OpenCL targets. OpenCL C&#8217;s design of Blocks is intended to respect that same condition, yielding the restrictions listed here. As such, Blocks allow a form of dynamically enqueued function scheduling without providing a form of runtime synchronous dynamic dispatch analogous to function pointers.
+</div>
+<div class="footnote" id="_footnotedef_31">
+<a href="#_footnoteref_31">31</a>. I.e. the <em>global_work_size</em> values specified to <strong>clEnqueueNDRangeKernel</strong> are not evenly divisible by the <em>local_work_size</em> values for each dimension.
+</div>
+<div class="footnote" id="_footnotedef_32">
+<a href="#_footnoteref_32">32</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_33">
+<a href="#_footnoteref_33">33</a>. <strong>fmin</strong> and <strong>fmax</strong> behave as defined by C99 and may not match the IEEE 754-2008 definition for <strong>minNum</strong> and <strong>maxNum</strong> with regard to signaling NaNs. Specifically, signaling NaNs may behave as quiet NaNs.
+</div>
+<div class="footnote" id="_footnotedef_34">
+<a href="#_footnoteref_34">34</a>. The <strong>min</strong>() operator is there to prevent <strong>fract</strong>(-small) from returning 1.0. It returns the largest positive floating-point number less than 1.0.
+</div>
+<div class="footnote" id="_footnotedef_35">
+<a href="#_footnoteref_35">35</a>. The user is cautioned that for some usages, e.g. <strong>mad</strong>(a, b, -a*b), the definition of <strong>mad</strong>() is loose enough in the embedded profile that almost any result is allowed from <strong>mad</strong>() for some values of a and b.
+</div>
+<div class="footnote" id="_footnotedef_36">
+<a href="#_footnoteref_36">36</a>. Only if 64-bit integers are supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_int64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_37">
+<a href="#_footnoteref_37">37</a>. Frequently vector operations need n + 1 bits temporarily to calculate a result. The <strong>rhadd</strong> instruction gives you an extra bit without needing to upsample and downsample. This can be a profound performance win.
+</div>
+<div class="footnote" id="_footnotedef_38">
+<a href="#_footnoteref_38">38</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_39">
+<a href="#_footnoteref_39">39</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_40">
+<a href="#_footnoteref_40">40</a>. If an implementation extends this specification to support IEEE-754 flags or exceptions, then all built-in functions defined in the following table shall proceed without raising the <em>invalid</em> floating-point exception when one or more of the operands are NaNs.
+</div>
+<div class="footnote" id="_footnotedef_41">
+<a href="#_footnoteref_41">41</a>. Only if 64-bit integers are supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_int64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_42">
+<a href="#_footnoteref_42">42</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_43">
+<a href="#_footnoteref_43">43</a>. This definition means that the behavior of select and the ternary operator for vector and scalar types is dependent on different interpretations of the bit pattern of <em>c</em>.
+</div>
+<div class="footnote" id="_footnotedef_44">
+<a href="#_footnoteref_44">44</a>. Only if 64-bit integers are supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_int64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_45">
+<a href="#_footnoteref_45">45</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_46">
+<a href="#_footnoteref_46">46</a>. <strong>vload3</strong> and <strong>vload_half3</strong> read (<em>x</em>,<em>y</em>,<em>z</em>) components from address <code>(<em>p</em> + (<em>offset</em> * 3))</code> into a 3-component vector. <strong>vstore3</strong> and <strong>vstore_half3</strong> write (<em>x</em>,<em>y</em>,<em>z</em>) components from a 3-component vector to address <code>(<em>p</em> + (<em>offset</em> * 3))</code>. In addition, <strong>vloada_half3</strong> reads (<em>x</em>,<em>y</em>,<em>z</em>) components from address <code>(<em>p</em> + (<em>offset</em> * 4))</code> into a 3-component vector and <strong>vstorea_half3</strong> writes (<em>x</em>,<em>y</em>,<em>z</em>) components from a 3-component vector to address <code>(<em>p</em> +  (<em>offset</em> * 4))</code>. Whether <strong>vloada_half3</strong> and <strong>vstorea_half3</strong> read/write padding data between the third vector element and the next alignment boundary is implementation defined. The <strong>vloada_</strong> and <strong>vstorea_</strong> variants are provided to access data that is aligned to the size of the vector, and are intended to enable performance on hardware that can take advantage of the increased alignment.
+</div>
+<div class="footnote" id="_footnotedef_47">
+<a href="#_footnoteref_47">47</a>. Refer to the description and restrictions for <a href="#memory-scope"><code>memory_scope</code></a>.
+</div>
+<div class="footnote" id="_footnotedef_48">
+<a href="#_footnoteref_48">48</a>. Only if 64-bit integers are supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_int64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_49">
+<a href="#_footnoteref_49">49</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_50">
+<a href="#_footnoteref_50">50</a>. <strong>async_work_group_copy</strong> and <strong>async_work_group_strided_copy</strong> for 3-component vector types behave as <strong>async_work_group_copy</strong> and <strong>async_work_group_strided_copy</strong> respectively for 4-component vector types.
+</div>
+<div class="footnote" id="_footnotedef_51">
+<a href="#_footnoteref_51">51</a>. The <a href="#C11-spec">C11</a> consume operation is not supported.
+</div>
+<div class="footnote" id="_footnotedef_52">
+<a href="#_footnoteref_52">52</a>. The atomic_long and atomic_ulong types are supported if the <strong>cl_khr_int64_base_atomics</strong> and <strong>cl_khr_int64_extended_atomics</strong> extensions are supported and have been enabled. If this is the case then an OpenCL C 3.0 compiler must also define the <code>__opencl_c_int64</code> feature.
+</div>
+<div class="footnote" id="_footnotedef_53">
+<a href="#_footnoteref_53">53</a>. The <code>atomic_double</code> type is only supported if double precision is supported and the <strong>cl_khr_int64_base_atomics</strong> and <strong>cl_khr_int64_extended_atomics</strong> extensions are supported and have been enabled. If this is the case then an OpenCL C 3.0 compiler must also define the <code>__opencl_c_fp64</code> feature.
+</div>
+<div class="footnote" id="_footnotedef_54">
+<a href="#_footnoteref_54">54</a>. If the device address space is 64-bits, the data types <code>atomic_intptr_t</code>, <code>atomic_uintptr_t</code>, <code>atomic_size_t</code> and <code>atomic_ptrdiff_t</code> are supported if the <strong>cl_khr_int64_base_atomics</strong> and <strong>cl_khr_int64_extended_atomics</strong> extensions are supported and have been enabled.
+</div>
+<div class="footnote" id="_footnotedef_55">
+<a href="#_footnoteref_55">55</a>. This spurious failure enables implementation of compare-and-exchange on a broader class of machines, e.g. load-locked store-conditional machines.
+</div>
+<div class="footnote" id="_footnotedef_56">
+<a href="#_footnoteref_56">56</a>. Only if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_57">
+<a href="#_footnoteref_57">57</a>. Only if 64-bit integers are supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_int64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_58">
+<a href="#_footnoteref_58">58</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_59">
+<a href="#_footnoteref_59">59</a>. Note that <strong>0</strong> is taken as a flag, not as the beginning of a field width.
+</div>
+<div class="footnote" id="_footnotedef_60">
+<a href="#_footnoteref_60">60</a>. The results of all floating conversions of a negative zero, and of negative values that round to zero, include a minus sign.
+</div>
+<div class="footnote" id="_footnotedef_61">
+<a href="#_footnoteref_61">61</a>. Only if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_62">
+<a href="#_footnoteref_62">62</a>. When applied to infinite and NaN values, the <strong>-</strong>, <strong>+</strong>, and <em>space</em> flag characters have their usual meaning; the <strong>#</strong> and <strong>0</strong> flag characters have no effect.
+</div>
+<div class="footnote" id="_footnotedef_63">
+<a href="#_footnoteref_63">63</a>. Binary implementations can choose the hexadecimal digit to the left of the decimal-point character so that subsequent digits align to nibble (4-bit) boundaries.
+</div>
+<div class="footnote" id="_footnotedef_64">
+<a href="#_footnoteref_64">64</a>. No special provisions are made for multibyte characters. The behavior of <strong>printf</strong> with the <strong>s</strong> conversion specifier is undefined if the argument value is not a pointer to a literal string.
+</div>
+<div class="footnote" id="_footnotedef_65">
+<a href="#_footnoteref_65">65</a>. This is similar to the <code>GL_ADDRESS_CLAMP_TO_BORDER</code> addressing mode.
+</div>
+<div class="footnote" id="_footnotedef_66">
+<a href="#_footnoteref_66">66</a>. Note that the built-in function calls to read images with a sampler are not supported for <code>image1d_buffer_t</code> image types.
+</div>
+<div class="footnote" id="_footnotedef_67">
+<a href="#_footnoteref_67">67</a>. Although <code>CL_UNORM_INT_101010_2</code> was added in OpenCL 2.1, because there was no OpenCL C 2.1 this image channel order <a href="#unified-spec">requires</a> OpenCL 3.0.
+</div>
+<div class="footnote" id="_footnotedef_68">
+<a href="#_footnoteref_68">68</a>. Only if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_69">
+<a href="#_footnoteref_69">69</a>. Only if 64-bit integers are supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_int64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_70">
+<a href="#_footnoteref_70">70</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_71">
+<a href="#_footnoteref_71">71</a>. The <code>half</code> scalar and vector types can only be used if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled. The <code>double</code> scalar and vector types can only be used if <code>double</code> precision is supported, e.g. for OpenCL C 3.0 the <code>__opencl_c_fp64</code> feature macro is present.
+</div>
+<div class="footnote" id="_footnotedef_72">
+<a href="#_footnoteref_72">72</a>. The <code>half</code> scalar and vector types can only be used if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled. The <code>double</code> scalar and vector types can only be used if <code>double</code> precision is supported, e.g. for OpenCL C 3.0 the <code>__opencl_c_fp64</code> feature macro is present.
+</div>
+<div class="footnote" id="_footnotedef_73">
+<a href="#_footnoteref_73">73</a>. The <code>half</code> scalar and vector types can only be used if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled. The <code>double</code> scalar and vector types can only be used if <code>double</code> precision is supported, e.g. for OpenCL C 3.0 the <code>__opencl_c_fp64</code> feature macro is present.
+</div>
+<div class="footnote" id="_footnotedef_74">
+<a href="#_footnoteref_74">74</a>. Implementations are not required to honor this flag. Implementations may not schedule kernel launch earlier than the point specified by this flag, however.
+</div>
+<div class="footnote" id="_footnotedef_75">
+<a href="#_footnoteref_75">75</a>. Immediate meaning not side effects resulting from child kernels. The side effects would include stores to <code>global</code> memory and pipe reads and writes.
+</div>
+<div class="footnote" id="_footnotedef_76">
+<a href="#_footnoteref_76">76</a>. This acts as a memory synchronization point between work-items in a work-group and child kernels enqueued by work-items in the work-group.
+</div>
+<div class="footnote" id="_footnotedef_77">
+<a href="#_footnoteref_77">77</a>. Only if 64-bit integers are supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_int64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_78">
+<a href="#_footnoteref_78">78</a>. Only if the <strong>cl_khr_fp16</strong> extension is supported and has been enabled.
+</div>
+<div class="footnote" id="_footnotedef_79">
+<a href="#_footnoteref_79">79</a>. Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the <code>__opencl_c_fp64</code> feature macro.
+</div>
+<div class="footnote" id="_footnotedef_80">
+<a href="#_footnoteref_80">80</a>. Except for the embedded profile where either round to zero or round to nearest rounding mode may be supported for single precision floating-point.
+</div>
+<div class="footnote" id="_footnotedef_81">
+<a href="#_footnoteref_81">81</a>. On some implementations, <strong>powr</strong>() or <strong>pown</strong>() may perform faster than <strong>pow</strong>(). If <em>x</em> is known to be &gt;= 0, consider using <strong>powr</strong>() in place of <strong>pow</strong>(), or if <em>y</em> is known to be an integer, consider using <strong>pown</strong>() in place of <strong>pow</strong>().
+</div>
+<div class="footnote" id="_footnotedef_82">
+<a href="#_footnoteref_82">82</a>. Here <code>TYPE_MIN</code> and <code>TYPE_MIN_EXP</code> should be substituted by constants appropriate to the floating-point type under consideration, such as <code>FLT_MIN</code> and <code>FLT_MIN_EXP</code> for <code>float</code>.
+</div>
+</div>
 <div id="footer">
 <div id="footer-text">
-Version v3.0.1-Provisional<br>
-Last updated 2020-04-26 21:05:33 -0700
+Version v3.0.5<br>
+Last updated 2020-09-29 16:22:41 -0700
 </div>
 </div>
 
diff --git a/specs/3.0-unified/html/OpenCL_Env.html b/specs/3.0-unified/html/OpenCL_Env.html
index e026958..1f40fd5 100644
--- a/specs/3.0-unified/html/OpenCL_Env.html
+++ b/specs/3.0-unified/html/OpenCL_Env.html
@@ -841,9 +841,9 @@
 <h1>The OpenCL<sup>&#8482;</sup> SPIR-V Environment Specification</h1>
 <div class="details">
 <span id="author" class="author">Khronos<sup>&#174;</sup> OpenCL Working Group</span><br>
-<span id="revnumber">version v3.0.1-Provisional,</span>
-<span id="revdate">Mon, 27 Apr 2020 04:09:40 +0000</span>
-<br><span id="revremark">from git branch: master commit: fafc202e2b6a80bd2276596227317696d76e1f63</span>
+<span id="revnumber">version v3.0.5,</span>
+<span id="revdate">Wed, 30 Sep 2020 00:00:00 +0000</span>
+<br><span id="revremark">from git branch: master commit: 4d8a36725aa8af9658ab5cb62fdbf52adb44bcca</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Table of Contents</div>
@@ -859,6 +859,7 @@
 <li><a href="#_image_channel_order_mapping">2.6. Image Channel Order Mapping</a></li>
 <li><a href="#_image_channel_data_type_mapping">2.7. Image Channel Data Type Mapping</a></li>
 <li><a href="#_kernels">2.8. Kernels</a></li>
+<li><a href="#_built_in_variables">2.9. Built-in Variables</a></li>
 </ul>
 </li>
 <li><a href="#required-capabilities">3. Required Capabilities</a>
@@ -951,7 +952,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="introduction">1. Introduction</h2>
+<h2 id="introduction"><a class="anchor" href="#introduction"></a>1. Introduction</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p><a href="#opencl-spec">OpenCL</a> is an open, royalty-free, standard for general
@@ -980,28 +981,10 @@
 OpenCL API who are consuming SPIR-V modules, and for software developers who
 are using SPIR-V modules with the OpenCL API.</p>
 </div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>The OpenCL 3.0 SPIR-V Environment described in this specification is provisional.
-It has been Ratified under the Khronos Intellectual Property Framework, and is being made publicly available to enable review and feedback from the community.</p>
-</div>
-<div class="paragraph">
-<p>If you have feedback please create an issue on <a href="https://github.com/KhronosGroup/OpenCL-Docs/" class="bare">https://github.com/KhronosGroup/OpenCL-Docs/</a></p>
-</div>
-</td>
-</tr>
-</table>
-</div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="common-properties">2. Common Properties</h2>
+<h2 id="common-properties"><a class="anchor" href="#common-properties"></a>2. Common Properties</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes common properties of all OpenCL environments that
@@ -1015,24 +998,24 @@
 version number, as described in the SPIR-V specification.</p>
 </div>
 <div class="sect2">
-<h3 id="_supported_spir_v_versions">2.1. Supported SPIR-V Versions</h3>
+<h3 id="_supported_spir_v_versions"><a class="anchor" href="#_supported_spir_v_versions"></a>2.1. Supported SPIR-V Versions</h3>
 <div class="paragraph">
 <p>An OpenCL environment describes the versions of SPIR-V modules that it
-supports using the <code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION</code> query in OpenCL 2.1 or newer,
-the <code>CL_&#8203;DEVICE_&#8203;ILS_&#8203;WITH_&#8203;VERSION</code> query in OpenCL 3.0 or newer, or the
-<code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION_&#8203;KHR</code> query in the <code>cl_khr_il_program</code> extension.</p>
+supports using the <code>CL_DEVICE_<wbr>IL_<wbr>VERSION</code> query in OpenCL 2.1 or newer,
+the <code>CL_DEVICE_<wbr>ILS_<wbr>WITH_<wbr>VERSION</code> query in OpenCL 3.0 or newer, or the
+<code>CL_DEVICE_<wbr>IL_<wbr>VERSION_<wbr>KHR</code> query in the <code>cl_khr_il_program</code> extension.</p>
 </div>
 <div class="paragraph">
 <p>OpenCL environments that support the <code>cl_khr_il_program</code> extension or
 OpenCL 2.1 must support SPIR-V 1.0 modules.  OpenCL environments that support
 OpenCL 2.2 must support SPIR-V 1.0, 1.1, and 1.2 modules.
-Use the <code>CL_&#8203;DEVICE_&#8203;IL_&#8203;VERSION</code> or <code>CL_&#8203;DEVICE_&#8203;ILS_&#8203;WITH_&#8203;VERSION</code> query
+Use the <code>CL_DEVICE_<wbr>IL_<wbr>VERSION</code> or <code>CL_DEVICE_<wbr>ILS_<wbr>WITH_<wbr>VERSION</code> query
 to determine the versions of SPIR-V modules that are supported by
 OpenCL environments that support OpenCL 3.0.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_extended_instruction_sets">2.2. Extended Instruction Sets</h3>
+<h3 id="_extended_instruction_sets"><a class="anchor" href="#_extended_instruction_sets"></a>2.2. Extended Instruction Sets</h3>
 <div class="paragraph">
 <p>OpenCL environments supporting SPIR-V must support SPIR-V modules that import
 the <strong>OpenCL.std</strong>
@@ -1046,7 +1029,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_source_language_encoding">2.3. Source Language Encoding</h3>
+<h3 id="_source_language_encoding"><a class="anchor" href="#_source_language_encoding"></a>2.3. Source Language Encoding</h3>
 <div class="paragraph">
 <p>If a SPIR-V module represents a program written in OpenCL C, then the
 <em>Source Language</em> operand for the <strong>OpSource</strong> instruction should be
@@ -1070,7 +1053,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_numerical_type_formats">2.4. Numerical Type Formats</h3>
+<h3 id="_numerical_type_formats"><a class="anchor" href="#_numerical_type_formats"></a>2.4. Numerical Type Formats</h3>
 <div class="paragraph">
 <p>For all OpenCL environments, floating-point types are represented and stored
 using <a href="#ieee-754-spec">IEEE-754</a> semantics.
@@ -1078,7 +1061,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_supported_types">2.5. Supported Types</h3>
+<h3 id="_supported_types"><a class="anchor" href="#_supported_types"></a>2.5. Supported Types</h3>
 <div class="paragraph">
 <p>The following types are supported by OpenCL environments.
 Note that some types may require additional capabilities, and may not be
@@ -1090,7 +1073,7 @@
 and pointers declared using <strong>OpTypePointer</strong>.</p>
 </div>
 <div class="sect3">
-<h4 id="_basic_scalar_and_vector_types">2.5.1. Basic Scalar and Vector Types</h4>
+<h4 id="_basic_scalar_and_vector_types"><a class="anchor" href="#_basic_scalar_and_vector_types"></a>2.5.1. Basic Scalar and Vector Types</h4>
 <div class="paragraph">
 <p><strong>OpTypeVoid</strong> is supported.</p>
 </div>
@@ -1119,7 +1102,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_image_related_data_types">2.5.2. Image-Related Data Types</h4>
+<h4 id="_image_related_data_types"><a class="anchor" href="#_image_related_data_types"></a>2.5.2. Image-Related Data Types</h4>
 <div class="paragraph">
 <p>The following table describes the <strong>OpTypeImage</strong> image types supported by
 OpenCL environments:</p>
@@ -1196,7 +1179,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_other_data_types">2.5.3. Other Data Types</h4>
+<h4 id="_other_data_types"><a class="anchor" href="#_other_data_types"></a>2.5.3. Other Data Types</h4>
 <div class="paragraph">
 <p>The following table describes other data types that may be used in an
 OpenCL environment:</p>
@@ -1239,7 +1222,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_image_channel_order_mapping">2.6. Image Channel Order Mapping</h3>
+<h3 id="_image_channel_order_mapping"><a class="anchor" href="#_image_channel_order_mapping"></a>2.6. Image Channel Order Mapping</h3>
 <div class="paragraph">
 <p>The following table describes how the results of the SPIR-V
 <strong>OpImageQueryOrder</strong> instruction correspond to the OpenCL host API image
@@ -1338,7 +1321,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="_image_channel_data_type_mapping">2.7. Image Channel Data Type Mapping</h3>
+<h3 id="_image_channel_data_type_mapping"><a class="anchor" href="#_image_channel_data_type_mapping"></a>2.7. Image Channel Data Type Mapping</h3>
 <div class="paragraph">
 <p>The following table describes how the results of the SPIR-V
 <strong>OpImageQueryFormat</strong> instruction correspond to the OpenCL host API image
@@ -1390,6 +1373,10 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT_101010</code></p></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>UnormInt101010_2</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT_101010_2</code></p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>SignedInt8</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_SIGNED_INT8</code></p></td>
 </tr>
@@ -1425,21 +1412,21 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="_kernels">2.8. Kernels</h3>
+<h3 id="_kernels"><a class="anchor" href="#_kernels"></a>2.8. Kernels</h3>
 <div class="paragraph">
 <p>An <strong>OpFunction</strong> in a SPIR-V module that is identified with <strong>OpEntryPoint</strong>
 defines an OpenCL kernel that may be invoked using the OpenCL host API
 enqueue kernel interfaces.</p>
 </div>
 <div class="sect3">
-<h4 id="_kernel_return_types">2.8.1. Kernel Return Types</h4>
+<h4 id="_kernel_return_types"><a class="anchor" href="#_kernel_return_types"></a>2.8.1. Kernel Return Types</h4>
 <div class="paragraph">
 <p>The <em>Result Type</em> for an <strong>OpFunction</strong> identified with <strong>OpEntryPoint</strong> must be
 <strong>OpTypeVoid</strong>.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_kernel_arguments">2.8.2. Kernel Arguments</h4>
+<h4 id="_kernel_arguments"><a class="anchor" href="#_kernel_arguments"></a>2.8.2. Kernel Arguments</h4>
 <div class="paragraph">
 <p>An <strong>OpFunctionParameter</strong> for an <strong>OpFunction</strong> that is identified with
 <strong>OpEntryPoint</strong> defines an OpenCL kernel argument.
@@ -1531,13 +1518,21 @@
 </div>
 </div>
 </div>
+<div class="sect2">
+<h3 id="_built_in_variables"><a class="anchor" href="#_built_in_variables"></a>2.9. Built-in Variables</h3>
+<div class="paragraph">
+<p>An <strong>OpVariable</strong> in a SPIR-V module with the <strong>BuiltIn</strong> decoration represents
+a built-in variable.
+All built-in variables must be in the <strong>Input</strong> storage class.</p>
+</div>
+</div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="required-capabilities">3. Required Capabilities</h2>
+<h2 id="required-capabilities"><a class="anchor" href="#required-capabilities"></a>3. Required Capabilities</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="required-capabilities-1.0">3.1. SPIR-V 1.0</h3>
+<h3 id="required-capabilities-1.0"><a class="anchor" href="#required-capabilities-1.0"></a>3.1. SPIR-V 1.0</h3>
 <div class="paragraph">
 <p>An OpenCL environment that supports SPIR-V 1.0 must support SPIR-V 1.0
 modules that declare the following capabilities:</p>
@@ -1580,7 +1575,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Device-Side Enqueue (where <code>CL_&#8203;DEVICE_&#8203;DEVICE_&#8203;ENQUEUE_&#8203;SUPPORT</code> is <code>CL_&#8203;TRUE</code>).</p>
+<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Device-Side Enqueue (where <code>CL_DEVICE_<wbr>DEVICE_<wbr>ENQUEUE_<wbr>CAPABILITIES</code> is not <code>0</code>).</p>
 </li>
 </ul>
 </div>
@@ -1590,7 +1585,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting the Generic Address Space (where <code>CL_&#8203;DEVICE_&#8203;GENERIC_&#8203;ADDRESS_&#8203;SPACE_&#8203;SUPPORT</code> is <code>CL_&#8203;TRUE</code>).</p>
+<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting the Generic Address Space (where <code>CL_DEVICE_<wbr>GENERIC_<wbr>ADDRESS_<wbr>SPACE_<wbr>SUPPORT</code> is <code>CL_TRUE</code>).</p>
 </li>
 </ul>
 </div>
@@ -1600,7 +1595,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Subgroups (where <code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code> is not <code>0</code>) or Work Group Collective Functions (where <code>CL_&#8203;DEVICE_&#8203;WORK_&#8203;GROUP_&#8203;COLLECTIVE_&#8203;FUNCTIONS_&#8203;SUPPORT</code> is <code>CL_&#8203;TRUE</code>).</p>
+<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Subgroups (where <code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code> is not <code>0</code>) or Work Group Collective Functions (where <code>CL_DEVICE_<wbr>WORK_<wbr>GROUP_<wbr>COLLECTIVE_<wbr>FUNCTIONS_<wbr>SUPPORT</code> is <code>CL_TRUE</code>).</p>
 </li>
 </ul>
 </div>
@@ -1610,7 +1605,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Pipes (where <code>CL_&#8203;DEVICE_&#8203;PIPE_&#8203;SUPPORT</code> is <code>CL_&#8203;TRUE</code>).</p>
+<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Pipes (where <code>CL_DEVICE_<wbr>PIPE_<wbr>SUPPORT</code> is <code>CL_TRUE</code>).</p>
 </li>
 </ul>
 </div>
@@ -1620,7 +1615,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For devices supporting Images (where <code>CL_&#8203;DEVICE_&#8203;IMAGE_&#8203;SUPPORT</code> is <code>CL_&#8203;TRUE</code>)</p>
+<p>For devices supporting Images (where <code>CL_DEVICE_<wbr>IMAGE_<wbr>SUPPORT</code> is <code>CL_TRUE</code>)</p>
 </li>
 </ul>
 </div>
@@ -1630,7 +1625,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For devices supporting Double Precision Floating-Point (where <code>CL_&#8203;DEVICE_&#8203;DOUBLE_&#8203;FP_&#8203;CONFIG</code> is not <code>0</code>)</p>
+<p>For devices supporting Double Precision Floating-Point (where <code>CL_DEVICE_<wbr>DOUBLE_<wbr>FP_<wbr>CONFIG</code> is not <code>0</code>)</p>
 </li>
 </ul>
 </div>
@@ -1663,7 +1658,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Read-Write Images (where <code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;READ_&#8203;WRITE_&#8203;IMAGE_&#8203;ARGS</code> is not <code>0</code>)</p>
+<p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting Read-Write Images (where <code>CL_DEVICE_<wbr>MAX_<wbr>READ_<wbr>WRITE_<wbr>IMAGE_<wbr>ARGS</code> is not <code>0</code>)</p>
 </li>
 </ul>
 </div>
@@ -1672,7 +1667,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="required-capabilities-1.1">3.2. SPIR-V 1.1</h3>
+<h3 id="required-capabilities-1.1"><a class="anchor" href="#required-capabilities-1.1"></a>3.2. SPIR-V 1.1</h3>
 <div class="paragraph">
 <p>An OpenCL environment supporting SPIR-V 1.1 must support SPIR-V 1.1
 modules that declare the capabilities required for SPIR-V 1.0 modules,
@@ -1689,7 +1684,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p>For OpenCL 2.2 devices, or OpenCL 3.0 devices supporting Subgroups (where <code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code> is not <code>0</code>)</p>
+<p>For OpenCL 2.2 devices, or OpenCL 3.0 devices supporting Subgroups (where <code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code> is not <code>0</code>)</p>
 </li>
 </ul>
 </div>
@@ -1708,7 +1703,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="required-capabilities-1.2">3.3. SPIR-V 1.2</h3>
+<h3 id="required-capabilities-1.2"><a class="anchor" href="#required-capabilities-1.2"></a>3.3. SPIR-V 1.2</h3>
 <div class="paragraph">
 <p>An OpenCL environment supporting SPIR-V 1.2 must support SPIR-V 1.2
 modules that declare the capabilities required for SPIR-V 1.1 modules,
@@ -1721,7 +1716,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="validation-rules">4. Validation Rules</h2>
+<h2 id="validation-rules"><a class="anchor" href="#validation-rules"></a>4. Validation Rules</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The following are a list of validation rules that apply to SPIR-V modules
@@ -1736,10 +1731,10 @@
 <div class="ulist">
 <ul>
 <li>
-<p><strong>Physical32</strong> (for OpenCL devices reporting <code>32</code> for <code>CL_&#8203;DEVICE_&#8203;ADDRESS_&#8203;BITS</code>)</p>
+<p><strong>Physical32</strong> (for OpenCL devices reporting <code>32</code> for <code>CL_DEVICE_<wbr>ADDRESS_<wbr>BITS</code>)</p>
 </li>
 <li>
-<p><strong>Physical64</strong> (for OpenCL devices reporting <code>64</code> for <code>CL_&#8203;DEVICE_&#8203;ADDRESS_&#8203;BITS</code>)</p>
+<p><strong>Physical64</strong> (for OpenCL devices reporting <code>64</code> for <code>CL_DEVICE_<wbr>ADDRESS_<wbr>BITS</code>)</p>
 </li>
 </ul>
 </div>
@@ -1840,7 +1835,7 @@
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
 supporting Work Group Collective Functions (where
-<code>CL_&#8203;DEVICE_&#8203;WORK_&#8203;GROUP_&#8203;COLLECTIVE_&#8203;FUNCTIONS_&#8203;SUPPORT</code> is <code>CL_&#8203;TRUE</code>).</p>
+<code>CL_DEVICE_<wbr>WORK_<wbr>GROUP_<wbr>COLLECTIVE_<wbr>FUNCTIONS_<wbr>SUPPORT</code> is <code>CL_TRUE</code>).</p>
 </li>
 </ul>
 </div>
@@ -1851,7 +1846,7 @@
 <ul>
 <li>
 <p>For OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting
-Subgroups (where <code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code> is not <code>0</code>)</p>
+Subgroups (where <code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code> is not <code>0</code>)</p>
 </li>
 </ul>
 </div>
@@ -1872,7 +1867,7 @@
 <ul>
 <li>
 <p>For OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting
-Subgroups (where <code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code> is not <code>0</code>)</p>
+Subgroups (where <code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code> is not <code>0</code>)</p>
 </li>
 </ul>
 </div>
@@ -1894,8 +1889,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;ALL_&#8203;DEVICES</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>ALL_<wbr>DEVICES</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -1906,8 +1901,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;DEVICE</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>DEVICE</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -1918,8 +1913,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -1930,7 +1925,7 @@
 <ul>
 <li>
 <p>For OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting
-Subgroups (where <code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code> is not <code>0</code>).</p>
+Subgroups (where <code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code> is not <code>0</code>).</p>
 </li>
 </ul>
 </div>
@@ -1941,8 +1936,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;ITEM</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>ITEM</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -1960,8 +1955,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -1972,8 +1967,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;ACQ_&#8203;REL</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>ACQ_<wbr>REL</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -1984,8 +1979,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;SEQ_&#8203;CST</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;FENCE_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>SEQ_<wbr>CST</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>FENCE_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -2006,8 +2001,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;ALL_&#8203;DEVICES</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>ALL_<wbr>DEVICES</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -2018,8 +2013,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;DEVICE</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>DEVICE</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -2030,8 +2025,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;SCOPE_&#8203;WORK_&#8203;GROUP</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>SCOPE_<wbr>WORK_<wbr>GROUP</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -2042,7 +2037,7 @@
 <ul>
 <li>
 <p>For OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices supporting
-Subgroups (where <code>CL_&#8203;DEVICE_&#8203;MAX_&#8203;NUM_&#8203;SUB_&#8203;GROUPS</code> is not <code>0</code>).</p>
+Subgroups (where <code>CL_DEVICE_<wbr>MAX_<wbr>NUM_<wbr>SUB_<wbr>GROUPS</code> is not <code>0</code>).</p>
 </li>
 </ul>
 </div>
@@ -2060,8 +2055,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;RELAXED</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>RELAXED</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -2072,8 +2067,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;ACQ_&#8203;REL</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>ACQ_<wbr>REL</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -2084,8 +2079,8 @@
 <ul>
 <li>
 <p>For OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, or OpenCL 3.0 devices
-supporting <code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;ORDER_&#8203;SEQ_&#8203;CST</code> in
-<code>CL_&#8203;DEVICE_&#8203;ATOMIC_&#8203;MEMORY_&#8203;CAPABILITIES</code>.</p>
+supporting <code>CL_DEVICE_<wbr>ATOMIC_<wbr>ORDER_<wbr>SEQ_<wbr>CST</code> in
+<code>CL_DEVICE_<wbr>ATOMIC_<wbr>MEMORY_<wbr>CAPABILITIES</code>.</p>
 </li>
 </ul>
 </div>
@@ -2102,7 +2097,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="opencl_extensions">5. OpenCL Extensions</h2>
+<h2 id="opencl_extensions"><a class="anchor" href="#opencl_extensions"></a>5. OpenCL Extensions</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>An OpenCL environment may be modified by <a href="#opencl-extension-spec">OpenCL
@@ -2123,7 +2118,7 @@
 Khronos OpenCL extensions require no corresponding SPIR-V extensions.</p>
 </div>
 <div class="sect2">
-<h3 id="_declaring_spir_v_extensions">5.1. Declaring SPIR-V Extensions</h3>
+<h3 id="_declaring_spir_v_extensions"><a class="anchor" href="#_declaring_spir_v_extensions"></a>5.1. Declaring SPIR-V Extensions</h3>
 <div class="paragraph">
 <p>A SPIR-V module declares use of a SPIR-V extension using <strong>OpExtension</strong> and
 the name of the SPIR-V extension.  For example:</p>
@@ -2140,9 +2135,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_full_and_embedded_profile_extensions">5.2. Full and Embedded Profile Extensions</h3>
+<h3 id="_full_and_embedded_profile_extensions"><a class="anchor" href="#_full_and_embedded_profile_extensions"></a>5.2. Full and Embedded Profile Extensions</h3>
 <div class="sect3">
-<h4 id="_cl_khr_3d_image_writes">5.2.1. <code>cl_khr_3d_image_writes</code></h4>
+<h4 id="_cl_khr_3d_image_writes"><a class="anchor" href="#_cl_khr_3d_image_writes"></a>5.2.1. <code>cl_khr_3d_image_writes</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_3d_image_writes</code>,
 then the environment must accept <em>Image</em> operands to <strong>OpImageWrite</strong> that
@@ -2150,7 +2145,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_depth_images">5.2.2. <code>cl_khr_depth_images</code></h4>
+<h4 id="_cl_khr_depth_images"><a class="anchor" href="#_cl_khr_depth_images"></a>5.2.2. <code>cl_khr_depth_images</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_depth_images</code>,
 then the environment must accept modules that declare 2D depth image types
@@ -2171,7 +2166,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_device_enqueue_local_arg_types">5.2.3. <code>cl_khr_device_enqueue_local_arg_types</code></h4>
+<h4 id="_cl_khr_device_enqueue_local_arg_types"><a class="anchor" href="#_cl_khr_device_enqueue_local_arg_types"></a>5.2.3. <code>cl_khr_device_enqueue_local_arg_types</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension
 <code>cl_khr_device_enqueue_local_arg_types</code>, then then environment will allow
@@ -2180,7 +2175,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_fp16">5.2.4. <code>cl_khr_fp16</code></h4>
+<h4 id="_cl_khr_fp16"><a class="anchor" href="#_cl_khr_fp16"></a>5.2.4. <code>cl_khr_fp16</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_fp16</code>, then the
 environment must accept modules that declare the following SPIR-V
@@ -2195,7 +2190,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_fp64">5.2.5. <code>cl_khr_fp64</code></h4>
+<h4 id="_cl_khr_fp64"><a class="anchor" href="#_cl_khr_fp64"></a>5.2.5. <code>cl_khr_fp64</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_fp64</code>, then the
 environment must accept modules that declare the following SPIR-V
@@ -2210,7 +2205,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_gl_depth_images">5.2.6. <code>cl_khr_gl_depth_images</code></h4>
+<h4 id="_cl_khr_gl_depth_images"><a class="anchor" href="#_cl_khr_gl_depth_images"></a>5.2.6. <code>cl_khr_gl_depth_images</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_gl_depth_images</code>,
 then the following Image Channel Orders may additionally be returned by
@@ -2236,7 +2231,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_gl_msaa_sharing">5.2.7. <code>cl_khr_gl_msaa_sharing</code></h4>
+<h4 id="_cl_khr_gl_msaa_sharing"><a class="anchor" href="#_cl_khr_gl_msaa_sharing"></a>5.2.7. <code>cl_khr_gl_msaa_sharing</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_gl_msaa_sharing</code>,
 then the environment must accept modules that declare 2D multi-sampled
@@ -2268,7 +2263,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_int64_base_atomics_and_cl_khr_int64_extended_atomics">5.2.8. <code>cl_khr_int64_base_atomics</code> and <code>cl_khr_int64_extended_atomics</code></h4>
+<h4 id="_cl_khr_int64_base_atomics_and_cl_khr_int64_extended_atomics"><a class="anchor" href="#_cl_khr_int64_base_atomics_and_cl_khr_int64_extended_atomics"></a>5.2.8. <code>cl_khr_int64_base_atomics</code> and <code>cl_khr_int64_extended_atomics</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_int64_base_atomics</code>
 or <code>cl_khr_int64_extended_atomics</code>, then the environment must accept modules
@@ -2292,7 +2287,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_mipmap_image">5.2.9. <code>cl_khr_mipmap_image</code></h4>
+<h4 id="_cl_khr_mipmap_image"><a class="anchor" href="#_cl_khr_mipmap_image"></a>5.2.9. <code>cl_khr_mipmap_image</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_mipmap_image</code>,
 then the environment must accept non-zero optional <strong>Lod</strong> <em>Image Operands</em>
@@ -2318,7 +2313,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_mipmap_image_writes">5.2.10. <code>cl_khr_mipmap_image_writes</code></h4>
+<h4 id="_cl_khr_mipmap_image_writes"><a class="anchor" href="#_cl_khr_mipmap_image_writes"></a>5.2.10. <code>cl_khr_mipmap_image_writes</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_mipmap_image_writes</code>,
 then the environment must accept non-zero optional <strong>Lod</strong> <em>Image Operands</em>
@@ -2338,7 +2333,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_subgroups">5.2.11. <code>cl_khr_subgroups</code></h4>
+<h4 id="_cl_khr_subgroups"><a class="anchor" href="#_cl_khr_subgroups"></a>5.2.11. <code>cl_khr_subgroups</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_subgroups</code>, then
 for all instructions except <strong>OpGroupAsyncCopy</strong> and <strong>OpGroupWaitEvents</strong>
@@ -2364,7 +2359,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_subgroup_named_barrier">5.2.12. <code>cl_khr_subgroup_named_barrier</code></h4>
+<h4 id="_cl_khr_subgroup_named_barrier"><a class="anchor" href="#_cl_khr_subgroup_named_barrier"></a>5.2.12. <code>cl_khr_subgroup_named_barrier</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension
 <code>cl_khr_subgroup_named_barrier</code>, then the environment must accept modules
@@ -2379,7 +2374,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="_cl_khr_spirv_no_integer_wrap_decoration">5.2.13. <code>cl_khr_spirv_no_integer_wrap_decoration</code></h4>
+<h4 id="_cl_khr_spirv_no_integer_wrap_decoration"><a class="anchor" href="#_cl_khr_spirv_no_integer_wrap_decoration"></a>5.2.13. <code>cl_khr_spirv_no_integer_wrap_decoration</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cl_khr_spirv_no_integer_wrap_decoration</code>, then the environment must accept modules that declare use of the extension <code>SPV_KHR_no_integer_wrap_decoration</code> via <strong>OpExtension</strong>.</p>
 </div>
@@ -2389,9 +2384,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_embedded_profile_extensions">5.3. Embedded Profile Extensions</h3>
+<h3 id="_embedded_profile_extensions"><a class="anchor" href="#_embedded_profile_extensions"></a>5.3. Embedded Profile Extensions</h3>
 <div class="sect3">
-<h4 id="_cles_khr_int64">5.3.1. <code>cles_khr_int64</code></h4>
+<h4 id="_cles_khr_int64"><a class="anchor" href="#_cles_khr_int64"></a>5.3.1. <code>cles_khr_int64</code></h4>
 <div class="paragraph">
 <p>If the OpenCL environment supports the extension <code>cles_khr_int64</code>, then the
 environment must accept modules that declare the following SPIR-V
@@ -2409,7 +2404,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="numerical_compliance">6. OpenCL Numerical Compliance</h2>
+<h2 id="numerical_compliance"><a class="anchor" href="#numerical_compliance"></a>6. OpenCL Numerical Compliance</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes features of the <a href="#cpp14-spec">C++14</a> and
@@ -2426,7 +2421,7 @@
 <strong>Float64</strong> capability.</p>
 </div>
 <div class="sect2">
-<h3 id="_rounding_modes">6.1. Rounding Modes</h3>
+<h3 id="_rounding_modes"><a class="anchor" href="#_rounding_modes"></a>6.1. Rounding Modes</h3>
 <div class="paragraph">
 <p>Floating-point calculations may be carried out internally with extra
 precision and then rounded to fit into the destination type.
@@ -2478,7 +2473,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rounding_modes_for_conversions">6.2. Rounding Modes for Conversions</h3>
+<h3 id="_rounding_modes_for_conversions"><a class="anchor" href="#_rounding_modes_for_conversions"></a>6.2. Rounding Modes for Conversions</h3>
 <div class="paragraph">
 <p>Results of the following conversion instructions may include an optional
 <strong>FPRoundingMode</strong> decoration:</p>
@@ -2522,7 +2517,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_out_of_range_conversions">6.3. Out-of-Range Conversions</h3>
+<h3 id="_out_of_range_conversions"><a class="anchor" href="#_out_of_range_conversions"></a>6.3. Out-of-Range Conversions</h3>
 <div class="paragraph">
 <p>When a conversion operand is either greater than the greatest representable
 destination value or less than the least representable destination value,
@@ -2538,7 +2533,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_inf_nan_and_denormalized_numbers">6.4. INF, NaN, and Denormalized Numbers</h3>
+<h3 id="_inf_nan_and_denormalized_numbers"><a class="anchor" href="#_inf_nan_and_denormalized_numbers"></a>6.4. INF, NaN, and Denormalized Numbers</h3>
 <div class="paragraph">
 <p>INFs and NaNs must be supported.
 Support for signaling NaNs is not required.</p>
@@ -2559,7 +2554,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_floating_point_exceptions">6.5. Floating-Point Exceptions</h3>
+<h3 id="_floating_point_exceptions"><a class="anchor" href="#_floating_point_exceptions"></a>6.5. Floating-Point Exceptions</h3>
 <div class="paragraph">
 <p>Floating-point exceptions are disabled in OpenCL.
 The result of a floating-point exception must match the IEEE 754 spec for
@@ -2592,7 +2587,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="relative-error-as-ulps">6.6. Relative Error as ULPs</h3>
+<h3 id="relative-error-as-ulps"><a class="anchor" href="#relative-error-as-ulps"></a>6.6. Relative Error as ULPs</h3>
 <div class="paragraph">
 <p>In this section we discuss the maximum relative error defined as ulp (units
 in the last place).
@@ -2626,7 +2621,7 @@
 result.</p>
 </div>
 <div class="sect3">
-<h4 id="_ulp_values_for_math_instructions_full_profile">6.6.1. ULP Values for Math Instructions - Full Profile</h4>
+<h4 id="_ulp_values_for_math_instructions_full_profile"><a class="anchor" href="#_ulp_values_for_math_instructions_full_profile"></a>6.6.1. ULP Values for Math Instructions - Full Profile</h4>
 <div class="paragraph">
 <p>The ULP Values for Math Instructions table below describes the minimum
 accuracy of floating-point math arithmetic instructions for full profile
@@ -3352,7 +3347,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="_ulp_values_for_math_instructions_embedded_profile">6.6.2. ULP Values for Math Instructions - Embedded Profile</h4>
+<h4 id="_ulp_values_for_math_instructions_embedded_profile"><a class="anchor" href="#_ulp_values_for_math_instructions_embedded_profile"></a>6.6.2. ULP Values for Math Instructions - Embedded Profile</h4>
 <div class="paragraph">
 <p>The ULP Values for Math instructions for Embedded Profile table below
 describes the minimum accuracy of floating-point math arithmetic operations
@@ -4027,7 +4022,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="_ulp_values_for_math_instructions_unsafe_math_optimizations_enabled">6.6.3. ULP Values for Math Instructions - Unsafe Math Optimizations Enabled</h4>
+<h4 id="_ulp_values_for_math_instructions_unsafe_math_optimizations_enabled"><a class="anchor" href="#_ulp_values_for_math_instructions_unsafe_math_optimizations_enabled"></a>6.6.3. ULP Values for Math Instructions - Unsafe Math Optimizations Enabled</h4>
 <div class="paragraph">
 <p>The ULP Values for Math Instructions with Unsafe Math Optimizations table below
 describes the minimum accuracy of commonly used single precision
@@ -4287,7 +4282,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_edge_case_behavior">6.7. Edge Case Behavior</h3>
+<h3 id="_edge_case_behavior"><a class="anchor" href="#_edge_case_behavior"></a>6.7. Edge Case Behavior</h3>
 <div class="paragraph">
 <p>The edge case behavior of the math functions shall conform to sections F.9
 and G.6 of ISO/IEC 9899:TC 2, except where noted below in the
@@ -4295,7 +4290,7 @@
 Beyond ISO/IEC 9899:TC2</a> section</em>.</p>
 </div>
 <div class="sect3">
-<h4 id="additional-requirements-beyond-isoiec-9899tc2">6.7.1. Additional Requirements Beyond ISO/IEC 9899:TC2</h4>
+<h4 id="additional-requirements-beyond-isoiec-9899tc2"><a class="anchor" href="#additional-requirements-beyond-isoiec-9899tc2"></a>6.7.1. Additional Requirements Beyond ISO/IEC 9899:TC2</h4>
 <div class="paragraph">
 <p>All functions that return a NaN should return a quiet NaN.</p>
 </div>
@@ -4764,7 +4759,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="changes-to-isoiec-9899-tc2-behavior">6.7.2. Changes to ISO/IEC 9899: TC2 Behavior</h4>
+<h4 id="changes-to-isoiec-9899-tc2-behavior"><a class="anchor" href="#changes-to-isoiec-9899-tc2-behavior"></a>6.7.2. Changes to ISO/IEC 9899: TC2 Behavior</h4>
 <div class="paragraph">
 <p><strong>OpExtInst</strong> <strong>modf</strong> behaves as though implemented by:</p>
 </div>
@@ -4783,7 +4778,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="edge-case-behavior-in-flush-to-zero-mode">6.7.3. Edge Case Behavior in Flush To Zero Mode</h4>
+<h4 id="edge-case-behavior-in-flush-to-zero-mode"><a class="anchor" href="#edge-case-behavior-in-flush-to-zero-mode"></a>6.7.3. Edge Case Behavior in Flush To Zero Mode</h4>
 <div class="paragraph">
 <p>If denormals are flushed to zero, then a function may return one of four
 results:</p>
@@ -4846,13 +4841,13 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="image_addressing_and_filtering">7. Image Addressing and Filtering</h2>
+<h2 id="image_addressing_and_filtering"><a class="anchor" href="#image_addressing_and_filtering"></a>7. Image Addressing and Filtering</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes how image operations behave in an OpenCL environment.</p>
 </div>
 <div class="sect2">
-<h3 id="image-coordinates">7.1. Image Coordinates</h3>
+<h3 id="image-coordinates"><a class="anchor" href="#image-coordinates"></a>7.1. Image Coordinates</h3>
 <div class="paragraph">
 <p>Let <code>w<sub>t</sub></code>, <code>h<sub>t</sub></code> and <code>d<sub>t</sub></code> be the width, height (or image array size for a 1D image array) and depth (or image array size for a 2D image array) of the image in pixels.
 Let <code>coord.xy</code> (also referred to as <code>(s,t)</code>) or <code>coord.xyz</code> (also referred to as <code>(s,t,r)</code>) be the coordinates specified to an image read instruction (such as <strong>OpImageRead</strong>) or an image write instruction (such as <strong>OpImageWrite</strong>).</p>
@@ -4872,17 +4867,17 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="addressing-and-filter-modes">7.2. Addressing and Filter Modes</h3>
+<h3 id="addressing-and-filter-modes"><a class="anchor" href="#addressing-and-filter-modes"></a>7.2. Addressing and Filter Modes</h3>
 <div class="paragraph">
 <p>After generating the image coordinate <code>(u,v,w)</code> we apply the appropriate addressing and filter mode to generate the appropriate sample locations to read from the image.</p>
 </div>
 <div class="sect3">
-<h4 id="clamp-addressing">7.2.1. Clamp and None Addressing Modes</h4>
+<h4 id="clamp-addressing"><a class="anchor" href="#clamp-addressing"></a>7.2.1. Clamp and None Addressing Modes</h4>
 <div class="paragraph">
 <p>We first describe how the addressing and filter modes are applied to generate the appropriate sample locations to read from the image if the addressing mode is <code>CL_ADDRESS_CLAMP</code>, <code>CL_ADDRESS_CLAMP_TO_EDGE</code>, or <code>CL_ADDRESS_NONE</code>.</p>
 </div>
 <div class="sect4">
-<h5 id="clamp-nearest_filtering">Nearest Filtering</h5>
+<h5 id="clamp-nearest_filtering"><a class="anchor" href="#clamp-nearest_filtering"></a>7.2.1.1. Nearest Filtering</h5>
 <div class="paragraph">
 <p>When the filter mode is <code>CL_FILTER_NEAREST</code>, the result of the image read instruction is the image element that is nearest (in Manhattan distance) to the image element location <code>(i,j,k)</code>.
 The image element location <code>(i,j,k)</code> is computed as:</p>
@@ -4963,7 +4958,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="clamp-linear-filtering">Linear Filtering</h5>
+<h5 id="clamp-linear-filtering"><a class="anchor" href="#clamp-linear-filtering"></a>7.2.1.2. Linear Filtering</h5>
 <div class="paragraph">
 <p>When the filter mode is <code>CL_FILTER_LINEAR</code>, a 2 x 2 square of image elements (for a 2D image) or a 2 x 2 x 2 cube of image elements (for a 3D image is selected).
 This 2 x 2 square or 2 x 2 x 2 cube is obtained as follows.</p>
@@ -5044,12 +5039,12 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="repeat-addressing">7.2.2. Repeat Addressing Mode</h4>
+<h4 id="repeat-addressing"><a class="anchor" href="#repeat-addressing"></a>7.2.2. Repeat Addressing Mode</h4>
 <div class="paragraph">
 <p>We now discuss how the addressing and filter modes are applied to generate the appropriate sample locations to read from the image if the addressing mode is <code>CL_ADDRESS_REPEAT</code>.</p>
 </div>
 <div class="sect4">
-<h5 id="repeat-nearest-filtering">Nearest Filtering</h5>
+<h5 id="repeat-nearest-filtering"><a class="anchor" href="#repeat-nearest-filtering"></a>7.2.2.1. Nearest Filtering</h5>
 <div class="paragraph">
 <p>When filter mode is <code>CL_FILTER_NEAREST</code>, the result of the image read instruction is the image element that is nearest (in Manhattan distance) to the image element location <code>(i,j,k)</code>.
 The image element location <code>(i,j,k)</code> is computed as:</p>
@@ -5078,7 +5073,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="repeat-linear-filtering">Linear Filtering</h5>
+<h5 id="repeat-linear-filtering"><a class="anchor" href="#repeat-linear-filtering"></a>7.2.2.2. Linear Filtering</h5>
 <div class="paragraph">
 <p>When filter mode is <code>CL_FILTER_LINEAR</code>, a 2 x 2 square of image elements for a 2D image or a 2 x 2 x 2 cube of image elements for a 3D image is selected.
 This 2 x 2 square or 2 x 2 x 2 cube is obtained as follows.</p>
@@ -5158,13 +5153,13 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="mirrored-repeat-addressing">7.2.3. Mirrored Repeat Addressing Mode</h4>
+<h4 id="mirrored-repeat-addressing"><a class="anchor" href="#mirrored-repeat-addressing"></a>7.2.3. Mirrored Repeat Addressing Mode</h4>
 <div class="paragraph">
 <p>We now discuss how the addressing and filter modes are applied to generate the appropriate sample locations to read from the image if the addressing mode is <code>CL_ADDRESS_MIRRORED_REPEAT</code>.
 The <code>CL_ADDRESS_MIRRORED_REPEAT</code> addressing mode causes the image to be read as if it is tiled at every integer seam, with the interpretation of the image data flipped at each integer crossing.</p>
 </div>
 <div class="sect4">
-<h5 id="mirrored-repeat-nearest-filtering">Nearest Filtering</h5>
+<h5 id="mirrored-repeat-nearest-filtering"><a class="anchor" href="#mirrored-repeat-nearest-filtering"></a>7.2.3.1. Nearest Filtering</h5>
 <div class="paragraph">
 <p>When filter mode is <code>CL_FILTER_NEAREST</code>, the result of the image read instruction is the image element that is nearest (in Manhattan distance) to the image element location <code>(i,j,k)</code>.
 The image element location <code>(i,j,k)</code> is computed as:</p>
@@ -5196,7 +5191,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="mirrored-repeat-linear-filtering">Linear Filtering</h5>
+<h5 id="mirrored-repeat-linear-filtering"><a class="anchor" href="#mirrored-repeat-linear-filtering"></a>7.2.3.2. Linear Filtering</h5>
 <div class="paragraph">
 <p>When filter mode is <code>CL_FILTER_LINEAR</code>, a 2 x 2 square of image elements for a 2D image or a 2 x 2 x 2 cube of image elements for a 3D image is selected.
 This 2 x 2 square or 2 x 2 x 2 cube is obtained as follows.</p>
@@ -5290,7 +5285,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="precision-of-addressing-and-filter-modes">7.3. Precision of Addressing and Filter Modes</h3>
+<h3 id="precision-of-addressing-and-filter-modes"><a class="anchor" href="#precision-of-addressing-and-filter-modes"></a>7.3. Precision of Addressing and Filter Modes</h3>
 <div class="paragraph">
 <p>If the sampler is specified as using unnormalized coordinates (floating-point or integer coordinates), filter mode set to <code>CL_FILTER_NEAREST</code> and addressing mode set to one of the following modes - <code>CL_ADDRESS_CLAMP</code>, <code>CL_ADDRESS_CLAMP_TO_EDGE</code> or <code>CL_ADDRESS_NONE</code> - the location of the image element in the image given by <code>(i,j,k)</code> will be computed without any loss of precision.</p>
 </div>
@@ -5300,17 +5295,17 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="conversion-rules">7.4. Conversion Rules</h3>
+<h3 id="conversion-rules"><a class="anchor" href="#conversion-rules"></a>7.4. Conversion Rules</h3>
 <div class="paragraph">
 <p>In this section we discuss conversion rules that are applied when reading and writing images in a kernel.</p>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-normalized-integer-channel-data-types">7.4.1. Conversion Rules for Normalized Integer Channel Data Types</h4>
+<h4 id="conversion-rules-for-normalized-integer-channel-data-types"><a class="anchor" href="#conversion-rules-for-normalized-integer-channel-data-types"></a>7.4.1. Conversion Rules for Normalized Integer Channel Data Types</h4>
 <div class="paragraph">
 <p>In this section we discuss converting normalized integer channel data types to half-precision and single-precision floating-point values and vice-versa.</p>
 </div>
 <div class="sect4">
-<h5 id="converting-normalized-integer-channel-data-types-to-half-precision-floating-point-values">Converting Normalized Integer Channel Data Types to Half Precision Floating-point Values</h5>
+<h5 id="converting-normalized-integer-channel-data-types-to-half-precision-floating-point-values"><a class="anchor" href="#converting-normalized-integer-channel-data-types-to-half-precision-floating-point-values"></a>7.4.1.1. Converting Normalized Integer Channel Data Types to Half Precision Floating-point Values</h5>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and <code>CL_UNORM_INT16</code>, image read instructions will convert the channel values from an 8-bit or 16-bit unsigned integer to normalized half precision floating-point values in the range [0.0h &#8230;&#8203; 1.0h].</p>
 </div>
@@ -5440,7 +5435,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="converting-half-precision-floating-point-values-to-normalized-integer-channel-data-types">Converting Half Precision Floating-point Values to Normalized Integer Channel Data Types</h5>
+<h5 id="converting-half-precision-floating-point-values-to-normalized-integer-channel-data-types"><a class="anchor" href="#converting-half-precision-floating-point-values-to-normalized-integer-channel-data-types"></a>7.4.1.2. Converting Half Precision Floating-point Values to Normalized Integer Channel Data Types</h5>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and <code>CL_UNORM_INT16</code>, image write instructions will convert the half precision floating-point color value to an 8-bit or 16-bit unsigned integer.</p>
 </div>
@@ -5552,7 +5547,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="converting-normalized-integer-channel-data-types-to-floating-point-values">Converting Normalized Integer Channel Data Types to Floating-point Values</h5>
+<h5 id="converting-normalized-integer-channel-data-types-to-floating-point-values"><a class="anchor" href="#converting-normalized-integer-channel-data-types-to-floating-point-values"></a>7.4.1.3. Converting Normalized Integer Channel Data Types to Floating-point Values</h5>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and <code>CL_UNORM_INT16</code>, image read instructions will convert the channel values from an 8-bit or 16-bit unsigned integer to normalized floating-point values in the range [0.0f &#8230;&#8203; 1.0f].</p>
 </div>
@@ -5682,7 +5677,7 @@
 </div>
 </div>
 <div class="sect4">
-<h5 id="converting-floating-point-values-to-normalized-integer-channel-data-types">Converting Floating-point Values to Normalized Integer Channel Data Types</h5>
+<h5 id="converting-floating-point-values-to-normalized-integer-channel-data-types"><a class="anchor" href="#converting-floating-point-values-to-normalized-integer-channel-data-types"></a>7.4.1.4. Converting Floating-point Values to Normalized Integer Channel Data Types</h5>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and <code>CL_UNORM_INT16</code>, image write instructions will convert the floating-point color value to an 8-bit or 16-bit unsigned integer.</p>
 </div>
@@ -5818,7 +5813,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-half-precision-floating-point-channel-data-type">7.4.2. Conversion Rules for Half Precision Floating-point Channel Data Type</h4>
+<h4 id="conversion-rules-for-half-precision-floating-point-channel-data-type"><a class="anchor" href="#conversion-rules-for-half-precision-floating-point-channel-data-type"></a>7.4.2. Conversion Rules for Half Precision Floating-point Channel Data Type</h4>
 <div class="paragraph">
 <p>For images created with a channel data type of <code>CL_HALF_FLOAT</code>, the conversions of half to float and half to half are lossless.
 Conversions from float to half round the mantissa using the round to nearest even or round to zero rounding mode.
@@ -5828,7 +5823,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-floating-point-channel-data-type">7.4.3. Conversion Rules for Floating-point Channel Data Type</h4>
+<h4 id="conversion-rules-for-floating-point-channel-data-type"><a class="anchor" href="#conversion-rules-for-floating-point-channel-data-type"></a>7.4.3. Conversion Rules for Floating-point Channel Data Type</h4>
 <div class="paragraph">
 <p>The following rules apply for reading and writing images created with channel data type of <code>CL_FLOAT</code>.</p>
 </div>
@@ -5847,7 +5842,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-signed-and-unsigned-8-bit-16-bit-and-32-bit-integer-channel-data-types">7.4.4. Conversion Rules for Signed and Unsigned 8-bit, 16-bit and 32-bit Integer Channel Data Types</h4>
+<h4 id="conversion-rules-for-signed-and-unsigned-8-bit-16-bit-and-32-bit-integer-channel-data-types"><a class="anchor" href="#conversion-rules-for-signed-and-unsigned-8-bit-16-bit-and-32-bit-integer-channel-data-types"></a>7.4.4. Conversion Rules for Signed and Unsigned 8-bit, 16-bit and 32-bit Integer Channel Data Types</h4>
 <div class="paragraph">
 <p>For images created with image channel data type of <code>CL_SIGNED_INT8</code>, <code>CL_SIGNED_INT16</code> and <code>CL_SIGNED_INT32</code>, image read instructions will return the unmodified integer values stored in the image at specified location.</p>
 </div>
@@ -5914,7 +5909,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="conversion-rules-for-srgba-and-sbgra-images">7.4.5. Conversion Rules for sRGBA and sBGRA Images</h4>
+<h4 id="conversion-rules-for-srgba-and-sbgra-images"><a class="anchor" href="#conversion-rules-for-srgba-and-sbgra-images"></a>7.4.5. Conversion Rules for sRGBA and sBGRA Images</h4>
 <div class="paragraph">
 <p>Standard RGB data, which roughly displays colors in a linear ramp of luminosity levels such that an average observer, under average viewing conditions, can view them as perceptually equal steps on an average display.
 All 0s maps to 0.0f, and all 1s maps to 1.0f.
@@ -6025,7 +6020,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="selecting-an-image-from-an-image-array">7.5. Selecting an Image from an Image Array</h3>
+<h3 id="selecting-an-image-from-an-image-array"><a class="anchor" href="#selecting-an-image-from-an-image-array"></a>7.5. Selecting an Image from an Image Array</h3>
 <div class="paragraph">
 <p>Let <code>(u,v,w)</code> represent the unnormalized image coordinate values for reading from and/or writing to a 2D image in a 2D image array.</p>
 </div>
@@ -6072,7 +6067,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_data_format_for_reading_and_writing_images">7.6. Data Format for Reading and Writing Images</h3>
+<h3 id="_data_format_for_reading_and_writing_images"><a class="anchor" href="#_data_format_for_reading_and_writing_images"></a>7.6. Data Format for Reading and Writing Images</h3>
 <div class="paragraph">
 <p>This section describes how image element data is returned by an
 image read instruction or passed as the <em>Texel</em> data that is
@@ -6195,7 +6190,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="_sampled_and_sampler_less_reads">7.7. Sampled and Sampler-less Reads</h3>
+<h3 id="_sampled_and_sampler_less_reads"><a class="anchor" href="#_sampled_and_sampler_less_reads"></a>7.7. Sampled and Sampler-less Reads</h3>
 <div class="paragraph">
 <p>SPIR-V instructions that read from an image without a sampler (such as <strong>OpImageRead</strong>) behave exactly the same as the corresponding image read instruction with a sampler that has <em>Sampler Filter Mode</em> set to <strong>Nearest</strong>, <strong>Non-Normalized</strong> coordinates, and <em>Sampler Addressing Mode</em> set to <strong>None</strong>.</p>
 </div>
@@ -6208,7 +6203,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="references">8. Normative References</h2>
+<h2 id="references"><a class="anchor" href="#references"></a>8. Normative References</h2>
 <div class="sectionbody">
 <div class="olist arabic">
 <ol class="arabic">
@@ -6274,8 +6269,8 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version v3.0.1-Provisional<br>
-Last updated 2020-04-26 21:05:33 -0700
+Version v3.0.5<br>
+Last updated 2020-09-28 14:46:56 -0700
 </div>
 </div>
 
diff --git a/specs/3.0-unified/html/OpenCL_Ext.html b/specs/3.0-unified/html/OpenCL_Ext.html
index 3aa1239..956f4f3 100644
--- a/specs/3.0-unified/html/OpenCL_Ext.html
+++ b/specs/3.0-unified/html/OpenCL_Ext.html
@@ -841,9 +841,9 @@
 <h1>The OpenCL<sup>&#8482;</sup> Extension Specification</h1>
 <div class="details">
 <span id="author" class="author">Khronos<sup>&#174;</sup> OpenCL Working Group</span><br>
-<span id="revnumber">version v3.0.1-Provisional,</span>
-<span id="revdate">Mon, 27 Apr 2020 04:09:41 +0000</span>
-<br><span id="revremark">from git branch: master commit: fafc202e2b6a80bd2276596227317696d76e1f63</span>
+<span id="revnumber">version v3.0.5,</span>
+<span id="revdate">Wed, 30 Sep 2020 00:00:00 +0000</span>
+<br><span id="revremark">from git branch: master commit: 4d8a36725aa8af9658ab5cb62fdbf52adb44bcca</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Table of Contents</div>
@@ -883,7 +883,8 @@
 <li><a href="#cl_khr_subgroup_named_barrier">33. Named Barriers for Subgroups</a></li>
 <li><a href="#cl_khr_extended_async_copies">34. Extended Async Copies (Provisional)</a></li>
 <li><a href="#cl_khr_async_work_group_copy_fence">35. Async Work Group Copy Fence (Provisional)</a></li>
-<li><a href="#spirv_extensions">36. Extensions to the OpenCL SPIR-V Environment</a></li>
+<li><a href="#cl_khr_device_uuid">36. Unique Device Identifiers</a></li>
+<li><a href="#spirv_extensions">37. Extensions to the OpenCL SPIR-V Environment</a></li>
 <li><a href="#_extensions_promoted_to_core_features">Appendix A: Extensions Promoted to Core Features</a></li>
 <li><a href="#_deprecated_extensions">Appendix B: Deprecated Extensions</a></li>
 <li><a href="#_quick_reference">Appendix C: Quick Reference</a></li>
@@ -938,7 +939,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="extensions-overview">1. Extensions Overview</h2>
+<h2 id="extensions-overview"><a class="anchor" href="#extensions-overview"></a>1. Extensions Overview</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This document describes the list of optional features supported by OpenCL.
@@ -963,7 +964,7 @@
 but that are unable to support the newer core OpenCL version.</p>
 </div>
 <div class="sect2">
-<h3 id="naming-convention-for-optional-extensions">1.1. Naming Convention for Optional Extensions</h3>
+<h3 id="naming-convention-for-optional-extensions"><a class="anchor" href="#naming-convention-for-optional-extensions"></a>1.1. Naming Convention for Optional Extensions</h3>
 <div class="paragraph">
 <p>OpenCL extensions approved by the OpenCL working group use the following
 naming convention:</p>
@@ -1020,7 +1021,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="compiler-directives-for-optional-extensions">1.2. Compiler Directives for Optional Extensions</h3>
+<h3 id="compiler-directives-for-optional-extensions"><a class="anchor" href="#compiler-directives-for-optional-extensions"></a>1.2. Compiler Directives for Optional Extensions</h3>
 <div class="paragraph">
 <p>The <strong>#pragma OPENCL EXTENSION</strong> directive controls the behavior of the OpenCL
 compiler with respect to extensions.
@@ -1120,7 +1121,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="getting-opencl-api-extension-function-pointers">1.3. Getting OpenCL API Extension Function Pointers</h3>
+<h3 id="getting-opencl-api-extension-function-pointers"><a class="anchor" href="#getting-opencl-api-extension-function-pointers"></a>1.3. Getting OpenCL API Extension Function Pointers</h3>
 <div class="paragraph">
 <p>The function
 </p>
@@ -1231,10 +1232,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_icd-opencl">2. Installable Client Drivers</h2>
+<h2 id="cl_khr_icd-opencl"><a class="anchor" href="#cl_khr_icd-opencl"></a>2. Installable Client Drivers</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_icd-overview">2.1. Overview</h3>
+<h3 id="cl_khr_icd-overview"><a class="anchor" href="#cl_khr_icd-overview"></a>2.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes a platform extension which defines a simple mechanism
 through which the Khronos OpenCL installable client driver loader (ICD
@@ -1251,9 +1252,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information">2.2. General information</h3>
+<h3 id="_general_information"><a class="anchor" href="#_general_information"></a>2.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history">2.2.1. Version history</h4>
+<h4 id="_version_history"><a class="anchor" href="#_version_history"></a>2.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -1278,7 +1279,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-inferring-vendors-from-function-call-arguments">2.3. Inferring Vendors from Function Call Arguments</h3>
+<h3 id="cl_khr_icd-inferring-vendors-from-function-call-arguments"><a class="anchor" href="#cl_khr_icd-inferring-vendors-from-function-call-arguments"></a>2.3. Inferring Vendors from Function Call Arguments</h3>
 <div class="paragraph">
 <p>At every OpenCL function call, the ICD Loader infers the vendor ICD function
 to call from the arguments to the function.
@@ -1313,7 +1314,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-icd-data">2.4. ICD Data</h3>
+<h3 id="cl_khr_icd-icd-data"><a class="anchor" href="#cl_khr_icd-icd-data"></a>2.4. ICD Data</h3>
 <div class="paragraph">
 <p>A Vendor ICD is defined by two pieces of data:</p>
 </div>
@@ -1334,7 +1335,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-icd-loader-vendor-enumeration-on-windows">2.5. ICD Loader Vendor Enumeration on Windows</h3>
+<h3 id="cl_khr_icd-icd-loader-vendor-enumeration-on-windows"><a class="anchor" href="#cl_khr_icd-icd-loader-vendor-enumeration-on-windows"></a>2.5. ICD Loader Vendor Enumeration on Windows</h3>
 <div class="paragraph">
 <p>To enumerate Vendor ICDs on Windows, the ICD Loader will first
 scan for REG_SZ string values in the "Display Adapter" and
@@ -1417,7 +1418,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-icd-loader-vendor-enumeration-on-linux">2.6. ICD Loader Vendor Enumeration on Linux</h3>
+<h3 id="cl_khr_icd-icd-loader-vendor-enumeration-on-linux"><a class="anchor" href="#cl_khr_icd-icd-loader-vendor-enumeration-on-linux"></a>2.6. ICD Loader Vendor Enumeration on Linux</h3>
 <div class="paragraph">
 <p>To enumerate vendor ICDs on Linux, the ICD Loader scans the files in the
 path <code>/etc/OpenCL/vendors</code>.
@@ -1449,7 +1450,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-icd-loader-vendor-enumeration-on-android">2.7. ICD Loader Vendor Enumeration on Android</h3>
+<h3 id="cl_khr_icd-icd-loader-vendor-enumeration-on-android"><a class="anchor" href="#cl_khr_icd-icd-loader-vendor-enumeration-on-android"></a>2.7. ICD Loader Vendor Enumeration on Android</h3>
 <div class="paragraph">
 <p>To enumerate vendor ICDs on Android, the ICD Loader scans the files in the
 path <code>/system/vendor/Khronos/OpenCL/vendors</code>.
@@ -1481,7 +1482,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-adding-a-vendor-library">2.8. Adding a Vendor Library</h3>
+<h3 id="cl_khr_icd-adding-a-vendor-library"><a class="anchor" href="#cl_khr_icd-adding-a-vendor-library"></a>2.8. Adding a Vendor Library</h3>
 <div class="paragraph">
 <p>Upon successfully loading a Vendor ICD&#8217;s library, the ICD Loader queries the
 following functions from the library: <strong>clIcdGetPlatformIDsKHR</strong>,
@@ -1505,7 +1506,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-new-procedures-and-functions">2.9. New Procedures and Functions</h3>
+<h3 id="cl_khr_icd-new-procedures-and-functions"><a class="anchor" href="#cl_khr_icd-new-procedures-and-functions"></a>2.9. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_int clIcdGetPlatformIDsKHR(cl_uint num_entries,
@@ -1515,7 +1516,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-new-tokens">2.10. New Tokens</h3>
+<h3 id="cl_khr_icd-new-tokens"><a class="anchor" href="#cl_khr_icd-new-tokens"></a>2.10. New Tokens</h3>
 <div class="paragraph">
 <p>Accepted as <em>param_name</em> to the function <strong>clGetPlatformInfo</strong>:</p>
 </div>
@@ -1534,7 +1535,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-additions-to-chapter-4">2.11. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_icd-additions-to-chapter-4"><a class="anchor" href="#cl_khr_icd-additions-to-chapter-4"></a>2.11. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>In <em>section 4.1</em>, replace the description of the return values of
 <strong>clGetPlatformIDs</strong> with:</p>
@@ -1616,7 +1617,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-source-code">2.12. Source Code</h3>
+<h3 id="cl_khr_icd-source-code"><a class="anchor" href="#cl_khr_icd-source-code"></a>2.12. Source Code</h3>
 <div class="paragraph">
 <p>The official source for the ICD loader is available on github, at:</p>
 </div>
@@ -1629,7 +1630,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_icd-issues">2.13. Issues</h3>
+<h3 id="cl_khr_icd-issues"><a class="anchor" href="#cl_khr_icd-issues"></a>2.13. Issues</h3>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
@@ -1704,7 +1705,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_byte_addressable_store">3. Byte Addressable Stores</h2>
+<h2 id="cl_khr_byte_addressable_store"><a class="anchor" href="#cl_khr_byte_addressable_store"></a>3. Byte Addressable Stores</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_byte_addressable_store</strong> extension.
@@ -1715,9 +1716,9 @@
 <p>This extension became a core feature in OpenCL 1.1.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_2">3.1. General information</h3>
+<h3 id="_general_information_2"><a class="anchor" href="#_general_information_2"></a>3.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_2">3.1.1. Version history</h4>
+<h4 id="_version_history_2"><a class="anchor" href="#_version_history_2"></a>3.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -1744,7 +1745,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_3d_image_writes">4. Writing to 3D Image Objects</h2>
+<h2 id="cl_khr_3d_image_writes"><a class="anchor" href="#cl_khr_3d_image_writes"></a>4. Writing to 3D Image Objects</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_3d_image_writes</strong> extension.</p>
@@ -1756,9 +1757,9 @@
 <p>This extension became a core feature in OpenCL 2.0.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_3">4.1. General information</h3>
+<h3 id="_general_information_3"><a class="anchor" href="#_general_information_3"></a>4.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_3">4.1.1. Version history</h4>
+<h4 id="_version_history_3"><a class="anchor" href="#_version_history_3"></a>4.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -1836,7 +1837,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_fp16">5. Half Precision Floating-Point</h2>
+<h2 id="cl_khr_fp16"><a class="anchor" href="#cl_khr_fp16"></a>5. Half Precision Floating-Point</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_fp16</strong> extension.
@@ -1844,9 +1845,9 @@
 types that can be used for arithmetic operations, conversions etc.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_4">5.1. General information</h3>
+<h3 id="_general_information_4"><a class="anchor" href="#_general_information_4"></a>5.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_4">5.1.1. Version history</h4>
+<h4 id="_version_history_4"><a class="anchor" href="#_version_history_4"></a>5.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -1871,7 +1872,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_fp16-additions-to-chapter-6-of-the-opencl-2.0-specification">5.2. Additions to Chapter 6 of the OpenCL 2.0 C Specification</h3>
+<h3 id="cl_khr_fp16-additions-to-chapter-6-of-the-opencl-2.0-specification"><a class="anchor" href="#cl_khr_fp16-additions-to-chapter-6-of-the-opencl-2.0-specification"></a>5.2. Additions to Chapter 6 of the OpenCL 2.0 C Specification</h3>
 <div class="paragraph">
 <p>The list of built-in scalar, and vector data types defined in <em>tables 6.1</em>,
 and <em>6.2</em> are extended to include the following:</p>
@@ -1962,7 +1963,7 @@
 indicating the literal is typed as a half.</p>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-conversions">5.2.1. Conversions</h4>
+<h4 id="cl_khr_fp16-conversions"><a class="anchor" href="#cl_khr_fp16-conversions"></a>5.2.1. Conversions</h4>
 <div class="paragraph">
 <p>The implicit conversion rules specified in <em>section 6.2.1</em> now include the
 <code>half</code> scalar and <code>halfn</code> vector data types.</p>
@@ -1982,7 +1983,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-math-functions">5.2.2. Math Functions</h4>
+<h4 id="cl_khr_fp16-math-functions"><a class="anchor" href="#cl_khr_fp16-math-functions"></a>5.2.2. Math Functions</h4>
 <div class="paragraph">
 <p>The built-in math functions defined in <em>table 6.8</em> (also listed below) are
 extended to include appropriate versions of functions that take <code>half</code> and
@@ -2223,7 +2224,7 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>mad</strong> (gentype <em>a</em>, gentype <em>b</em>, gentype <em>c</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>mad</strong> computes <em>a</em> * <em>b</em> + <em>c</em>.
   The function may compute <em>a</em> * <em>b</em> + <em>c</em> with reduced accuracy
-  in the embedded profile.  See the SPIR-V OpenCL environment specification
+  in the embedded profile.  See the OpenCL SPIR-V Environment Specification
   for details. On some hardware the mad instruction may provide better
   performance than expanded computation of <em>a</em> * <em>b</em> + <em>c</em>.</p>
 <p class="tableblock">  Note: For some usages, e.g. <strong>mad</strong>(a, b, -a*b), the half precision
@@ -2533,7 +2534,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-common-functions">5.2.3. Common Functions</h4>
+<h4 id="cl_khr_fp16-common-functions"><a class="anchor" href="#cl_khr_fp16-common-functions"></a>5.2.3. Common Functions</h4>
 <div class="paragraph">
 <p>The built-in common functions defined in <em>table 6.12</em> (also listed below)
 are extended to include appropriate versions of functions that take <code>half</code>
@@ -2624,7 +2625,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-geometric-functions">5.2.4. Geometric Functions</h4>
+<h4 id="cl_khr_fp16-geometric-functions"><a class="anchor" href="#cl_khr_fp16-geometric-functions"></a>5.2.4. Geometric Functions</h4>
 <div class="paragraph">
 <p>The built-in geometric functions defined in <em>table 6.13</em> (also listed below)
 are extended to include appropriate versions of functions that take <code>half</code>
@@ -2677,7 +2678,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-relational-functions">5.2.5. Relational Functions</h4>
+<h4 id="cl_khr_fp16-relational-functions"><a class="anchor" href="#cl_khr_fp16-relational-functions"></a>5.2.5. Relational Functions</h4>
 <div class="paragraph">
 <p>The scalar and vector relational functions described in <em>table 6.14</em> are
 extended to include versions that take <code>half</code>, <code>half2</code>, <code>half3</code>, <code>half4</code>,
@@ -2826,7 +2827,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-vector-data-load-and-store-functions">5.2.6. Vector Data Load and Store Functions</h4>
+<h4 id="cl_khr_fp16-vector-data-load-and-store-functions"><a class="anchor" href="#cl_khr_fp16-vector-data-load-and-store-functions"></a>5.2.6. Vector Data Load and Store Functions</h4>
 <div class="paragraph">
 <p>The vector data load (<strong>vload<em>n</em></strong>) and store (<strong>vstore<em>n</em></strong>) functions
 described in <em>table 6.13</em> (also listed below) are extended to include
@@ -2863,8 +2864,8 @@
 <p class="tableblock">  gentype<em>n</em> <strong>vload<em>n</em></strong>(size_t <em>offset</em>, const gentype *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return sizeof (gentype<em>n</em>) bytes of data read from address
   (<em>p</em> + (<em>offset * n</em>)).
-  The read address computed as (<em>p</em> + (<em>offset * n</em>)) must be 16-bit
-  aligned.</p></td>
+  If gentype is half, the read address computed as (<em>p</em> + (<em>offset * n</em>))
+  must be 16-bit aligned.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, __global gentype *<em>p</em>)<br>
@@ -2875,14 +2876,14 @@
 <p class="tableblock">  void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, gentype *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Write sizeof (gentype<em>n</em>) bytes given by <em>data</em> to address
   (<em>p</em> + (<em>offset * n</em>)).
-  The write address computed as (<em>p</em> + (<em>offset * n</em>)) must be 16-bit
-  aligned.</p></td>
+  If gentype is half, the write address computed as (<em>p</em> + (<em>offset * n</em>))
+  must be 16-bit aligned.</p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-async-copies-from-global-to-local-memory-local-to-global-memory-and-prefetch">5.2.7. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</h4>
+<h4 id="cl_khr_fp16-async-copies-from-global-to-local-memory-local-to-global-memory-and-prefetch"><a class="anchor" href="#cl_khr_fp16-async-copies-from-global-to-local-memory-local-to-global-memory-and-prefetch"></a>5.2.7. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</h4>
 <div class="paragraph">
 <p>The OpenCL C programming language implements the following functions that
 provide asynchronous copies between global and local memory and a prefetch
@@ -2994,14 +2995,14 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-image-read-and-write-functions">5.2.8. Image Read and Write Functions</h4>
+<h4 id="cl_khr_fp16-image-read-and-write-functions"><a class="anchor" href="#cl_khr_fp16-image-read-and-write-functions"></a>5.2.8. Image Read and Write Functions</h4>
 <div class="paragraph">
 <p>The image read and write functions defined in <em>tables 6.23</em>, <em>6.24</em> and
 <em>6.25</em> are extended to support image color values that are a <code>half</code> type.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_built_in_image_read_functions">5.2.9. Built-in Image Read Functions</h4>
+<h4 id="_built_in_image_read_functions"><a class="anchor" href="#_built_in_image_read_functions"></a>5.2.9. Built-in Image Read Functions</h4>
 <table class="tableblock frame-all grid-all stretch">
 <caption class="title">Table 8. <em>Half Precision Built-in Image Read Functions</em></caption>
 <colgroup>
@@ -3181,7 +3182,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="_built_in_image_sampler_less_read_functions">5.2.10. Built-in Image Sampler-less Read Functions</h4>
+<h4 id="_built_in_image_sampler_less_read_functions"><a class="anchor" href="#_built_in_image_sampler_less_read_functions"></a>5.2.10. Built-in Image Sampler-less Read Functions</h4>
 <div class="paragraph">
 <p><em>aQual</em> in Table 6.24 refers to one of the access qualifiers.
 For sampler-less read functions this may be <em>read_only</em> or <em>read_write</em>.</p>
@@ -3301,7 +3302,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="_built_in_image_write_functions">5.2.11. Built-in Image Write Functions</h4>
+<h4 id="_built_in_image_write_functions"><a class="anchor" href="#_built_in_image_write_functions"></a>5.2.11. Built-in Image Write Functions</h4>
 <div class="paragraph">
 <p><em>aQual</em> in Table 6.25 refers to one of the access qualifiers.
 For write functions this may be <em>write_only</em> or <em>read_write</em>.</p>
@@ -3439,7 +3440,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-ieee754-compliance">5.2.12. IEEE754 Compliance</h4>
+<h4 id="cl_khr_fp16-ieee754-compliance"><a class="anchor" href="#cl_khr_fp16-ieee754-compliance"></a>5.2.12. IEEE754 Compliance</h4>
 <div class="paragraph">
 <p>The following table entry describes the additions to <em>table 4.3,</em> which
 allows applications to query the configuration information using
@@ -3482,7 +3483,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-rounding-modes">5.2.13. Rounding Modes</h4>
+<h4 id="cl_khr_fp16-rounding-modes"><a class="anchor" href="#cl_khr_fp16-rounding-modes"></a>5.2.13. Rounding Modes</h4>
 <div class="paragraph">
 <p>If CL_FP_ROUND_TO_NEAREST is supported, the default rounding mode for
 half-precision floating-point operations will be round to nearest even;
@@ -3502,7 +3503,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp16-relative-error-as-ulps">5.2.14. Relative Error as ULPs</h4>
+<h4 id="cl_khr_fp16-relative-error-as-ulps"><a class="anchor" href="#cl_khr_fp16-relative-error-as-ulps"></a>5.2.14. Relative Error as ULPs</h4>
 <div class="paragraph">
 <p>In this section we discuss the maximum relative error defined as <em>ulp</em>
 (units in the last place).</p>
@@ -3971,19 +3972,283 @@
 </div>
 </div>
 </div>
+<div class="sect2">
+<h3 id="cl_khr_fp16-additions-to-chapter-8-of-the-opencl-2.0-specification"><a class="anchor" href="#cl_khr_fp16-additions-to-chapter-8-of-the-opencl-2.0-specification"></a>5.3. Additions to Chapter 8 of the OpenCL 2.0 C Specification</h3>
+<div class="paragraph">
+<p>Add new sub-sections to <em>section 8.3.1. Conversion rules for normalized integer channel data types</em>:</p>
+</div>
+<div class="sect3">
+<h4 id="cl_khr_fp16-converting-normalized-integer-channel-data-types-to-floating-point-values"><a class="anchor" href="#cl_khr_fp16-converting-normalized-integer-channel-data-types-to-floating-point-values"></a>5.3.1. Converting normalized integer channel data types to half precision floating-point values</h4>
+<div class="paragraph">
+<p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and
+<code>CL_UNORM_INT16</code>, <strong>read_imagef</strong> will convert the channel values from an
+8-bit or 16-bit unsigned integer to normalized half precision
+floating-point values in the range [<code>0.0h</code>, <code>1.0h</code>].</p>
+</div>
+<div class="paragraph">
+<p>For images created with image channel data type of <code>CL_SNORM_INT8</code> and
+<code>CL_SNORM_INT16</code>, <strong>read_imagef</strong> will convert the channel values from an
+8-bit or 16-bit signed integer to normalized half precision floating-point
+values in the range [<code>-1.0h</code>, <code>1.0h</code>].</p>
+</div>
+<div class="paragraph">
+<p>These conversions are performed as follows:</p>
+</div>
+<div class="paragraph">
+<p><code>CL_UNORM_INT8</code> (8-bit unsigned integer) → <code>half</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>normalized <code>half</code> value = <code>round_to_half(c / 255)</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>CL_UNORM_INT_101010</code> (10-bit unsigned integer) → <code>half</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>normalized <code>half</code> value = <code>round_to_half(c / 1023)</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>CL_UNORM_INT16</code> (16-bit unsigned integer) → <code>half</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>normalized <code>half</code> value = <code>round_to_half(c / 65535)</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>CL_SNORM_INT8</code> (8-bit signed integer) → <code>half</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>normalized <code>half</code> value = <code>max(-1.0h, round_to_half(c / 127))</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>CL_SNORM_INT16</code> (16-bit signed integer) → <code>half</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>normalized <code>half</code> value = <code>max(-1.0h, round_to_half(c / 32767))</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The accuracy of the above conversions must be &lt;= 1.5 ulp except for the
+following cases.</p>
+</div>
+<div class="paragraph">
+<p>For <code>CL_UNORM_INT8</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>0 must convert to <code>0.0h</code> and</p>
+</li>
+<li>
+<p>255 must convert to <code>1.0h</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For <code>CL_UNORM_INT_101010</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>0 must convert to <code>0.0h</code> and</p>
+</li>
+<li>
+<p>1023 must convert to <code>1.0h</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For <code>CL_UNORM_INT16</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>0 must convert to <code>0.0h</code> and</p>
+</li>
+<li>
+<p>65535 must convert to <code>1.0h</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For <code>CL_SNORM_INT8</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>-128 and -127 must convert to <code>-1.0h</code>,</p>
+</li>
+<li>
+<p>0 must convert to <code>0.0h</code> and</p>
+</li>
+<li>
+<p>127 must convert to <code>1.0h</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For <code>CL_SNORM_INT16</code></p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>-32768 and -32767 must convert to <code>-1.0h</code>,</p>
+</li>
+<li>
+<p>0 must convert to <code>0.0h</code> and</p>
+</li>
+<li>
+<p>32767 must convert to <code>1.0h</code></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="cl_khr_fp16-converting-floating-point-values-to-normalized-integer-channel-data-types"><a class="anchor" href="#cl_khr_fp16-converting-floating-point-values-to-normalized-integer-channel-data-types"></a>5.3.2. Converting half precision floating-point values to normalized integer channel data types</h4>
+<div class="paragraph">
+<p>For images created with image channel data type of <code>CL_UNORM_INT8</code> and
+<code>CL_UNORM_INT16</code>, <strong>write_imagef</strong> will convert the floating-point color value
+to an 8-bit or 16-bit unsigned integer.</p>
+</div>
+<div class="paragraph">
+<p>For images created with image channel data type of <code>CL_SNORM_INT8</code> and
+<code>CL_SNORM_INT16</code>, <strong>write_imagef</strong> will convert the floating-point color value
+to an 8-bit or 16-bit signed integer.</p>
+</div>
+<div class="paragraph">
+<p>The preferred conversion uses the round to nearest even (<code>_rte</code>) rounding
+mode, but OpenCL implementations may choose to approximate the rounding mode
+used in the conversions described below.
+When approximate rounding is used instead of the preferred rounding,
+the result of the conversion must satisfy the bound given below.</p>
+</div>
+<div class="paragraph">
+<p><code>half</code> → <code>CL_UNORM_INT8</code> (8-bit unsigned integer)</p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>Let f<sub>exact</sub> = <strong>max</strong>(<code>0</code>, <strong>min</strong>(<code>f * 255</code>, <code>255</code>))</p>
+</li>
+<li>
+<p>Let f<sub>preferred</sub> = <strong>convert_uchar_sat_rte</strong>(<code>f * 255.0f</code>)</p>
+</li>
+<li>
+<p>Let f<sub>approx</sub> = <strong>convert_uchar_sat_&lt;impl-rounding-mode&gt;</strong>(<code>f * 255.0f</code>)</p>
+</li>
+<li>
+<p><strong>fabs</strong>(f<sub>exact</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>half</code> → <code>CL_UNORM_INT_101010</code> (10-bit unsigned integer)</p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>Let f<sub>exact</sub> = <strong>max</strong>(<code>0</code>, <strong>min</strong>(<code>f * 1023</code>, <code>1023</code>))</p>
+</li>
+<li>
+<p>Let f<sub>preferred</sub> = <strong>min</strong>(<strong>convert_ushort_sat_rte</strong>(<code>f * 1023.0f</code>), <code>1023</code>)</p>
+</li>
+<li>
+<p>Let f<sub>approx</sub> = <strong>convert_ushort_sat_&lt;impl-rounding-mode&gt;</strong>(<code>f * 1023.0f</code>)</p>
+</li>
+<li>
+<p><strong>fabs</strong>(f<sub>exact</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>half</code> → <code>CL_UNORM_INT16</code> (16-bit unsigned integer)</p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>Let f<sub>exact</sub> = <strong>max</strong>(<code>0</code>, <strong>min</strong>(<code>f * 65535</code>, <code>65535</code>))</p>
+</li>
+<li>
+<p>Let f<sub>preferred</sub> = <strong>convert_ushort_sat_rte</strong>(<code>f * 65535.0f</code>)</p>
+</li>
+<li>
+<p>Let f<sub>approx</sub> = <strong>convert_ushort_sat_&lt;impl-rounding-mode&gt;</strong>(<code>f * 65535.0f</code>)</p>
+</li>
+<li>
+<p><strong>fabs</strong>(f<sub>exact</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>half</code> → <code>CL_SNORM_INT8</code> (8-bit signed integer)</p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>Let f<sub>exact</sub> = <strong>max</strong>(<code>-128</code>, <strong>min</strong>(<code>f * 127</code>, <code>127</code>))</p>
+</li>
+<li>
+<p>Let f<sub>preferred</sub> = <strong>convert_char_sat_rte</strong>(<code>f * 127.0f</code>)</p>
+</li>
+<li>
+<p>Let f<sub>approx</sub> = <strong>convert_char_sat_&lt;impl_rounding_mode&gt;</strong>(<code>f * 127.0f</code>)</p>
+</li>
+<li>
+<p><strong>fabs</strong>(f<sub>exact</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>half</code> → <code>CL_SNORM_INT16</code> (16-bit signed integer)</p>
+</div>
+<div class="ulist none">
+<ul class="none">
+<li>
+<p>Let f<sub>exact</sub> = <strong>max</strong>(<code>-32768</code>, <strong>min</strong>(<code>f * 32767</code>, <code>32767</code>))</p>
+</li>
+<li>
+<p>Let f<sub>preferred</sub> = <strong>convert_short_sat_rte</strong>(<code>f * 32767.0f</code>)</p>
+</li>
+<li>
+<p>Let f<sub>approx</sub> = <strong>convert_short_sat_&lt;impl-rounding-mode&gt;</strong>(<code>f * 32767.0f</code>)</p>
+</li>
+<li>
+<p><strong>fabs</strong>(f<sub>exact</sub> - f<sub>approx</sub>) must be &lt;= 0.6</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_fp64">6. Double Precision Floating-Point</h2>
+<h2 id="cl_khr_fp64"><a class="anchor" href="#cl_khr_fp64"></a>6. Double Precision Floating-Point</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_fp64</strong> extension.
 This extension became an optional core feature in OpenCL 1.2.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_5">6.1. General information</h3>
+<h3 id="_general_information_5"><a class="anchor" href="#_general_information_5"></a>6.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_5">6.1.1. Version history</h4>
+<h4 id="_version_history_5"><a class="anchor" href="#_version_history_5"></a>6.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -4008,7 +4273,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_fp64-additions-to-chapter-6">6.2. Additions to Chapter 6</h3>
+<h3 id="cl_khr_fp64-additions-to-chapter-6"><a class="anchor" href="#cl_khr_fp64-additions-to-chapter-6"></a>6.2. Additions to Chapter 6</h3>
 <div class="paragraph">
 <p>The list of built-in scalar, and vector data types defined in <em>tables 6.1</em>
 and <em>6.2</em> are extended to include the following:</p>
@@ -4108,7 +4373,7 @@
 Conversions from half to double are lossless.</p>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-conversions">6.2.1. Conversions</h4>
+<h4 id="cl_khr_fp64-conversions"><a class="anchor" href="#cl_khr_fp64-conversions"></a>6.2.1. Conversions</h4>
 <div class="paragraph">
 <p>The implicit conversion rules specified in <em>section 6.2.1</em> now include the
 <code>double</code> scalar and <code>doublen</code> vector data types.</p>
@@ -4128,7 +4393,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-math-functions">6.2.2. Math Functions</h4>
+<h4 id="cl_khr_fp64-math-functions"><a class="anchor" href="#cl_khr_fp64-math-functions"></a>6.2.2. Math Functions</h4>
 <div class="paragraph">
 <p>The built-in math functions defined in <em>table 6.8</em> (also listed below) are
 extended to include appropriate versions of functions that take <code>double</code> and
@@ -4286,19 +4551,19 @@
   Returns <em>x</em> - <em>y</em> * <strong>trunc</strong> (<em>x</em>/<em>y</em>) .</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>fract</strong> (gentype <em>x</em>, __global gentype <strong><em>iptr</em>)<br>
-  gentype *fract</strong> (gentype <em>x</em>, __local gentype <strong><em>iptr</em>)<br>
-  gentype *fract</strong> (gentype <em>x</em>, __private gentype *<em>iptr</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>fract</strong> (gentype <em>x</em>, __global gentype *<em>iptr</em>)<br>
+  gentype <strong>fract</strong> (gentype <em>x</em>, __local gentype *<em>iptr</em>)<br>
+  gentype <strong>fract</strong> (gentype <em>x</em>, __private gentype *<em>iptr</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns <strong>fmin</strong>( <em>x</em> - <strong>floor</strong> (<em>x</em>), 0x1. fffffffffffffp-1 ).</p>
 <p class="tableblock">  <strong>floor</strong>(x) is returned in <em>iptr</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">double<em>n</em> <strong>frexp</strong> (double<em>n x</em>, __global int<em>n</em> <strong>exp)<br>
-  double<em>n</em> *frexp</strong> (double<em>n x</em>, __local int<em>n</em> <strong>exp)<br>
-  double<em>n</em> *frexp</strong> (double<em>n x</em>, __private int<em>n</em> <strong>exp)<br>
-  double *frexp</strong> (double <em>x</em>, __global int <strong>exp)<br>
-  double *frexp</strong> (double <em>x</em>, __local int <strong>exp)<br>
-  double *frexp</strong> (double <em>x</em>, __private int *exp)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">double<em>n</em> <strong>frexp</strong> (double<em>n x</em>, __global int<em>n</em> *exp)<br>
+  double<em>n</em> <strong>frexp</strong> (double<em>n x</em>, __local int<em>n</em> *exp)<br>
+  double<em>n</em> <strong>frexp</strong> (double<em>n x</em>, __private int<em>n</em> *exp)<br>
+  double <strong>frexp</strong> (double <em>x</em>, __global int *exp)<br>
+  double <strong>frexp</strong> (double <em>x</em>, __local int *exp)<br>
+  double <strong>frexp</strong> (double <em>x</em>, __private int *exp)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Extract mantissa and exponent from <em>x</em>.
   For each component the mantissa returned is a float with magnitude in the
   interval [1/2, 1) or 0.
@@ -4306,7 +4571,7 @@
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>hypot</strong> (gentype <em>x</em>, gentype <em>y</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Compute the value of the square root of <em>x</em>2+ <em>y</em>2  without undue
+<td class="tableblock halign-left valign-top"><p class="tableblock">Compute the value of the square root of <em>x</em><sup>2</sup>+ <em>y</em><sup>2</sup> without undue
   overflow or underflow.</p></td>
 </tr>
 <tr>
@@ -4358,7 +4623,7 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>mad</strong> (gentype <em>a</em>, gentype <em>b</em>, gentype <em>c</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>mad</strong> computes <em>a</em> * <em>b</em> + <em>c</em>.
   The function may compute <em>a</em> * <em>b</em> + <em>c</em> with reduced accuracy
-  in the embedded profile.  See the SPIR-V OpenCL environment specification
+  in the embedded profile.  See the OpenCL SPIR-V Environment Specification
   for details. On some hardware the mad instruction may provide better
   performance than expanded computation of <em>a</em> * <em>b</em> + <em>c</em>.</p></td>
 </tr>
@@ -4373,9 +4638,9 @@
   <strong>fmin</strong>(<em>x</em>, <em>y</em>).</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>modf</strong> (gentype <em>x</em>, __global gentype <strong><em>iptr</em>)<br>
-  gentype *modf</strong> (gentype <em>x</em>, __local gentype <strong><em>iptr</em>)<br>
-  gentype *modf</strong> (gentype <em>x</em>, __private gentype *<em>iptr</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>modf</strong> (gentype <em>x</em>, __global gentype *<em>iptr</em>)<br>
+  gentype <strong>modf</strong> (gentype <em>x</em>, __local gentype *<em>iptr</em>)<br>
+  gentype <strong>modf</strong> (gentype <em>x</em>, __private gentype *<em>iptr</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Decompose a floating-point number.
   The <strong>modf</strong> function breaks the argument <em>x</em> into integral and fractional
   parts, each of which has the same sign as the argument.
@@ -4438,7 +4703,7 @@
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">double<em>n</em> <strong>rootn</strong> (double<em>n</em> <em>x</em>, int<em>n</em> <em>y</em>)<br>
-  double<em>n</em> <strong>rootn</strong> (double <em>x</em>, int <em>y</em>)</p></td>
+  double <strong>rootn</strong> (double <em>x</em>, int <em>y</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Compute <em>x</em> to the power 1/<em>y</em>.</p></td>
 </tr>
 <tr>
@@ -4455,9 +4720,9 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">Compute sine.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>sincos</strong> (gentype <em>x</em>, __global gentype <strong><em>cosval</em>)<br>
-  gentype *sincos</strong> (gentype <em>x</em>, __local gentype <strong><em>cosval</em>)<br>
-  gentype *sincos</strong> (gentype <em>x</em>, __private gentype *<em>cosval</em>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>sincos</strong> (gentype <em>x</em>, __global gentype *<em>cosval</em>)<br>
+  gentype <strong>sincos</strong> (gentype <em>x</em>, __local gentype *<em>cosval</em>)<br>
+  gentype <strong>sincos</strong> (gentype <em>x</em>, __private gentype *<em>cosval</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Compute sine and cosine of x.
   The computed sine is the return value and computed cosine is returned in
   <em>cosval</em>.</p></td>
@@ -4662,7 +4927,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-common-functions">6.2.3. Common Functions</h4>
+<h4 id="cl_khr_fp64-common-functions"><a class="anchor" href="#cl_khr_fp64-common-functions"></a>6.2.3. Common Functions</h4>
 <div class="paragraph">
 <p>The built-in common functions defined in <em>table 6.12</em> (also listed below)
 are extended to include appropriate versions of functions that take <code>double</code>
@@ -4753,7 +5018,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-geometric-functions">6.2.4. Geometric Functions</h4>
+<h4 id="cl_khr_fp64-geometric-functions"><a class="anchor" href="#cl_khr_fp64-geometric-functions"></a>6.2.4. Geometric Functions</h4>
 <div class="paragraph">
 <p>The built-in geometric functions defined in <em>table 6.13</em> (also listed below)
 are extended to include appropriate versions of functions that take <code>double</code>
@@ -4806,7 +5071,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-relational-functions">6.2.5. Relational Functions</h4>
+<h4 id="cl_khr_fp64-relational-functions"><a class="anchor" href="#cl_khr_fp64-relational-functions"></a>6.2.5. Relational Functions</h4>
 <div class="paragraph">
 <p>The scalar and vector relational functions described in <em>table 6.14</em> are
 extended to include versions that take <code>double</code>, <code>double2</code>, <code>double3</code>, <code>double4</code>,
@@ -4955,7 +5220,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-vector-data-load-and-store-functions">6.2.6. Vector Data Load and Store Functions</h4>
+<h4 id="cl_khr_fp64-vector-data-load-and-store-functions"><a class="anchor" href="#cl_khr_fp64-vector-data-load-and-store-functions"></a>6.2.6. Vector Data Load and Store Functions</h4>
 <div class="paragraph">
 <p>The vector data load (<strong>vload<em>n</em></strong>) and store (<strong>vstore<em>n</em></strong>) functions
 described in <em>table 6.13</em> (also listed below) are extended to include
@@ -5003,10 +5268,8 @@
 <p class="tableblock">  gentype<em>n</em> <strong>vload<em>n</em></strong>(size_t <em>offset</em>, const __private gentype *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Return sizeof (gentype<em>n</em>) bytes of data read from address
   (<em>p</em> + (<em>offset * n</em>)).
-  The read address computed as (<em>p</em> + (<em>offset * n</em>)) must be 8-bit aligned
-  if gentype is char, uchar; 16-bit aligned if gentype is short, ushort;
-  32-bit aligned if gentype is int, uint, float; 64-bit aligned if
-  gentype is long, ulong or double.</p></td>
+  If gentype is double, the read address computed as (<em>p</em> + (<em>offset * n</em>))
+  must be 64-bit aligned.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, __global gentype *<em>p</em>)</p>
@@ -5014,10 +5277,8 @@
 <p class="tableblock">  void <strong>vstore<em>n</em></strong>(gentype<em>n</em> <em>data</em>, size_t <em>offset</em>, __private gentype *<em>p</em>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Write sizeof (gentype<em>n</em>) bytes given by <em>data</em> to address
   (<em>p</em> + (<em>offset * n</em>)).
-  The address computed as (<em>p</em> + (<em>offset * n</em>)) must be 8-bit aligned
-  if gentype is char, uchar; 16-bit aligned if gentype is short, ushort;
-  32-bit aligned if gentype is int, uint, float; 64-bit aligned
-  if gentype is long, ulong or double.</p></td>
+  If gentype is double, the write address computed as (<em>p</em> + (<em>offset * n</em>))
+  must be 64-bit aligned.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>vstore_half</strong>(double <em>data</em>, size_t <em>offset</em>, __global half *<em>p</em>)<br>
@@ -5102,7 +5363,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-async-copies-from-global-to-local-memory-local-to-global-memory-and-prefetch">6.2.7. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</h4>
+<h4 id="cl_khr_fp64-async-copies-from-global-to-local-memory-local-to-global-memory-and-prefetch"><a class="anchor" href="#cl_khr_fp64-async-copies-from-global-to-local-memory-local-to-global-memory-and-prefetch"></a>6.2.7. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</h4>
 <div class="paragraph">
 <p>The OpenCL C programming language implements the following functions that
 provide asynchronous copies between global and local memory and a prefetch
@@ -5214,7 +5475,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-ieee754-compliance">6.2.8. IEEE754 Compliance</h4>
+<h4 id="cl_khr_fp64-ieee754-compliance"><a class="anchor" href="#cl_khr_fp64-ieee754-compliance"></a>6.2.8. IEEE754 Compliance</h4>
 <div class="paragraph">
 <p>The following table entry describes the additions to <em>table 4.3,</em> which
 allows applications to query the configuration information using
@@ -5267,7 +5528,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_fp64-relative-error-as-ulps">6.2.9. Relative Error as ULPs</h4>
+<h4 id="cl_khr_fp64-relative-error-as-ulps"><a class="anchor" href="#cl_khr_fp64-relative-error-as-ulps"></a>6.2.9. Relative Error as ULPs</h4>
 <div class="paragraph">
 <p>In this section we discuss the maximum relative error defined as <em>ulp</em>
 (units in the last place).</p>
@@ -5644,7 +5905,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_int32_atomics">7. 32-bit Atomics</h2>
+<h2 id="cl_khr_int32_atomics"><a class="anchor" href="#cl_khr_int32_atomics"></a>7. 32-bit Atomics</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the extensions <strong>cl_khr_global_int32_base_atomics</strong>, <strong>cl_khr_global_int32_extended_atomics</strong>, <strong>cl_khr_local_int32_base_atomics</strong>, and <strong>cl_khr_local_int32_extended_atomics</strong>.
@@ -5654,9 +5915,9 @@
 <p>These extensions became core features in OpenCL 1.1, except the built-in atomic function names are changed to use the <strong>atomic_</strong> prefix instead of <strong>atom_</strong> and the volatile qualifier was added to the pointer parameter <em>p</em>.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_6">7.1. General information</h3>
+<h3 id="_general_information_6"><a class="anchor" href="#_general_information_6"></a>7.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_6">7.1.1. Version history</h4>
+<h4 id="_version_history_6"><a class="anchor" href="#_version_history_6"></a>7.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -5681,9 +5942,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_global_atomics_for_32_bit_integers">7.2. Global Atomics for 32-bit Integers</h3>
+<h3 id="_global_atomics_for_32_bit_integers"><a class="anchor" href="#_global_atomics_for_32_bit_integers"></a>7.2. Global Atomics for 32-bit Integers</h3>
 <div class="sect3">
-<h4 id="_base_atomics">7.2.1. Base Atomics</h4>
+<h4 id="_base_atomics"><a class="anchor" href="#_base_atomics"></a>7.2.1. Base Atomics</h4>
 <table class="tableblock frame-all grid-all stretch">
 <caption class="title">Table 19. <em>Built-in Atomic Functions for</em> <strong>cl_khr_global_int32_base_atomics</strong></caption>
 <colgroup>
@@ -5742,7 +6003,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="_extended_atomics">7.2.2. Extended Atomics</h4>
+<h4 id="_extended_atomics"><a class="anchor" href="#_extended_atomics"></a>7.2.2. Extended Atomics</h4>
 <table class="tableblock frame-all grid-all stretch">
 <caption class="title">Table 20. <em>Built-in Atomic Functions for</em> <strong>cl_khr_global_int32_extended_atomics</strong></caption>
 <colgroup>
@@ -5796,9 +6057,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_local_atomics_for_32_bit_integers">7.3. Local Atomics for 32-bit Integers</h3>
+<h3 id="_local_atomics_for_32_bit_integers"><a class="anchor" href="#_local_atomics_for_32_bit_integers"></a>7.3. Local Atomics for 32-bit Integers</h3>
 <div class="sect3">
-<h4 id="_base_atomics_2">7.3.1. Base Atomics</h4>
+<h4 id="_base_atomics_2"><a class="anchor" href="#_base_atomics_2"></a>7.3.1. Base Atomics</h4>
 <table class="tableblock frame-all grid-all stretch">
 <caption class="title">Table 21. <em>Built-in Atomic Functions for</em> <strong>cl_khr_local_int32_base_atomics</strong></caption>
 <colgroup>
@@ -5857,7 +6118,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="_extended_atomics_2">7.3.2. Extended Atomics</h4>
+<h4 id="_extended_atomics_2"><a class="anchor" href="#_extended_atomics_2"></a>7.3.2. Extended Atomics</h4>
 <table class="tableblock frame-all grid-all stretch">
 <caption class="title">Table 22. <em>Built-in Atomic Functions for</em> <strong>cl_khr_local_int32_extended_atomics</strong></caption>
 <colgroup>
@@ -5913,15 +6174,15 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_int64_atomics">8. 64-bit Atomics</h2>
+<h2 id="cl_khr_int64_atomics"><a class="anchor" href="#cl_khr_int64_atomics"></a>8. 64-bit Atomics</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_int64_base_atomics</strong> and <strong>cl_khr_int64_extended_atomics</strong> extensions. These extensions allow atomic operations to be performed on 64-bit signed and unsigned integers in global and local memory.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_7">8.1. General information</h3>
+<h3 id="_general_information_7"><a class="anchor" href="#_general_information_7"></a>8.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_7">8.1.1. Version history</h4>
+<h4 id="_version_history_7"><a class="anchor" href="#_version_history_7"></a>8.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -6091,7 +6352,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_select_fprounding_mode">9. Selecting the Rounding Mode <strong>(DEPRECATED)</strong></h2>
+<h2 id="cl_khr_select_fprounding_mode"><a class="anchor" href="#cl_khr_select_fprounding_mode"></a>9. Selecting the Rounding Mode <strong>(DEPRECATED)</strong></h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_select_fprounding_mode</strong> extension.
@@ -6101,9 +6362,9 @@
 <p><strong>This extension was deprecated in OpenCL 1.1 and its use is not recommended.</strong></p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_8">9.1. General information</h3>
+<h3 id="_general_information_8"><a class="anchor" href="#_general_information_8"></a>9.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_8">9.1.1. Version history</h4>
+<h4 id="_version_history_8"><a class="anchor" href="#_version_history_8"></a>9.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -6128,7 +6389,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_changes_to_opencl_c_specification">9.2. Changes to OpenCL C specification</h3>
+<h3 id="_changes_to_opencl_c_specification"><a class="anchor" href="#_changes_to_opencl_c_specification"></a>9.2. Changes to OpenCL C specification</h3>
 <div class="paragraph">
 <p>With this extension, the rounding mode may be specified using the following <strong>#pragma</strong> in the OpenCL program source:</p>
 </div>
@@ -6194,10 +6455,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_gl_sharing">10. Creating an OpenCL Context from an OpenGL Context or Share Group</h2>
+<h2 id="cl_khr_gl_sharing"><a class="anchor" href="#cl_khr_gl_sharing"></a>10. Creating an OpenCL Context from an OpenGL Context or Share Group</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing-overview">10.1. Overview</h3>
+<h3 id="cl_khr_gl_sharing-overview"><a class="anchor" href="#cl_khr_gl_sharing-overview"></a>10.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes functionality in the <strong>cl_khr_gl_sharing</strong> extension
 to associate an OpenCL context with an OpenGL context or share group object.
@@ -6212,9 +6473,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_9">10.2. General information</h3>
+<h3 id="_general_information_9"><a class="anchor" href="#_general_information_9"></a>10.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_9">10.2.1. Version history</h4>
+<h4 id="_version_history_9"><a class="anchor" href="#_version_history_9"></a>10.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -6239,7 +6500,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing-new-procedures-and-functions">10.3. New Procedures and Functions</h3>
+<h3 id="cl_khr_gl_sharing-new-procedures-and-functions"><a class="anchor" href="#cl_khr_gl_sharing-new-procedures-and-functions"></a>10.3. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_int clGetGLContextInfoKHR(<span class="directive">const</span> cl_context_properties *properties,
@@ -6251,7 +6512,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing-new-tokens">10.4. New Tokens</h3>
+<h3 id="cl_khr_gl_sharing-new-tokens"><a class="anchor" href="#cl_khr_gl_sharing-new-tokens"></a>10.4. New Tokens</h3>
 <div class="paragraph">
 <p>Returned by <strong>clCreateContext</strong>, <strong>clCreateContextFromType</strong>, and
 <strong>clGetGLContextInfoKHR</strong> when an invalid OpenGL context or share group object
@@ -6286,7 +6547,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing-additions-to-chapter-4">10.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_gl_sharing-additions-to-chapter-4"><a class="anchor" href="#cl_khr_gl_sharing-additions-to-chapter-4"></a>10.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>In <em>section 4.4</em>, replace the description of <em>properties</em> under
 <strong>clCreateContext</strong> with:</p>
@@ -6494,7 +6755,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing-additions-to-chapter-5">10.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_gl_sharing-additions-to-chapter-5"><a class="anchor" href="#cl_khr_gl_sharing-additions-to-chapter-5"></a>10.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add a new section to describe the new API for querying OpenCL devices that
 support sharing with OpenGL:</p>
@@ -6674,7 +6935,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing-issues">10.7. Issues</h3>
+<h3 id="cl_khr_gl_sharing-issues"><a class="anchor" href="#cl_khr_gl_sharing-issues"></a>10.7. Issues</h3>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
@@ -6841,7 +7102,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_gl_sharing__memobjs">11. Creating OpenCL Memory Objects from OpenGL Objects</h2>
+<h2 id="cl_khr_gl_sharing__memobjs"><a class="anchor" href="#cl_khr_gl_sharing__memobjs"></a>11. Creating OpenCL Memory Objects from OpenGL Objects</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes functionality in the <strong>cl_khr_gl_sharing</strong> extension
@@ -6861,9 +7122,9 @@
 OpenGL objects (i.e. objects named zero), which may not be shared.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_10">11.1. General information</h3>
+<h3 id="_general_information_10"><a class="anchor" href="#_general_information_10"></a>11.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_10">11.1.1. Version history</h4>
+<h4 id="_version_history_10"><a class="anchor" href="#_version_history_10"></a>11.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -6888,7 +7149,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing__memobjs-lifetime-of-shared-objects">11.2. Lifetime of Shared Objects</h3>
+<h3 id="cl_khr_gl_sharing__memobjs-lifetime-of-shared-objects"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-lifetime-of-shared-objects"></a>11.2. Lifetime of Shared Objects</h3>
 <div class="paragraph">
 <p>An OpenCL memory object created from an OpenGL object (hereinafter referred
 to as a &#8220;shared CL/GL object&#8221;) remains valid as long as the corresponding
@@ -6911,7 +7172,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing__memobjs-cl-buffer-objects-from-gl-buffer-objects">11.3. OpenCL Buffer Objects from OpenGL Buffer Objects</h3>
+<h3 id="cl_khr_gl_sharing__memobjs-cl-buffer-objects-from-gl-buffer-objects"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-cl-buffer-objects-from-gl-buffer-objects"></a>11.3. OpenCL Buffer Objects from OpenGL Buffer Objects</h3>
 <div class="paragraph">
 <p>The function
 </p>
@@ -6997,7 +7258,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing__memobjs-cl-image-objects-from-gl-textures">11.4. OpenCL Image Objects from OpenGL Textures</h3>
+<h3 id="cl_khr_gl_sharing__memobjs-cl-image-objects-from-gl-textures"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-cl-image-objects-from-gl-textures"></a>11.4. OpenCL Image Objects from OpenGL Textures</h3>
 <div class="paragraph">
 <p>The function
 </p>
@@ -7149,7 +7410,7 @@
 retain and release the image objects.</p>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_gl_sharing__memobjs-list-of-opengl-and-corresponding-opencl-image-formats">11.4.1. List of OpenGL and corresponding OpenCL Image Formats</h4>
+<h4 id="cl_khr_gl_sharing__memobjs-list-of-opengl-and-corresponding-opencl-image-formats"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-list-of-opengl-and-corresponding-opencl-image-formats"></a>11.4.1. List of OpenGL and corresponding OpenCL Image Formats</h4>
 <div class="paragraph">
 <p>The table below describes the list of OpenGL texture internal formats and
 the corresponding OpenCL image formats.
@@ -7367,7 +7628,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing__memobjs-cl-image-objects-from-gl-renderbuffers">11.5. OpenCL Image Objects from OpenGL Renderbuffers</h3>
+<h3 id="cl_khr_gl_sharing__memobjs-cl-image-objects-from-gl-renderbuffers"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-cl-image-objects-from-gl-renderbuffers"></a>11.5. OpenCL Image Objects from OpenGL Renderbuffers</h3>
 <div class="paragraph">
 <p>The function
 </p>
@@ -7471,7 +7732,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing__memobjs-querying-gl-object-information-from-a-cl-memory-object">11.6. Querying OpenGL object information from an OpenCL memory object</h3>
+<h3 id="cl_khr_gl_sharing__memobjs-querying-gl-object-information-from-a-cl-memory-object"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-querying-gl-object-information-from-a-cl-memory-object"></a>11.6. Querying OpenGL object information from an OpenCL memory object</h3>
 <div class="paragraph">
 <p>The OpenGL object used to create the OpenCL memory object and information
 about the object type i.e. whether it is a texture, renderbuffer or buffer
@@ -7617,7 +7878,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_sharing__memobjs-sharing-memory-objects-that-map-to-gl-objects-between-gl-and-cl-contexts">11.7. Sharing memory objects that map to GL objects between GL and CL contexts</h3>
+<h3 id="cl_khr_gl_sharing__memobjs-sharing-memory-objects-that-map-to-gl-objects-between-gl-and-cl-contexts"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-sharing-memory-objects-that-map-to-gl-objects-between-gl-and-cl-contexts"></a>11.7. Sharing memory objects that map to GL objects between GL and CL contexts</h3>
 <div class="paragraph">
 <p>The function
 </p>
@@ -7670,14 +7931,13 @@
 <p><em>event_wait_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><em>event</em> returns an event object that identifies this command and can be used
-to query or queue a wait for the command to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command
+and can be used to query wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueAcquireGLObjects</strong> returns CL_SUCCESS if the function is executed
@@ -7765,15 +8025,13 @@
 The events specified in <em>event_wait_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><em>event</em> returns an event object that identifies this particular
-command and can be used to query or queue a wait for the command to
-complete.
-<em>event</em> can be`NULL` in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command
+and can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueReleaseGLObjects</strong> returns CL_SUCCESS if the function is executed
@@ -7821,7 +8079,7 @@
 </ul>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_gl_sharing__memobjs-synchronizing-opencl-and-opengl-access-to-shared-objects">11.7.1. Synchronizing OpenCL and OpenGL Access to Shared Objects</h4>
+<h4 id="cl_khr_gl_sharing__memobjs-synchronizing-opencl-and-opengl-access-to-shared-objects"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-synchronizing-opencl-and-opengl-access-to-shared-objects"></a>11.7.1. Synchronizing OpenCL and OpenGL Access to Shared Objects</h4>
 <div class="paragraph">
 <p>In order to ensure data integrity, the application is responsible for
 synchronizing access to shared CL/GL objects by their respective APIs.
@@ -7876,14 +8134,45 @@
 released, will result in undefined behavior.</p>
 </div>
 </div>
+<div class="sect3">
+<h4 id="cl_khr_gl_sharing__memobjs-event-command-types"><a class="anchor" href="#cl_khr_gl_sharing__memobjs-event-command-types"></a>11.7.2. Event Command Types for Sharing memory objects that map to GL objects</h4>
+<div class="paragraph">
+<p>The following table describes the event command types for the OpenCL commands
+to acquire and release OpenCL memory objects that have been created from
+OpenGL objects:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 29. List of supported event command types</caption>
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Events Created By</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Event Command Type</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueAcquireGLObjects</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>ACQUIRE_<wbr>GL_<wbr>OBJECTS</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueReleaseGLObjects</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>RELEASE_<wbr>GL_<wbr>OBJECTS</code></p></td>
+</tr>
+</tbody>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_gl_event">12. Creating OpenCL Event Objects from OpenGL Sync Objects</h2>
+<h2 id="cl_khr_gl_event"><a class="anchor" href="#cl_khr_gl_event"></a>12. Creating OpenCL Event Objects from OpenGL Sync Objects</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_gl_event-overview">12.1. Overview</h3>
+<h3 id="cl_khr_gl_event-overview"><a class="anchor" href="#cl_khr_gl_event-overview"></a>12.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_gl_event</strong> extension.
 This extension allows creating OpenCL event objects linked to OpenGL fence
@@ -7900,9 +8189,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_11">12.2. General information</h3>
+<h3 id="_general_information_11"><a class="anchor" href="#_general_information_11"></a>12.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_11">12.2.1. Version history</h4>
+<h4 id="_version_history_11"><a class="anchor" href="#_version_history_11"></a>12.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -7927,7 +8216,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_event-new-procedures-and-functions">12.3. New Procedures and Functions</h3>
+<h3 id="cl_khr_gl_event-new-procedures-and-functions"><a class="anchor" href="#cl_khr_gl_event-new-procedures-and-functions"></a>12.3. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_event clCreateEventFromGLsyncKHR(cl_context context,
@@ -7937,7 +8226,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_event-new-tokens">12.4. New Tokens</h3>
+<h3 id="cl_khr_gl_event-new-tokens"><a class="anchor" href="#cl_khr_gl_event-new-tokens"></a>12.4. New Tokens</h3>
 <div class="paragraph">
 <p>Returned by <strong>clGetEventInfo</strong> when <em>param_name</em> is CL_EVENT_COMMAND_TYPE:</p>
 </div>
@@ -7948,7 +8237,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_event-additions-to-chapter-5">12.5. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_gl_event-additions-to-chapter-5"><a class="anchor" href="#cl_khr_gl_event-additions-to-chapter-5"></a>12.5. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add following to the fourth paragraph of <em>section 5.11</em> (prior to the
 description of <strong>clWaitForEvents</strong>):</p>
@@ -8058,7 +8347,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_event-additions-to-extension-specification">12.6. Additions to the OpenCL Extension Specification</h3>
+<h3 id="cl_khr_gl_event-additions-to-extension-specification"><a class="anchor" href="#cl_khr_gl_event-additions-to-extension-specification"></a>12.6. Additions to the OpenCL Extension Specification</h3>
 <div class="paragraph">
 <p>Add following the paragraph describing parameter <em>event</em> to
 <strong>clEnqueueAcquireGLObjects</strong>:</p>
@@ -8160,7 +8449,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_event-issues">12.7. Issues</h3>
+<h3 id="cl_khr_gl_event-issues"><a class="anchor" href="#cl_khr_gl_event-issues"></a>12.7. Issues</h3>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
@@ -8261,10 +8550,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_d3d10_sharing">13. Creating OpenCL Memory Objects from Direct3D 10 Buffers and Textures</h2>
+<h2 id="cl_khr_d3d10_sharing"><a class="anchor" href="#cl_khr_d3d10_sharing"></a>13. Creating OpenCL Memory Objects from Direct3D 10 Buffers and Textures</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_d3d10_sharing-overview">13.1. Overview</h3>
+<h3 id="cl_khr_d3d10_sharing-overview"><a class="anchor" href="#cl_khr_d3d10_sharing-overview"></a>13.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_d3d10_sharing</strong> extension.
 The goal of this extension is to provide interoperability between OpenCL and
@@ -8272,9 +8561,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_12">13.2. General information</h3>
+<h3 id="_general_information_12"><a class="anchor" href="#_general_information_12"></a>13.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_12">13.2.1. Version history</h4>
+<h4 id="_version_history_12"><a class="anchor" href="#_version_history_12"></a>13.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -8299,7 +8588,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d10_sharing-new-procedures-and-functions">13.3. New Procedures and Functions</h3>
+<h3 id="cl_khr_d3d10_sharing-new-procedures-and-functions"><a class="anchor" href="#cl_khr_d3d10_sharing-new-procedures-and-functions"></a>13.3. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_int clGetDeviceIDsFromD3D10KHR(cl_platform_id platform,
@@ -8344,7 +8633,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d10_sharing-new-tokens">13.4. New Tokens</h3>
+<h3 id="cl_khr_d3d10_sharing-new-tokens"><a class="anchor" href="#cl_khr_d3d10_sharing-new-tokens"></a>13.4. New Tokens</h3>
 <div class="paragraph">
 <p>Accepted as a Direct3D 10 device source in the <em>d3d_device_source</em> parameter
 of <strong>clGetDeviceIDsFromD3D10KHR</strong>:</p>
@@ -8452,7 +8741,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d10_sharing-additions-to-chapter-4">13.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_d3d10_sharing-additions-to-chapter-4"><a class="anchor" href="#cl_khr_d3d10_sharing-additions-to-chapter-4"></a>13.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>In <em>section 4.4</em>, replace the description of <em>properties</em> under
 <strong>clCreateContext</strong> with:</p>
@@ -8543,7 +8832,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d10_sharing-additions-to-chapter-5">13.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_d3d10_sharing-additions-to-chapter-5"><a class="anchor" href="#cl_khr_d3d10_sharing-additions-to-chapter-5"></a>13.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add to the list of errors for <strong>clGetMemObjectInfo</strong>:</p>
 </div>
@@ -8633,7 +8922,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d10_sharing-sharing-memory-objects-with-direct3d-10-resources">13.7. Sharing Memory Objects with Direct3D 10 Resources</h3>
+<h3 id="cl_khr_d3d10_sharing-sharing-memory-objects-with-direct3d-10-resources"><a class="anchor" href="#cl_khr_d3d10_sharing-sharing-memory-objects-with-direct3d-10-resources"></a>13.7. Sharing Memory Objects with Direct3D 10 Resources</h3>
 <div class="paragraph">
 <p>This section discusses OpenCL functions that allow applications to use
 Direct3D 10 resources as OpenCL memory objects.
@@ -8646,7 +8935,7 @@
 the OpenCL context has been created from a Direct3D 10 device.</p>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d10_sharing-querying-opencl-devices-corresponding-to-direct3d-10-devices">13.7.1. Querying OpenCL Devices Corresponding to Direct3D 10 Devices</h4>
+<h4 id="cl_khr_d3d10_sharing-querying-opencl-devices-corresponding-to-direct3d-10-devices"><a class="anchor" href="#cl_khr_d3d10_sharing-querying-opencl-devices-corresponding-to-direct3d-10-devices"></a>13.7.1. Querying OpenCL Devices Corresponding to Direct3D 10 Devices</h4>
 <div class="paragraph">
 <p>The OpenCL devices corresponding to a Direct3D 10 device may be queried.
 The OpenCL devices corresponding to a DXGI adapter may also be queried.
@@ -8728,7 +9017,7 @@
 </ul>
 </div>
 <table id="cl_khr_d3d10_sharing-clGetDeviceIDsFromD3D10KHR-object-type" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 29. <em>Direct3D 10 object types that may be used by</em> <strong>clGetDeviceIDsFromD3D10KHR</strong></caption>
+<caption class="title">Table 30. <em>Direct3D 10 object types that may be used by</em> <strong>clGetDeviceIDsFromD3D10KHR</strong></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -8751,7 +9040,7 @@
 </tbody>
 </table>
 <table id="cl_khr_d3d10_sharing-clGetDeviceIDsFromD3D10KHR-devices" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 30. <em>Sets of devices queriable using</em> <strong>clGetDeviceIDsFromD3D10KHR</strong></caption>
+<caption class="title">Table 31. <em>Sets of devices queriable using</em> <strong>clGetDeviceIDsFromD3D10KHR</strong></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -8779,7 +9068,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d10_sharing-lifetime-of-shared-objects">13.7.2. Lifetime of Shared Objects</h4>
+<h4 id="cl_khr_d3d10_sharing-lifetime-of-shared-objects"><a class="anchor" href="#cl_khr_d3d10_sharing-lifetime-of-shared-objects"></a>13.7.2. Lifetime of Shared Objects</h4>
 <div class="paragraph">
 <p>An OpenCL memory object created from a Direct3D 10 resource remains valid as
 long as the corresponding Direct3D 10 resource has not been deleted.
@@ -8808,7 +9097,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d10_sharing-sharing-direct3d-10-buffer-resources-as-opencl-buffer-objects">13.7.3. Sharing Direct3D 10 Buffer Resources as OpenCL Buffer Objects</h4>
+<h4 id="cl_khr_d3d10_sharing-sharing-direct3d-10-buffer-resources-as-opencl-buffer-objects"><a class="anchor" href="#cl_khr_d3d10_sharing-sharing-direct3d-10-buffer-resources-as-opencl-buffer-objects"></a>13.7.3. Sharing Direct3D 10 Buffer Resources as OpenCL Buffer Objects</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -8880,7 +9169,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d10_sharing-sharing-direct3d-10-texture-and-resources-as-opencl-image-objects">13.7.4. Sharing Direct3D 10 Texture and Resources as OpenCL Image Objects</h4>
+<h4 id="cl_khr_d3d10_sharing-sharing-direct3d-10-texture-and-resources-as-opencl-image-objects"><a class="anchor" href="#cl_khr_d3d10_sharing-sharing-direct3d-10-texture-and-resources-as-opencl-image-objects"></a>13.7.4. Sharing Direct3D 10 Texture and Resources as OpenCL Image Objects</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -9061,7 +9350,7 @@
 zero.</p>
 </div>
 <table id="cl_khr_d3d10_sharing-mapping-of-image-formats" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 31. <em>Direct3D 10 formats and corresponding OpenCL image formats</em></caption>
+<caption class="title">Table 32. <em>Direct3D 10 formats and corresponding OpenCL image formats</em></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -9259,7 +9548,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d10_sharing-querying-direct3d-properties-of-memory-objects-created-from-direct3d-10-resources">13.7.5. Querying Direct3D properties of memory objects created from Direct3D 10 resources</h4>
+<h4 id="cl_khr_d3d10_sharing-querying-direct3d-properties-of-memory-objects-created-from-direct3d-10-resources"><a class="anchor" href="#cl_khr_d3d10_sharing-querying-direct3d-properties-of-memory-objects-created-from-direct3d-10-resources"></a>13.7.5. Querying Direct3D properties of memory objects created from Direct3D 10 resources</h4>
 <div class="paragraph">
 <p>Properties of Direct3D 10 objects may be queried using <strong>clGetMemObjectInfo</strong>
 and <strong>clGetImageInfo</strong> with <em>param_name</em> CL_MEM_D3D10_RESOURCE_KHR and</p>
@@ -9270,7 +9559,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d10_sharing-sharing-memory-objects-created-from-direct3d-10-resources-between-direct3d-10-and-opencl-contexts">13.7.6. Sharing memory objects created from Direct3D 10 resources between Direct3D 10 and OpenCL contexts</h4>
+<h4 id="cl_khr_d3d10_sharing-sharing-memory-objects-created-from-direct3d-10-resources-between-direct3d-10-and-opencl-contexts"><a class="anchor" href="#cl_khr_d3d10_sharing-sharing-memory-objects-created-from-direct3d-10-resources-between-direct3d-10-and-opencl-contexts"></a>13.7.6. Sharing memory objects created from Direct3D 10 resources between Direct3D 10 and OpenCL contexts</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -9335,15 +9624,13 @@
 The events specified in <em>event_wait_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueAcquireD3D10ObjectsKHR</strong> returns CL_SUCCESS if the function is
@@ -9449,16 +9736,16 @@
 If <em>event_wait_list</em> is <code>NULL</code>, <em>num_events_in_wait_list</em> must be 0.
 If <em>event_wait_list</em> is not <code>NULL</code>, the list of events pointed to by
 <em>event_wait_list</em> must be valid and <em>num_events_in_wait_list</em> must be
-greater than 0.
-The event specified by <em>event</em> returns an event object that identifies this
-particular command and can be used to query or queue a wait for this
-particular command to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+greater than 0.</p>
+</div>
+<div class="paragraph">
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueReleaseD3D10ObjectsKHR</strong> returns CL_SUCCESS if the function is
@@ -9506,9 +9793,40 @@
 </ul>
 </div>
 </div>
+<div class="sect3">
+<h4 id="cl_khr_d3d10_sharing-event-command-types"><a class="anchor" href="#cl_khr_d3d10_sharing-event-command-types"></a>13.7.7. Event Command Types for Sharing memory objects that map to Direct3D 10 objects</h4>
+<div class="paragraph">
+<p>The following table describes the event command types for the OpenCL commands
+to acquire and release OpenCL memory objects that have been created from
+Direct3D 10 objects:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 33. List of supported event command types</caption>
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Events Created By</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Event Command Type</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueAcquireD3D10ObjectsKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>ACQUIRE_<wbr>D3D10_<wbr>OBJECTS_<wbr>KHR</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueReleaseD3D10ObjectsKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>RELEASE_<wbr>D3D10_<wbr>OBJECTS_<wbr>KHR</code></p></td>
+</tr>
+</tbody>
+</table>
+</div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d10_sharing-issues">13.8. Issues</h3>
+<h3 id="cl_khr_d3d10_sharing-issues"><a class="anchor" href="#cl_khr_d3d10_sharing-issues"></a>13.8. Issues</h3>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
@@ -9626,10 +9944,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_d3d11_sharing">14. Creating OpenCL Memory Objects from Direct3D 11 Buffers and Textures</h2>
+<h2 id="cl_khr_d3d11_sharing"><a class="anchor" href="#cl_khr_d3d11_sharing"></a>14. Creating OpenCL Memory Objects from Direct3D 11 Buffers and Textures</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_d3d11_sharing-overview">14.1. Overview</h3>
+<h3 id="cl_khr_d3d11_sharing-overview"><a class="anchor" href="#cl_khr_d3d11_sharing-overview"></a>14.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_d3d11_sharing</strong> extension.
 The goal of this extension is to provide interoperability between OpenCL and
@@ -9637,9 +9955,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_13">14.2. General information</h3>
+<h3 id="_general_information_13"><a class="anchor" href="#_general_information_13"></a>14.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_13">14.2.1. Version history</h4>
+<h4 id="_version_history_13"><a class="anchor" href="#_version_history_13"></a>14.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -9664,7 +9982,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d11_sharing-new-procedures-and-functions">14.3. New Procedures and Functions</h3>
+<h3 id="cl_khr_d3d11_sharing-new-procedures-and-functions"><a class="anchor" href="#cl_khr_d3d11_sharing-new-procedures-and-functions"></a>14.3. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_int clGetDeviceIDsFromD3D11KHR(cl_platform_id platform,
@@ -9709,7 +10027,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d11_sharing-new-tokens">14.4. New Tokens</h3>
+<h3 id="cl_khr_d3d11_sharing-new-tokens"><a class="anchor" href="#cl_khr_d3d11_sharing-new-tokens"></a>14.4. New Tokens</h3>
 <div class="paragraph">
 <p>Accepted as a Direct3D 11 device source in the <em>d3d_device_source</em> parameter
 of <strong>clGetDeviceIDsFromD3D11KHR</strong>:</p>
@@ -9817,7 +10135,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d11_sharing-additions-to-chapter-4">14.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_d3d11_sharing-additions-to-chapter-4"><a class="anchor" href="#cl_khr_d3d11_sharing-additions-to-chapter-4"></a>14.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>In <em>section 4.4</em>, replace the description of <em>properties</em> under
 <strong>clCreateContext</strong> with:</p>
@@ -9908,7 +10226,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d11_sharing-additions-to-chapter-5">14.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_d3d11_sharing-additions-to-chapter-5"><a class="anchor" href="#cl_khr_d3d11_sharing-additions-to-chapter-5"></a>14.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add to the list of errors for <strong>clGetMemObjectInfo</strong>:</p>
 </div>
@@ -9998,7 +10316,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_d3d11_sharing-sharing-memory-objects-with-direct3d-11-resources">14.7. Sharing Memory Objects with Direct3D 11 Resources</h3>
+<h3 id="cl_khr_d3d11_sharing-sharing-memory-objects-with-direct3d-11-resources"><a class="anchor" href="#cl_khr_d3d11_sharing-sharing-memory-objects-with-direct3d-11-resources"></a>14.7. Sharing Memory Objects with Direct3D 11 Resources</h3>
 <div class="paragraph">
 <p>This section discusses OpenCL functions that allow applications to use
 Direct3D 11 resources as OpenCL memory objects.
@@ -10011,7 +10329,7 @@
 the OpenCL context has been created from a Direct3D 11 device.</p>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d11_sharing-querying-opencl-devices-corresponding-to-direct3d-11-devices">14.7.1. Querying OpenCL Devices Corresponding to Direct3D 11 Devices</h4>
+<h4 id="cl_khr_d3d11_sharing-querying-opencl-devices-corresponding-to-direct3d-11-devices"><a class="anchor" href="#cl_khr_d3d11_sharing-querying-opencl-devices-corresponding-to-direct3d-11-devices"></a>14.7.1. Querying OpenCL Devices Corresponding to Direct3D 11 Devices</h4>
 <div class="paragraph">
 <p>The OpenCL devices corresponding to a Direct3D 11 device may be queried.
 The OpenCL devices corresponding to a DXGI adapter may also be queried.
@@ -10093,7 +10411,7 @@
 </ul>
 </div>
 <table id="cl_khr_d3d11_sharing-clGetDeviceIDsFromD3D11KHR-object-type" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 32. <em>Direct3D 11 object types that may be used by</em> <strong>clGetDeviceIDsFromD3D11KHR</strong></caption>
+<caption class="title">Table 34. <em>Direct3D 11 object types that may be used by</em> <strong>clGetDeviceIDsFromD3D11KHR</strong></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -10116,7 +10434,7 @@
 </tbody>
 </table>
 <table id="cl_khr_d3d11_sharing-clGetDeviceIDsFromD3D10KHR-devices" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 33. <em>Sets of devices queriable using</em> <strong>clGetDeviceIDsFromD3D11KHR</strong></caption>
+<caption class="title">Table 35. <em>Sets of devices queriable using</em> <strong>clGetDeviceIDsFromD3D11KHR</strong></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -10144,7 +10462,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d11_sharing-lifetime-of-shared-objects">14.7.2. Lifetime of Shared Objects</h4>
+<h4 id="cl_khr_d3d11_sharing-lifetime-of-shared-objects"><a class="anchor" href="#cl_khr_d3d11_sharing-lifetime-of-shared-objects"></a>14.7.2. Lifetime of Shared Objects</h4>
 <div class="paragraph">
 <p>An OpenCL memory object created from a Direct3D 11 resource remains valid as
 long as the corresponding Direct3D 11 resource has not been deleted.
@@ -10173,7 +10491,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d11_sharing-sharing-direct3d-11-buffer-resources-as-opencl-buffer-objects">14.7.3. Sharing Direct3D 11 Buffer Resources as OpenCL Buffer Objects</h4>
+<h4 id="cl_khr_d3d11_sharing-sharing-direct3d-11-buffer-resources-as-opencl-buffer-objects"><a class="anchor" href="#cl_khr_d3d11_sharing-sharing-direct3d-11-buffer-resources-as-opencl-buffer-objects"></a>14.7.3. Sharing Direct3D 11 Buffer Resources as OpenCL Buffer Objects</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -10245,7 +10563,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d11_sharing-sharing-direct3d-11-texture-and-resources-as-opencl-image-objects">14.7.4. Sharing Direct3D 11 Texture and Resources as OpenCL Image Objects</h4>
+<h4 id="cl_khr_d3d11_sharing-sharing-direct3d-11-texture-and-resources-as-opencl-image-objects"><a class="anchor" href="#cl_khr_d3d11_sharing-sharing-direct3d-11-texture-and-resources-as-opencl-image-objects"></a>14.7.4. Sharing Direct3D 11 Texture and Resources as OpenCL Image Objects</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -10426,7 +10744,7 @@
 zero.</p>
 </div>
 <table id="cl_khr_d3d11_sharing-mapping-of-image-formats" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 34. <em>Direct3D 11 formats and corresponding OpenCL image formats</em></caption>
+<caption class="title">Table 36. <em>Direct3D 11 formats and corresponding OpenCL image formats</em></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -10624,7 +10942,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d11_sharing-querying-direct3d-properties-of-memory-objects-created-from-direct3d-11-resources">14.7.5. Querying Direct3D properties of memory objects created from Direct3D 11 resources</h4>
+<h4 id="cl_khr_d3d11_sharing-querying-direct3d-properties-of-memory-objects-created-from-direct3d-11-resources"><a class="anchor" href="#cl_khr_d3d11_sharing-querying-direct3d-properties-of-memory-objects-created-from-direct3d-11-resources"></a>14.7.5. Querying Direct3D properties of memory objects created from Direct3D 11 resources</h4>
 <div class="paragraph">
 <p>Properties of Direct3D 11 objects may be queried using <strong>clGetMemObjectInfo</strong>
 and <strong>clGetImageInfo</strong> with <em>param_name</em> CL_MEM_D3D11_RESOURCE_KHR and</p>
@@ -10635,7 +10953,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_d3d11_sharing-sharing-memory-objects-created-from-direct3d-11-resources-between-direct3d-11-and-opencl-contexts">14.7.6. Sharing memory objects created from Direct3D 11 resources between Direct3D 11 and OpenCL contexts</h4>
+<h4 id="cl_khr_d3d11_sharing-sharing-memory-objects-created-from-direct3d-11-resources-between-direct3d-11-and-opencl-contexts"><a class="anchor" href="#cl_khr_d3d11_sharing-sharing-memory-objects-created-from-direct3d-11-resources-between-direct3d-11-and-opencl-contexts"></a>14.7.6. Sharing memory objects created from Direct3D 11 resources between Direct3D 11 and OpenCL contexts</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -10700,15 +11018,13 @@
 The events specified in <em>event_wait_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueAcquireD3D11ObjectsKHR</strong> returns CL_SUCCESS if the function is
@@ -10814,16 +11130,16 @@
 If <em>event_wait_list</em> is <code>NULL</code>, <em>num_events_in_wait_list</em> must be 0.
 If <em>event_wait_list</em> is not <code>NULL</code>, the list of events pointed to by
 <em>event_wait_list</em> must be valid and <em>num_events_in_wait_list</em> must be
-greater than 0.
-The event specified by <em>event</em> returns an event object that identifies this
-particular command and can be used to query or queue a wait for this
-particular command to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+greater than 0.</p>
+</div>
+<div class="paragraph">
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueReleaseD3D11ObjectsKHR</strong> returns CL_SUCCESS if the function is
@@ -10871,14 +11187,45 @@
 </ul>
 </div>
 </div>
+<div class="sect3">
+<h4 id="cl_khr_d3d11_sharing-event-command-types"><a class="anchor" href="#cl_khr_d3d11_sharing-event-command-types"></a>14.7.7. Event Command Types for Sharing memory objects that map to Direct3D 11 objects</h4>
+<div class="paragraph">
+<p>The following table describes the event command types for the OpenCL commands
+to acquire and release OpenCL memory objects that have been created from
+Direct3D 11 objects:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 37. List of supported event command types</caption>
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Events Created By</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Event Command Type</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueAcquireD3D11ObjectsKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>ACQUIRE_<wbr>D3D11_<wbr>OBJECTS_<wbr>KHR</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueReleaseD3D11ObjectsKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>RELEASE_<wbr>D3D11_<wbr>OBJECTS_<wbr>KHR</code></p></td>
+</tr>
+</tbody>
+</table>
+</div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_dx9_media_sharing">15. Creating OpenCL Memory Objects from DirectX 9 Media Surfaces</h2>
+<h2 id="cl_khr_dx9_media_sharing"><a class="anchor" href="#cl_khr_dx9_media_sharing"></a>15. Creating OpenCL Memory Objects from DirectX 9 Media Surfaces</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_dx9_media_sharing-overview">15.1. Overview</h3>
+<h3 id="cl_khr_dx9_media_sharing-overview"><a class="anchor" href="#cl_khr_dx9_media_sharing-overview"></a>15.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_dx9_media_sharing</strong> extension.
 The goal of this extension is to allow applications to use media surfaces as
@@ -10894,9 +11241,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_14">15.2. General information</h3>
+<h3 id="_general_information_14"><a class="anchor" href="#_general_information_14"></a>15.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_14">15.2.1. Version history</h4>
+<h4 id="_version_history_14"><a class="anchor" href="#_version_history_14"></a>15.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -10921,7 +11268,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_dx9_media_sharing-new-procedures-and-functions">15.3. New Procedures and Functions</h3>
+<h3 id="cl_khr_dx9_media_sharing-new-procedures-and-functions"><a class="anchor" href="#cl_khr_dx9_media_sharing-new-procedures-and-functions"></a>15.3. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_int clGetDeviceIDsFromDX9MediaAdapterKHR(
@@ -10958,7 +11305,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_dx9_media_sharing-new-tokens">15.4. New Tokens</h3>
+<h3 id="cl_khr_dx9_media_sharing-new-tokens"><a class="anchor" href="#cl_khr_dx9_media_sharing-new-tokens"></a>15.4. New Tokens</h3>
 <div class="paragraph">
 <p>Accepted by the <em>media_adapter_type</em> parameter of
 <strong>clGetDeviceIDsFromDX9MediaAdapterKHR</strong>:</p>
@@ -11065,7 +11412,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_dx9_media_sharing-additions-to-chapter-4">15.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_dx9_media_sharing-additions-to-chapter-4"><a class="anchor" href="#cl_khr_dx9_media_sharing-additions-to-chapter-4"></a>15.5. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>In <em>section 4.4</em>, replace the description of <em>properties</em> under
 <strong>clCreateContext</strong> with:</p>
@@ -11134,7 +11481,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_dx9_media_sharing-additions-to-chapter-5">15.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_dx9_media_sharing-additions-to-chapter-5"><a class="anchor" href="#cl_khr_dx9_media_sharing-additions-to-chapter-5"></a>15.6. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add to the list of errors for <strong>clGetMemObjectInfo</strong>:</p>
 </div>
@@ -11227,7 +11574,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_dx9_media_sharing-sharing-media-surfaces-with-opencl">15.7. Sharing Media Surfaces with OpenCL</h3>
+<h3 id="cl_khr_dx9_media_sharing-sharing-media-surfaces-with-opencl"><a class="anchor" href="#cl_khr_dx9_media_sharing-sharing-media-surfaces-with-opencl"></a>15.7. Sharing Media Surfaces with OpenCL</h3>
 <div class="paragraph">
 <p>This section discusses OpenCL functions that allow applications to use media
 surfaces as OpenCL memory objects.
@@ -11239,7 +11586,7 @@
 OpenCL context has been created from a media adapter.</p>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_dx9_media_sharing-querying-opencl-devices-corresponding-to-media-adapters">15.7.1. Querying OpenCL Devices corresponding to Media Adapters</h4>
+<h4 id="cl_khr_dx9_media_sharing-querying-opencl-devices-corresponding-to-media-adapters"><a class="anchor" href="#cl_khr_dx9_media_sharing-querying-opencl-devices-corresponding-to-media-adapters"></a>15.7.1. Querying OpenCL Devices corresponding to Media Adapters</h4>
 <div class="paragraph">
 <p>Media adapters are an abstraction associated with devices that provide media
 capabilities.</p>
@@ -11278,7 +11625,7 @@
 described in the table below.</p>
 </div>
 <table id="cl_khr_dx9_media_sharing-media-adapter-types" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 35. <em>cl_dx9_media_adapter_type_khr values</em></caption>
+<caption class="title">Table 38. <em>cl_dx9_media_adapter_type_khr values</em></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -11305,7 +11652,7 @@
 </tbody>
 </table>
 <table id="cl_khr_dx9_media_sharing-media-adapter-sets" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 36. <em>cl_dx9_media_adapter_set_khr values</em></caption>
+<caption class="title">Table 39. <em>cl_dx9_media_adapter_set_khr values</em></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -11399,7 +11746,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_dx9_media_sharing-creating-media-resources-as-opencl-image-objects">15.7.2. Creating Media Resources as OpenCL Image Objects</h4>
+<h4 id="cl_khr_dx9_media_sharing-creating-media-resources-as-opencl-image-objects"><a class="anchor" href="#cl_khr_dx9_media_sharing-creating-media-resources-as-opencl-image-objects"></a>15.7.2. Creating Media Resources as OpenCL Image Objects</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -11538,7 +11885,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_dx9_media_sharing-querying-media-surface-properties-of-memory-objects-created-from-media-surfaces">15.7.3. Querying Media Surface Properties of Memory Objects created from Media Surfaces</h4>
+<h4 id="cl_khr_dx9_media_sharing-querying-media-surface-properties-of-memory-objects-created-from-media-surfaces"><a class="anchor" href="#cl_khr_dx9_media_sharing-querying-media-surface-properties-of-memory-objects-created-from-media-surfaces"></a>15.7.3. Querying Media Surface Properties of Memory Objects created from Media Surfaces</h4>
 <div class="paragraph">
 <p>Properties of media surface objects may be queried using
 <strong>clGetMemObjectInfo</strong> and <strong>clGetImageInfo</strong> with <em>param_name</em>
@@ -11547,7 +11894,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_dx9_media_sharing-sharing-memory-objects-created-from-media-surfaces-between-a-media-adapter-and-opencl">15.7.4. Sharing Memory Objects created from Media Surfaces between a Media Adapter and OpenCL</h4>
+<h4 id="cl_khr_dx9_media_sharing-sharing-memory-objects-created-from-media-surfaces-between-a-media-adapter-and-opencl"><a class="anchor" href="#cl_khr_dx9_media_sharing-sharing-memory-objects-created-from-media-surfaces-between-a-media-adapter-and-opencl"></a>15.7.4. Sharing Memory Objects created from Media Surfaces between a Media Adapter and OpenCL</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -11614,15 +11961,13 @@
 The events specified in <em>event_wait_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueAcquireDX9MediaSurfacesKHR</strong> returns CL_SUCCESS if the function is
@@ -11729,16 +12074,16 @@
 If <em>event_wait_list</em> is <code>NULL</code>, <em>num_events_in_wait_list</em> must be 0.
 If <em>event_wait_list</em> is not <code>NULL</code>, the list of events pointed to by
 <em>event_wait_list</em> must be valid and <em>num_events_in_wait_list</em> must be
-greater than 0.
-The event specified by <em>event</em> returns an event object that identifies this
-particular command and can be used to query or queue a wait for this
-particular command to complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.
-If the <em>event_wait_list</em> and the <em>event</em> arguments are not <code>NULL</code>, the
-<em>event</em> argument should not refer to an element of the <em>event_wait_list</em>
-array.</p>
+greater than 0.</p>
+</div>
+<div class="paragraph">
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueReleaseDX9MediaSurfaceKHR</strong> returns CL_SUCCESS if the function is
@@ -11787,7 +12132,38 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_dx9_media_sharing-surface-formats-for-media-surface-sharing">15.7.5. Surface formats for Media Surface Sharing</h4>
+<h4 id="cl_khr_dx9_media_sharing-event-command-types"><a class="anchor" href="#cl_khr_dx9_media_sharing-event-command-types"></a>15.7.5. Event Command Types for Sharing Memory Objects created from Media Surfaces</h4>
+<div class="paragraph">
+<p>The following table describes the event command types for the OpenCL commands
+to acquire and release OpenCL memory objects that have been created from
+media surfaces:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 40. List of supported event command types</caption>
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Events Created By</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Event Command Type</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueAcquireDX9MediaSurfacesKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>ACQUIRE_<wbr>DX9_<wbr>MEDIA_<wbr>SURFACES_<wbr>KHR</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueReleaseDX9MediaSurfacesKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>RELEASE_<wbr>DX9_<wbr>MEDIA_<wbr>SURFACES_<wbr>KHR</code></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="cl_khr_dx9_media_sharing-surface-formats-for-media-surface-sharing"><a class="anchor" href="#cl_khr_dx9_media_sharing-surface-formats-for-media-surface-sharing"></a>15.7.6. Surface formats for Media Surface Sharing</h4>
 <div class="paragraph">
 <p>This section includes the D3D surface formats that are supported when the
 adapter type is one of the Direct 3D lineage .
@@ -11805,7 +12181,7 @@
 corresponding OpenCL image formats</em></a>.</p>
 </div>
 <table id="cl_khr_dx9_media_sharing-fourcc-image-formats" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 37. <em>YUV FourCC codes and corresponding OpenCL image format</em></caption>
+<caption class="title">Table 41. <em>YUV FourCC codes and corresponding OpenCL image format</em></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -11852,7 +12228,7 @@
 to RGB conversion and vice-versa.</p>
 </div>
 <table id="cl_khr_dx9_media_sharing-d3d-image-formats" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 38. <em>Direct3D formats and corresponding OpenCL image formats</em></caption>
+<caption class="title">Table 42. <em>Direct3D formats and corresponding OpenCL image formats</em></caption>
 <colgroup>
 <col style="width: 50%;">
 <col style="width: 50%;">
@@ -11951,7 +12327,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_depth_images">16. Depth Images</h2>
+<h2 id="cl_khr_depth_images"><a class="anchor" href="#cl_khr_depth_images"></a>16. Depth Images</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_depth_images</strong> extension.</p>
@@ -11963,9 +12339,9 @@
 <p>This extension became a core feature in OpenCL 2.0.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_15">16.1. General information</h3>
+<h3 id="_general_information_15"><a class="anchor" href="#_general_information_15"></a>16.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_15">16.1.1. Version history</h4>
+<h4 id="_version_history_15"><a class="anchor" href="#_version_history_15"></a>16.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -11990,7 +12366,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_depth_images-additions-to-chapter-5">16.2. Additions to Chapter 5 of the OpenCL 1.2 Specification</h3>
+<h3 id="cl_khr_depth_images-additions-to-chapter-5"><a class="anchor" href="#cl_khr_depth_images-additions-to-chapter-5"></a>16.2. Additions to Chapter 5 of the OpenCL 1.2 Specification</h3>
 <div class="paragraph">
 <p>This extension adds the following new image formats for depth images to <em>tables 5.6 and 5.7</em> of the OpenCL 1.2 specification.</p>
 </div>
@@ -12035,7 +12411,7 @@
 <p>This extension adds the following new image format to the minimum list of supported image formats described in <em>table 5.8</em>:</p>
 </div>
 <table id="cl_khr_depth_images-required-image-formats" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 39. <em>Required Image Formats for</em> <strong>cl_khr_depth_images</strong></caption>
+<caption class="title">Table 43. <em>Required Image Formats for</em> <strong>cl_khr_depth_images</strong></caption>
 <colgroup>
 <col style="width: 33.3333%;">
 <col style="width: 33.3333%;">
@@ -12082,7 +12458,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_depth_images-additions-to-chapter-6">16.3. Additions to Chapter 6 of the OpenCL 1.2 Specification</h3>
+<h3 id="cl_khr_depth_images-additions-to-chapter-6"><a class="anchor" href="#cl_khr_depth_images-additions-to-chapter-6"></a>16.3. Additions to Chapter 6 of the OpenCL 1.2 Specification</h3>
 <div class="paragraph">
 <p>Add the following new data types to <em>table 6.3</em> in <em>section 6.1.3</em> of the OpenCL 1.2 specification:</p>
 </div>
@@ -12370,7 +12746,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_gl_depth_images">17. Sharing OpenGL and OpenGL ES Depth and Depth-Stencil Images</h2>
+<h2 id="cl_khr_gl_depth_images"><a class="anchor" href="#cl_khr_gl_depth_images"></a>17. Sharing OpenGL and OpenGL ES Depth and Depth-Stencil Images</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_gl_depth_images</strong> extension.
@@ -12381,9 +12757,9 @@
 depth-stencil texture.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_16">17.1. General information</h3>
+<h3 id="_general_information_16"><a class="anchor" href="#_general_information_16"></a>17.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_16">17.1.1. Version history</h4>
+<h4 id="_version_history_16"><a class="anchor" href="#_version_history_16"></a>17.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -12408,7 +12784,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_depth_images-additions-to-chapter-5">17.2. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_gl_depth_images-additions-to-chapter-5"><a class="anchor" href="#cl_khr_gl_depth_images-additions-to-chapter-5"></a>17.2. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>The <strong>cl_khr_gl_depth_images</strong> extension extends OpenCL / OpenGL sharing by
 allowing an OpenCL depth image to be created from an OpenGL depth or
@@ -12464,7 +12840,7 @@
 supported image formats described in <em>tables 5.8.a</em> and <em>5.8.b</em>.</p>
 </div>
 <table id="cl_khr_gl_depth_images-required-image-formats" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 40. <em>Required Image Formats for</em> <strong>cl_khr_gl_depth_images</strong></caption>
+<caption class="title">Table 44. <em>Required Image Formats for</em> <strong>cl_khr_gl_depth_images</strong></caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -12511,7 +12887,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_depth_images-additions-to-extension-specification">17.3. Additions to the OpenCL Extension Specification</h3>
+<h3 id="cl_khr_gl_depth_images-additions-to-extension-specification"><a class="anchor" href="#cl_khr_gl_depth_images-additions-to-extension-specification"></a>17.3. Additions to the OpenCL Extension Specification</h3>
 <div class="paragraph">
 <p>The following new image formats are added to the table of
 <a href="#cl_khr_gl_sharing__memobjs-mapping-of-image-formats">OpenGL internal
@@ -12557,7 +12933,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_gl_msaa_sharing">18. Creating OpenCL Memory Objects from OpenGL MSAA Textures</h2>
+<h2 id="cl_khr_gl_msaa_sharing"><a class="anchor" href="#cl_khr_gl_msaa_sharing"></a>18. Creating OpenCL Memory Objects from OpenGL MSAA Textures</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This extension extends the OpenCL / OpenGL sharing (the
@@ -12572,9 +12948,9 @@
 This extension requires <strong>cl_khr_gl_depth_images</strong>.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_17">18.1. General information</h3>
+<h3 id="_general_information_17"><a class="anchor" href="#_general_information_17"></a>18.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_17">18.1.1. Version history</h4>
+<h4 id="_version_history_17"><a class="anchor" href="#_version_history_17"></a>18.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -12599,7 +12975,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_msaa_sharing-additions-to-extension-specification">18.2. Additions to the OpenCL Extension Specification</h3>
+<h3 id="cl_khr_gl_msaa_sharing-additions-to-extension-specification"><a class="anchor" href="#cl_khr_gl_msaa_sharing-additions-to-extension-specification"></a>18.2. Additions to the OpenCL Extension Specification</h3>
 <div class="paragraph">
 <p>Allow <em>texture_target</em> argument to <strong>clCreateFromGLTexture</strong> to be
 GL_TEXTURE_2D_MULTISAMPLE or GL_TEXTURE_2D_MULTISAMPLE_ARRAY.</p>
@@ -12651,7 +13027,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_msaa_sharing-additions-to-chapter-5">18.3. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_gl_msaa_sharing-additions-to-chapter-5"><a class="anchor" href="#cl_khr_gl_msaa_sharing-additions-to-chapter-5"></a>18.3. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>The formats described in tables 5.8.a and 5.8.b of the OpenCL 2.2
 specification and the additional formats described in
@@ -12688,7 +13064,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_gl_msaa_sharing-additions-to-chapter-6">18.4. Additions to Chapter 6 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_gl_msaa_sharing-additions-to-chapter-6"><a class="anchor" href="#cl_khr_gl_msaa_sharing-additions-to-chapter-6"></a>18.4. Additions to Chapter 6 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p><strong>Add the following new data types to <em>table 6.3</em> in <em>section 6.1.3</em> of the
 OpenCL 2.2 specification:</strong></p>
@@ -13089,10 +13465,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_egl_event">19. Creating OpenCL Event Objects from EGL Sync Objects</h2>
+<h2 id="cl_khr_egl_event"><a class="anchor" href="#cl_khr_egl_event"></a>19. Creating OpenCL Event Objects from EGL Sync Objects</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_egl_event-overview">19.1. Overview</h3>
+<h3 id="cl_khr_egl_event-overview"><a class="anchor" href="#cl_khr_egl_event-overview"></a>19.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_egl_event</strong> extension.
 This extension allows creating OpenCL event objects linked to EGL fence sync
@@ -13103,9 +13479,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_18">19.2. General information</h3>
+<h3 id="_general_information_18"><a class="anchor" href="#_general_information_18"></a>19.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_18">19.2.1. Version history</h4>
+<h4 id="_version_history_18"><a class="anchor" href="#_version_history_18"></a>19.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -13130,7 +13506,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_event-new-procedures-and-functions">19.3. New Procedures and Functions</h3>
+<h3 id="cl_khr_egl_event-new-procedures-and-functions"><a class="anchor" href="#cl_khr_egl_event-new-procedures-and-functions"></a>19.3. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_event clCreateEventFromEGLSyncKHR(cl_context context,
@@ -13141,7 +13517,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_event-new-tokens">19.4. New Tokens</h3>
+<h3 id="cl_khr_egl_event-new-tokens"><a class="anchor" href="#cl_khr_egl_event-new-tokens"></a>19.4. New Tokens</h3>
 <div class="paragraph">
 <p>Returned by clCreateEventFromEGLSyncKHR if <em>sync</em> is not a valid EGLSyncKHR
 handle created with respect to EGLDisplay <em>display</em>:</p>
@@ -13161,7 +13537,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_event-additions-to-chapter-5">19.5. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_egl_event-additions-to-chapter-5"><a class="anchor" href="#cl_khr_egl_event-additions-to-chapter-5"></a>19.5. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add following to the fourth paragraph of <em>section 5.11</em> (prior to the
 description of <strong>clWaitForEvents</strong>):</p>
@@ -13283,7 +13659,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_event-additions-to-extension-specification">19.6. Additions to the OpenCL Extension Specification</h3>
+<h3 id="cl_khr_egl_event-additions-to-extension-specification"><a class="anchor" href="#cl_khr_egl_event-additions-to-extension-specification"></a>19.6. Additions to the OpenCL Extension Specification</h3>
 <div class="paragraph">
 <p>Replace the second paragraph of
 <a href="#cl_khr_gl_sharing__memobjs-synchronizing-opencl-and-opengl-access-to-shared-objects">Synchronizing OpenCL and OpenGL Access to Shared Objects</a> with:</p>
@@ -13317,7 +13693,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_event-issues">19.7. Issues</h3>
+<h3 id="cl_khr_egl_event-issues"><a class="anchor" href="#cl_khr_egl_event-issues"></a>19.7. Issues</h3>
 <div class="paragraph">
 <p>Most issues are shared with <strong>cl_khr_gl_event</strong> and are resolved as described
 in that extension.</p>
@@ -13377,10 +13753,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_egl_image">20. Creating OpenCL Memory Objects from EGL Images</h2>
+<h2 id="cl_khr_egl_image"><a class="anchor" href="#cl_khr_egl_image"></a>20. Creating OpenCL Memory Objects from EGL Images</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="cl_khr_egl_image-overview">20.1. Overview</h3>
+<h3 id="cl_khr_egl_image-overview"><a class="anchor" href="#cl_khr_egl_image-overview"></a>20.1. Overview</h3>
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_egl_image</strong> extension.
 This extension provides a mechanism to creating OpenCL memory objects from
@@ -13388,9 +13764,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_19">20.2. General information</h3>
+<h3 id="_general_information_19"><a class="anchor" href="#_general_information_19"></a>20.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_19">20.2.1. Version history</h4>
+<h4 id="_version_history_19"><a class="anchor" href="#_version_history_19"></a>20.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -13415,7 +13791,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_image-new-procedures-and-functions">20.3. New Procedures and Functions</h3>
+<h3 id="cl_khr_egl_image-new-procedures-and-functions"><a class="anchor" href="#cl_khr_egl_image-new-procedures-and-functions"></a>20.3. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_mem clCreateFromEGLImageKHR(cl_context context,
@@ -13442,7 +13818,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_image-new-tokens">20.4. New Tokens</h3>
+<h3 id="cl_khr_egl_image-new-tokens"><a class="anchor" href="#cl_khr_egl_image-new-tokens"></a>20.4. New Tokens</h3>
 <div class="paragraph">
 <p>New error codes:</p>
 </div>
@@ -13463,7 +13839,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_image-additions-to-chapter-5">20.5. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_egl_image-additions-to-chapter-5"><a class="anchor" href="#cl_khr_egl_image-additions-to-chapter-5"></a>20.5. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>In section 5.2.4, add the following text after the paragraph defining
 clCreateImage:</p>
@@ -13571,7 +13947,7 @@
 </ul>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_egl_image-lifetime-of-shared-objects">20.5.1. Lifetime of Shared Objects</h4>
+<h4 id="cl_khr_egl_image-lifetime-of-shared-objects"><a class="anchor" href="#cl_khr_egl_image-lifetime-of-shared-objects"></a>20.5.1. Lifetime of Shared Objects</h4>
 <div class="paragraph">
 <p>An OpenCL memory object created from an EGL image remains valid according to
 the lifetime behavior as described in EGL_KHR_image_base.</p>
@@ -13585,7 +13961,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_egl_image-synchronizing-opengl-and-egl-access-to-shared-objects">20.5.2. Synchronizing OpenCL and EGL Access to Shared Objects</h4>
+<h4 id="cl_khr_egl_image-synchronizing-opengl-and-egl-access-to-shared-objects"><a class="anchor" href="#cl_khr_egl_image-synchronizing-opengl-and-egl-access-to-shared-objects"></a>20.5.2. Synchronizing OpenCL and EGL Access to Shared Objects</h4>
 <div class="paragraph">
 <p>In order to ensure data integrity, the application is responsible for
 synchronizing access to shared CL/EGL objects by their respective APIs.
@@ -13622,7 +13998,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_egl_image-sharing-memory-objects-created-from-egl-resources-between-egldisplays-and-opencl-contexts">20.5.3. Sharing memory objects created from EGL resources between EGLDisplays and OpenCL contexts</h4>
+<h4 id="cl_khr_egl_image-sharing-memory-objects-created-from-egl-resources-between-egldisplays-and-opencl-contexts"><a class="anchor" href="#cl_khr_egl_image-sharing-memory-objects-created-from-egl-resources-between-egldisplays-and-opencl-contexts"></a>20.5.3. Sharing memory objects created from EGL resources between EGLDisplays and OpenCL contexts</h4>
 <div class="paragraph">
 <p>The function
 </p>
@@ -13674,12 +14050,13 @@
 The events specified in <em>event_wait_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueAcquireEGLObjectsKHR</strong> returns CL_SUCCESS if the function is
@@ -13774,12 +14151,13 @@
 The events specified in <em>event_wait_list</em> act as synchronization points.</p>
 </div>
 <div class="paragraph">
-<p><em>event</em> returns an event object that identifies this particular command and
-can be used to query or queue a wait for this particular command to
-complete.
-<em>event</em> can be <code>NULL</code> in which case it will not be possible for the
-application to query the status of this command or queue a wait for this
-command to complete.</p>
+<p><em>event</em> returns an event object that identifies this command and
+can be used to query or wait for this command to complete.
+If <em>event</em> is <code>NULL</code> or the enqueue is unsuccessful, no event will be
+created and therefore it will not be possible to query the status of this
+command or to wait for this command to complete.
+If <em>event_wait_list</em> and <em>event</em> are not <code>NULL</code>, <em>event</em> must not refer
+to an element of the <em>event_wait_list</em> array.</p>
 </div>
 <div class="paragraph">
 <p><strong>clEnqueueReleaseEGLObjectsKHR</strong> returns CL_SUCCESS if the function is
@@ -13823,9 +14201,40 @@
 </ul>
 </div>
 </div>
+<div class="sect3">
+<h4 id="cl_khr_egl_image-event-command-types"><a class="anchor" href="#cl_khr_egl_image-event-command-types"></a>20.5.4. Event Command Types for Sharing memory objects created from EGL resources</h4>
+<div class="paragraph">
+<p>The following table describes the event command types for the OpenCL commands
+to acquire and release OpenCL memory objects that have been created from
+EGL resources:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 45. List of supported event command types</caption>
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Events Created By</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Event Command Type</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueAcquireEGLObjectsKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>ACQUIRE_<wbr>EGL_<wbr>OBJECTS_<wbr>KHR</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>clEnqueueReleaseEGLObjectsKHR</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_COMMAND_<wbr>RELEASE_<wbr>EGL_<wbr>OBJECTS_<wbr>KHR</code></p></td>
+</tr>
+</tbody>
+</table>
+</div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_egl_image-issues">20.6. Issues</h3>
+<h3 id="cl_khr_egl_image-issues"><a class="anchor" href="#cl_khr_egl_image-issues"></a>20.6. Issues</h3>
 <div class="olist arabic">
 <ol class="arabic">
 <li>
@@ -13931,7 +14340,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_image2d_from_buffer">21. Creating a 2D Image From A Buffer</h2>
+<h2 id="cl_khr_image2d_from_buffer"><a class="anchor" href="#cl_khr_image2d_from_buffer"></a>21. Creating a 2D Image From A Buffer</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_image2d_from_buffer</strong> extension.</p>
@@ -13943,9 +14352,9 @@
 <p>This extension became a core feature in OpenCL 2.0.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_20">21.1. General information</h3>
+<h3 id="_general_information_20"><a class="anchor" href="#_general_information_20"></a>21.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_20">21.1.1. Version history</h4>
+<h4 id="_version_history_20"><a class="anchor" href="#_version_history_20"></a>21.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -13970,7 +14379,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_additions_to_chapter_4_of_the_opencl_1_2_specification">21.2. Additions to Chapter 4 of the OpenCL 1.2 Specification</h3>
+<h3 id="_additions_to_chapter_4_of_the_opencl_1_2_specification"><a class="anchor" href="#_additions_to_chapter_4_of_the_opencl_1_2_specification"></a>21.2. Additions to Chapter 4 of the OpenCL 1.2 Specification</h3>
 <div class="paragraph">
 <p>The following table entry describes the additions to <em>table 4.3,</em> which allows applications to query the configuration information using <strong>clGetDeviceInfo</strong> for an OpenCL device that supports creating a 2D image from a buffer.</p>
 </div>
@@ -14010,7 +14419,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="_additions_to_chapter_5_of_the_opencl_1_2_specification">21.3. Additions to Chapter 5 of the OpenCL 1.2 Specification</h3>
+<h3 id="_additions_to_chapter_5_of_the_opencl_1_2_specification"><a class="anchor" href="#_additions_to_chapter_5_of_the_opencl_1_2_specification"></a>21.3. Additions to Chapter 5 of the OpenCL 1.2 Specification</h3>
 <div class="paragraph">
 <p>Add to Section 5.3.1: Creating Image Objects:</p>
 </div>
@@ -14048,7 +14457,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_initialize_memory">22. Local and Private Memory Initialization</h2>
+<h2 id="cl_khr_initialize_memory"><a class="anchor" href="#cl_khr_initialize_memory"></a>22. Local and Private Memory Initialization</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Memory is allocated in various forms in OpenCL both explicitly (global
@@ -14067,9 +14476,9 @@
 This extension name is <strong>cl_khr_initialize_memory</strong>.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_21">22.1. General information</h3>
+<h3 id="_general_information_21"><a class="anchor" href="#_general_information_21"></a>22.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_21">22.1.1. Version history</h4>
+<h4 id="_version_history_21"><a class="anchor" href="#_version_history_21"></a>22.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -14094,7 +14503,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_initialize_memory-additions-to-chapter-4">22.2. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_initialize_memory-additions-to-chapter-4"><a class="anchor" href="#cl_khr_initialize_memory-additions-to-chapter-4"></a>22.2. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add a new context property to <em>table 4.5</em> in <em>section 4.4</em>.</p>
 </div>
@@ -14126,7 +14535,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_initialize_memory-additions-to-chapter-6">22.3. Additions to Chapter 6 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_initialize_memory-additions-to-chapter-6"><a class="anchor" href="#cl_khr_initialize_memory-additions-to-chapter-6"></a>22.3. Additions to Chapter 6 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Updates to <em>section 6.9</em>&#8201;&#8212;&#8201;Restrictions</p>
 </div>
@@ -14143,7 +14552,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_terminate_context">23. Terminating OpenCL contexts</h2>
+<h2 id="cl_khr_terminate_context"><a class="anchor" href="#cl_khr_terminate_context"></a>23. Terminating OpenCL contexts</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Today, OpenCL provides an API to release a context.
@@ -14172,9 +14581,9 @@
 <p>The extension name is <strong>cl_khr_terminate_context</strong>.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_22">23.1. General information</h3>
+<h3 id="_general_information_22"><a class="anchor" href="#_general_information_22"></a>23.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_22">23.1.1. Version history</h4>
+<h4 id="_version_history_22"><a class="anchor" href="#_version_history_22"></a>23.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -14199,7 +14608,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_terminate_context-additions-to-chapter-4">23.2. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_terminate_context-additions-to-chapter-4"><a class="anchor" href="#cl_khr_terminate_context-additions-to-chapter-4"></a>23.2. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p>Add a new device property to <em>table 4.3</em> in <em>section 4.2</em>.</p>
 </div>
@@ -14283,7 +14692,7 @@
 <p>The execution status of enqueued commands will be CL_TERMINATED_KHR.
 Event objects can be queried using <strong>clGetEventInfo</strong>.
 Event callbacks can be registered and registered event callbacks will be
-called with <em>event_command_exec_status</em> set to CL_TERMINATED_KHR.
+called with <em>event_command_status</em> set to CL_TERMINATED_KHR.
 <strong>clWaitForEvents</strong> will return as immediately for commands associated
 with event objects specified in event_list.
 The status of user events can be set.
@@ -14357,7 +14766,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_spir">24. Standard Portable Intermediate Representation Binaries</h2>
+<h2 id="cl_khr_spir"><a class="anchor" href="#cl_khr_spir"></a>24. Standard Portable Intermediate Representation Binaries</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This extension adds the ability to create an OpenCL program object from a
@@ -14372,9 +14781,9 @@
 and is a core feature in OpenCL 2.1.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_23">24.1. General information</h3>
+<h3 id="_general_information_23"><a class="anchor" href="#_general_information_23"></a>24.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_23">24.1.1. Version history</h4>
+<h4 id="_version_history_23"><a class="anchor" href="#_version_history_23"></a>24.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -14399,7 +14808,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_spir-additions-to-chapter-4">24.2. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_spir-additions-to-chapter-4"><a class="anchor" href="#cl_khr_spir-additions-to-chapter-4"></a>24.2. Additions to Chapter 4 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p><strong>Add a new device property to <em>table 4.3</em> in <em>section 4.2</em>:</strong></p>
 </div>
@@ -14428,7 +14837,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_spir-additions-to-chapter-5">24.3. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_spir-additions-to-chapter-5"><a class="anchor" href="#cl_khr_spir-additions-to-chapter-5"></a>24.3. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="paragraph">
 <p><strong>Additions to <em>section 5.8.1</em>&#8201;&#8212;&#8201;Creating Program Objects:</strong></p>
 </div>
@@ -14513,7 +14922,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_il_program">25. Intermediate Language Programs</h2>
+<h2 id="cl_khr_il_program"><a class="anchor" href="#cl_khr_il_program"></a>25. Intermediate Language Programs</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_il_program</strong> extension.</p>
@@ -14528,9 +14937,9 @@
 <p>This functionality described by this extension is a core feature in OpenCL 2.1.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_24">25.1. General information</h3>
+<h3 id="_general_information_24"><a class="anchor" href="#_general_information_24"></a>25.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_24">25.1.1. Version history</h4>
+<h4 id="_version_history_24"><a class="anchor" href="#_version_history_24"></a>25.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -14555,7 +14964,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_il_program-new-procedures-and-functions">25.2. New Procedures and Functions</h3>
+<h3 id="cl_khr_il_program-new-procedures-and-functions"><a class="anchor" href="#cl_khr_il_program-new-procedures-and-functions"></a>25.2. New Procedures and Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_program clCreateProgramWithILKHR(cl_context context,
@@ -14566,7 +14975,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_il_program-new-tokens">25.3. New Tokens</h3>
+<h3 id="cl_khr_il_program-new-tokens"><a class="anchor" href="#cl_khr_il_program-new-tokens"></a>25.3. New Tokens</h3>
 <div class="paragraph">
 <p>Accepted as a new <em>param_name</em> argument to <strong>clGetDeviceInfo</strong>:</p>
 </div>
@@ -14585,7 +14994,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_il_program-additions-to-chapter-3">25.4. Additions to Chapter 3 of the OpenCL 2.0 Specification</h3>
+<h3 id="cl_khr_il_program-additions-to-chapter-3"><a class="anchor" href="#cl_khr_il_program-additions-to-chapter-3"></a>25.4. Additions to Chapter 3 of the OpenCL 2.0 Specification</h3>
 <div class="paragraph">
 <p>In section 3.1, replace the fourth paragraph with:</p>
 </div>
@@ -14594,7 +15003,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_il_program-additions-to-chapter-4">25.5. Additions to Chapter 4 of the OpenCL 2.0 Specification</h3>
+<h3 id="cl_khr_il_program-additions-to-chapter-4"><a class="anchor" href="#cl_khr_il_program-additions-to-chapter-4"></a>25.5. Additions to Chapter 4 of the OpenCL 2.0 Specification</h3>
 <div class="paragraph">
 <p>Add a new device property to <strong>Table 4.3</strong> <em>OpenCL Device Queries</em>:</p>
 </div>
@@ -14627,7 +15036,7 @@
 </table>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_il_program-additions-to-chapter-5">25.6. Additions to Chapter 5 of the OpenCL 2.0 Specification</h3>
+<h3 id="cl_khr_il_program-additions-to-chapter-5"><a class="anchor" href="#cl_khr_il_program-additions-to-chapter-5"></a>25.6. Additions to Chapter 5 of the OpenCL 2.0 Specification</h3>
 <div class="paragraph">
 <p>Add to Section 5.8.1: Creating Program Objects:</p>
 </div>
@@ -14790,10 +15199,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_create_command_queue">26. Creating Command Queues with Properties</h2>
+<h2 id="cl_khr_create_command_queue"><a class="anchor" href="#cl_khr_create_command_queue"></a>26. Creating Command Queues with Properties</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="_overview">26.1. Overview</h3>
+<h3 id="_overview"><a class="anchor" href="#_overview"></a>26.1. Overview</h3>
 <div class="paragraph">
 <p>The section describes the <strong>cl_khr_create_command_queue</strong> extension.</p>
 </div>
@@ -14820,9 +15229,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_general_information_25">26.2. General information</h3>
+<h3 id="_general_information_25"><a class="anchor" href="#_general_information_25"></a>26.2. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_25">26.2.1. Version history</h4>
+<h4 id="_version_history_25"><a class="anchor" href="#_version_history_25"></a>26.2.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -14847,7 +15256,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_new_api_functions">26.3. New API Functions</h3>
+<h3 id="_new_api_functions"><a class="anchor" href="#_new_api_functions"></a>26.3. New API Functions</h3>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="c">cl_command_queue clCreateCommandQueueWithPropertiesKHR(
@@ -14859,15 +15268,15 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_new_api_types">26.4. New API Types</h3>
+<h3 id="_new_api_types"><a class="anchor" href="#_new_api_types"></a>26.4. New API Types</h3>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="c"><span class="keyword">typedef</span> cl_bitfield cl_queue_properties_khr;</code></pre>
+<pre class="CodeRay highlight"><code data-lang="c"><span class="keyword">typedef</span> cl_properties cl_queue_properties_khr;</code></pre>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_modifications_to_the_opencl_1_2_specification">26.5. Modifications to the OpenCL 1.2 Specification</h3>
+<h3 id="_modifications_to_the_opencl_1_2_specification"><a class="anchor" href="#_modifications_to_the_opencl_1_2_specification"></a>26.5. Modifications to the OpenCL 1.2 Specification</h3>
 <div class="dlist">
 <dl>
 <dt class="hdlist1">(Add to Table 5.2 for CL_QUEUE_PROPERTIES in Section 5.1) </dt>
@@ -15025,7 +15434,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_device_enqueue_local_arg_types">27. Device Enqueue Local Argument Types</h2>
+<h2 id="cl_khr_device_enqueue_local_arg_types"><a class="anchor" href="#cl_khr_device_enqueue_local_arg_types"></a>27. Device Enqueue Local Argument Types</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This extension allows arguments to blocks that are passed to the <strong>enqueue_kernel</strong> built-in
@@ -15036,9 +15445,9 @@
 <p>The name of this extension is <strong>cl_khr_device_enqueue_local_arg_types</strong>.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_26">27.1. General information</h3>
+<h3 id="_general_information_26"><a class="anchor" href="#_general_information_26"></a>27.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_26">27.1.1. Version history</h4>
+<h4 id="_version_history_26"><a class="anchor" href="#_version_history_26"></a>27.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -15063,7 +15472,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_device_enqueue_local_arg_types-additions-to-chapter-6-of-the-opencl-2.0-specification">27.2. Additions to Chapter 6 of the OpenCL 2.0 C Specification</h3>
+<h3 id="cl_khr_device_enqueue_local_arg_types-additions-to-chapter-6-of-the-opencl-2.0-specification"><a class="anchor" href="#cl_khr_device_enqueue_local_arg_types-additions-to-chapter-6-of-the-opencl-2.0-specification"></a>27.2. Additions to Chapter 6 of the OpenCL 2.0 C Specification</h3>
 <div class="paragraph">
 <p>Modify the second paragraph of Section 6.13.17: Enqueuing Kernels:</p>
 </div>
@@ -15099,7 +15508,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_subgroups">28. Subgroups</h2>
+<h2 id="cl_khr_subgroups"><a class="anchor" href="#cl_khr_subgroups"></a>28. Subgroups</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_subgroups</strong> extension.</p>
@@ -15118,14 +15527,14 @@
 <p>The subgroup OpenCL C built-in functions described by this extension must still be accessed as an OpenCL C extension in OpenCL 2.1.</p>
 </li>
 <li>
-<p>Subgroup independent forward progress is an optional device property in OpenCL 2.1, see <code>CL_&#8203;DEVICE_&#8203;SUB_&#8203;GROUP_&#8203;INDEPENDENT_&#8203;FORWARD_&#8203;PROGRESS</code>.</p>
+<p>Subgroup independent forward progress is an optional device property in OpenCL 2.1, see <code>CL_DEVICE_<wbr>SUB_<wbr>GROUP_<wbr>INDEPENDENT_<wbr>FORWARD_<wbr>PROGRESS</code>.</p>
 </li>
 </ul>
 </div>
 <div class="sect2">
-<h3 id="_general_information_27">28.1. General information</h3>
+<h3 id="_general_information_27"><a class="anchor" href="#_general_information_27"></a>28.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_27">28.1.1. Version history</h4>
+<h4 id="_version_history_27"><a class="anchor" href="#_version_history_27"></a>28.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -15150,11 +15559,11 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_subgroups-additions-to-chapter-3-of-the-opencl-2.0-specification">28.2. Additions to Chapter 3 of the OpenCL 2.0 Specification</h3>
+<h3 id="cl_khr_subgroups-additions-to-chapter-3-of-the-opencl-2.0-specification"><a class="anchor" href="#cl_khr_subgroups-additions-to-chapter-3-of-the-opencl-2.0-specification"></a>28.2. Additions to Chapter 3 of the OpenCL 2.0 Specification</h3>
 
 </div>
 <div class="sect2">
-<h3 id="cl_khr_subgroups-additions-to-section-3.2-execution-model">28.3. Additions to section 3.2&#8201;&#8212;&#8201;Execution Model</h3>
+<h3 id="cl_khr_subgroups-additions-to-section-3.2-execution-model"><a class="anchor" href="#cl_khr_subgroups-additions-to-section-3.2-execution-model"></a>28.3. Additions to section 3.2&#8201;&#8212;&#8201;Execution Model</h3>
 <div class="paragraph">
 <p>Within a work-group work-items may be divided into sub-groups.
 The mapping of work-items to sub-groups is implementation-defined and may be queried at runtime.
@@ -15175,7 +15584,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_subgroups-additions-to-chapter-5-of-the-opencl-2.0-specification">28.4. Additions to Chapter 5 of the OpenCL 2.0 Specification</h3>
+<h3 id="cl_khr_subgroups-additions-to-chapter-5-of-the-opencl-2.0-specification"><a class="anchor" href="#cl_khr_subgroups-additions-to-chapter-5-of-the-opencl-2.0-specification"></a>28.4. Additions to Chapter 5 of the OpenCL 2.0 Specification</h3>
 <div class="paragraph">
 <p>The function</p>
 </div>
@@ -15241,7 +15650,7 @@
 If <em>param_value_size_ret</em> is <code>NULL</code>, it is ignored.</p>
 </div>
 <table id="cl_khr_subgroups-kernel-subgroup-info-table" class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 41. <strong>clGetKernelSubGroupInfoKHR</strong> parameter queries</caption>
+<caption class="title">Table 46. <strong>clGetKernelSubGroupInfoKHR</strong> parameter queries</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -15258,7 +15667,7 @@
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_&#8203;KERNEL_&#8203;MAX_&#8203;SUB_&#8203;GROUP_&#8203;SIZE_&#8203;FOR_&#8203;NDRANGE_&#8203;KHR</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_KERNEL_<wbr>MAX_<wbr>SUB_<wbr>GROUP_<wbr>SIZE_<wbr>FOR_<wbr>NDRANGE_<wbr>KHR</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">size_t *</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the maximum sub-group size for this kernel.
@@ -15272,7 +15681,7 @@
             the value specified for <em>input_value_size</em>.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_&#8203;KERNEL_&#8203;SUB_&#8203;GROUP_&#8203;COUNT_&#8203;FOR_&#8203;NDRANGE_&#8203;KHR</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_KERNEL_<wbr>SUB_<wbr>GROUP_<wbr>COUNT_<wbr>FOR_<wbr>NDRANGE_<wbr>KHR</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">size_t *</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of sub-groups that will be present in each
@@ -15296,39 +15705,39 @@
 <div class="ulist">
 <ul>
 <li>
-<p><code>CL_&#8203;INVALID_&#8203;DEVICE</code> if <em>device</em> is not in the list of devices associated
+<p><code>CL_INVALID_<wbr>DEVICE</code> if <em>device</em> is not in the list of devices associated
 with <em>kernel</em> or if <em>device</em> is <code>NULL</code> but there is more than one device
 associated with <em>kernel</em>.</p>
 </li>
 <li>
-<p><code>CL_&#8203;INVALID_&#8203;VALUE</code> if <em>param_name</em> is not valid, or if size in bytes
+<p><code>CL_INVALID_<wbr>VALUE</code> if <em>param_name</em> is not valid, or if size in bytes
 specified by <em>param_value_size</em> is &lt; size of return type as described in
 the <a href="#kernel-subgroup-info-table">Kernel Object Subgroup Queries</a> table
 and <em>param_value</em> is not <code>NULL</code>.</p>
 </li>
 <li>
-<p><code>CL_&#8203;INVALID_&#8203;VALUE</code> if <em>param_name</em> is
-<code>CL_&#8203;KERNEL_&#8203;MAX_&#8203;SUB_&#8203;GROUP_&#8203;SIZE_&#8203;FOR_&#8203;NDRANGE_&#8203;KHR</code> and the size in bytes specified by
+<p><code>CL_INVALID_<wbr>VALUE</code> if <em>param_name</em> is
+<code>CL_KERNEL_<wbr>MAX_<wbr>SUB_<wbr>GROUP_<wbr>SIZE_<wbr>FOR_<wbr>NDRANGE_<wbr>KHR</code> and the size in bytes specified by
 <em>input_value_size</em> is not valid or if <em>input_value</em> is <code>NULL</code>.</p>
 </li>
 <li>
-<p><code>CL_&#8203;INVALID_&#8203;KERNEL</code> if <em>kernel</em> is a not a valid kernel object.</p>
+<p><code>CL_INVALID_<wbr>KERNEL</code> if <em>kernel</em> is a not a valid kernel object.</p>
 </li>
 <li>
-<p><code>CL_&#8203;OUT_&#8203;OF_&#8203;RESOURCES</code> if there is a failure to allocate resources required
+<p><code>CL_OUT_<wbr>OF_<wbr>RESOURCES</code> if there is a failure to allocate resources required
 by the OpenCL implementation on the device.</p>
 </li>
 <li>
-<p><code>CL_&#8203;OUT_&#8203;OF_&#8203;HOST_&#8203;MEMORY</code> if there is a failure to allocate resources
+<p><code>CL_OUT_<wbr>OF_<wbr>HOST_<wbr>MEMORY</code> if there is a failure to allocate resources
 required by the OpenCL implementation on the host.</p>
 </li>
 </ul>
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_subgroups-additions-to-chapter-6-of-the-opencl-2.0-specification">28.5. Additions to Chapter 6 of the OpenCL 2.0 C Specification</h3>
+<h3 id="cl_khr_subgroups-additions-to-chapter-6-of-the-opencl-2.0-specification"><a class="anchor" href="#cl_khr_subgroups-additions-to-chapter-6-of-the-opencl-2.0-specification"></a>28.5. Additions to Chapter 6 of the OpenCL 2.0 C Specification</h3>
 <div class="sect3">
-<h4 id="cl_khr_subgroups-additions-to-section-6.13.1-work-item-functions">28.5.1. Additions to section 6.13.1&#8201;&#8212;&#8201;Work Item Functions</h4>
+<h4 id="cl_khr_subgroups-additions-to-section-6.13.1-work-item-functions"><a class="anchor" href="#cl_khr_subgroups-additions-to-section-6.13.1-work-item-functions"></a>28.5.1. Additions to section 6.13.1&#8201;&#8212;&#8201;Work Item Functions</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 50%;">
@@ -15402,7 +15811,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_subgroups-additions-to-section-6.13.8-synchronization-functions">28.5.2. Additions to section 6.13.8&#8201;&#8212;&#8201;Synchronization Functions</h4>
+<h4 id="cl_khr_subgroups-additions-to-section-6.13.8-synchronization-functions"><a class="anchor" href="#cl_khr_subgroups-additions-to-section-6.13.8-synchronization-functions"></a>28.5.2. Additions to section 6.13.8&#8201;&#8212;&#8201;Synchronization Functions</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 30%;">
@@ -15456,7 +15865,7 @@
 </table>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_subgroups-additions-to-section-6.13.11-atomic-functions">28.5.3. Additions to section 6.13.11&#8201;&#8212;&#8201;Atomic Functions</h4>
+<h4 id="cl_khr_subgroups-additions-to-section-6.13.11-atomic-functions"><a class="anchor" href="#cl_khr_subgroups-additions-to-section-6.13.11-atomic-functions"></a>28.5.3. Additions to section 6.13.11&#8201;&#8212;&#8201;Atomic Functions</h4>
 <div class="paragraph">
 <p>Add the following new value to the enumerated type <code>memory_scope</code> defined in
 <em>section 6.13.11.4</em>.</p>
@@ -15474,7 +15883,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_subgroups-add-a-new-section-6.13.X-sub-group-functions">28.5.4. Add a new section 6.13.X&#8201;&#8212;&#8201;Sub-Group Functions</h4>
+<h4 id="cl_khr_subgroups-add-a-new-section-6.13.X-sub-group-functions"><a class="anchor" href="#cl_khr_subgroups-add-a-new-section-6.13.X-sub-group-functions"></a>28.5.4. Add a new section 6.13.X&#8201;&#8212;&#8201;Sub-Group Functions</h4>
 <div class="paragraph">
 <p>The table below describes OpenCL C programming language built-in functions that operate on a subgroup level.
 These built-in functions must be encountered by all work items in the subgroup executing the kernel.
@@ -15571,7 +15980,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_subgroups-additions-to-section-6.13.16-pipe-functions">28.5.5. Additions to section 6.13.16&#8201;&#8212;&#8201;Pipe Functions</h4>
+<h4 id="cl_khr_subgroups-additions-to-section-6.13.16-pipe-functions"><a class="anchor" href="#cl_khr_subgroups-additions-to-section-6.13.16-pipe-functions"></a>28.5.5. Additions to section 6.13.16&#8201;&#8212;&#8201;Pipe Functions</h4>
 <div class="paragraph">
 <p>The OpenCL C programming language implements the following built-in pipe
 functions that operate at a subgroup level.
@@ -15630,7 +16039,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_subgroups-additions-to-section-6.13.17.6-enqueuing-kernels-kernel-query-functions">28.5.6. Additions to section 6.13.17.6&#8201;&#8212;&#8201;Enqueuing Kernels (Kernel Query Functions)</h4>
+<h4 id="cl_khr_subgroups-additions-to-section-6.13.17.6-enqueuing-kernels-kernel-query-functions"><a class="anchor" href="#cl_khr_subgroups-additions-to-section-6.13.17.6-enqueuing-kernels-kernel-query-functions"></a>28.5.6. Additions to section 6.13.17.6&#8201;&#8212;&#8201;Enqueuing Kernels (Kernel Query Functions)</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 55.5555%;">
@@ -15671,7 +16080,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_mipmap_image">29. Mipmaps</h2>
+<h2 id="cl_khr_mipmap_image"><a class="anchor" href="#cl_khr_mipmap_image"></a>29. Mipmaps</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes OpenCL support for mipmaps.</p>
@@ -15688,9 +16097,9 @@
 device, the <strong>cl_khr_mipmap_image</strong> extension must also be supported.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_28">29.1. General information</h3>
+<h3 id="_general_information_28"><a class="anchor" href="#_general_information_28"></a>29.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_28">29.1.1. Version history</h4>
+<h4 id="_version_history_28"><a class="anchor" href="#_version_history_28"></a>29.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -15715,13 +16124,13 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_mipmap_image-additions-to-chapter-5">29.2. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
+<h3 id="cl_khr_mipmap_image-additions-to-chapter-5"><a class="anchor" href="#cl_khr_mipmap_image-additions-to-chapter-5"></a>29.2. Additions to Chapter 5 of the OpenCL 2.2 Specification</h3>
 <div class="sect3">
-<h4 id="cl_khr_mipmap_image-additions-to-section-5.3">29.2.1. Additions to section 5.3&#8201;&#8212;&#8201;Image Objects</h4>
+<h4 id="cl_khr_mipmap_image-additions-to-section-5.3"><a class="anchor" href="#cl_khr_mipmap_image-additions-to-section-5.3"></a>29.2.1. Additions to section 5.3&#8201;&#8212;&#8201;Image Objects</h4>
 <div class="paragraph">
 <p>A mip-mapped 1D image, 1D image array, 2D image, 2D image array or 3D image
 is created by specifying <em>num_mip_levels</em> to be a value greater than one in
-the <em>cl_image_desc</em> passed to <strong>clCreateImage</strong>.
+the <em>image_desc</em> passed to <strong>clCreateImage</strong>.
 The dimensions of a mip-mapped image can be a power of two or a non-power of
 two.
 Each successively smaller mipmap level is half the size of the previous
@@ -15799,7 +16208,7 @@
 </div>
 </div>
 <div class="sect3">
-<h4 id="cl_khr_mipmap_image-additions-to-section-5.7">29.2.2. Additions to section 5.7&#8201;&#8212;&#8201;Sampler Objects</h4>
+<h4 id="cl_khr_mipmap_image-additions-to-section-5.7"><a class="anchor" href="#cl_khr_mipmap_image-additions-to-section-5.7"></a>29.2.2. Additions to section 5.7&#8201;&#8212;&#8201;Sampler Objects</h4>
 <div class="paragraph">
 <p>Add the following sampler properties <em>to table 5.14</em> that can be specified
 when a sampler object is created using <strong>clCreateSamplerWithProperties</strong>.</p>
@@ -15847,9 +16256,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_mipmap_image-additions-to-chapter-6-of-the-opencl-2.0-specification">29.3. Additions to Chapter 6 of the OpenCL 2.0 Specification</h3>
+<h3 id="cl_khr_mipmap_image-additions-to-chapter-6-of-the-opencl-2.0-specification"><a class="anchor" href="#cl_khr_mipmap_image-additions-to-chapter-6-of-the-opencl-2.0-specification"></a>29.3. Additions to Chapter 6 of the OpenCL 2.0 Specification</h3>
 <div class="sect3">
-<h4 id="cl_khr_mipmap_image-additions-to-section-6.13.14-image-read-write-and-query-functions">29.3.1. Additions to section 6.13.14 – Image Read, Write and Query Functions</h4>
+<h4 id="cl_khr_mipmap_image-additions-to-section-6.13.14-image-read-write-and-query-functions"><a class="anchor" href="#cl_khr_mipmap_image-additions-to-section-6.13.14-image-read-write-and-query-functions"></a>29.3.1. Additions to section 6.13.14 – Image Read, Write and Query Functions</h4>
 <div class="paragraph">
 <p>The image read and write functions described in <em>sections 6.13.14.2</em>,
 <em>6.13.14.3</em> and <em>6.13.14.4</em> read from and write to mip-level 0 if the
@@ -16379,7 +16788,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_mipmap_image-additions-to-creating-opencl-memory-objects-from-opengl-objects">29.4. Additions to <a href="#cl_khr_gl_sharing__memobjs">Creating OpenCL Memory Objects from OpenGL Objects</a></h3>
+<h3 id="cl_khr_mipmap_image-additions-to-creating-opencl-memory-objects-from-opengl-objects"><a class="anchor" href="#cl_khr_mipmap_image-additions-to-creating-opencl-memory-objects-from-opengl-objects"></a>29.4. Additions to <a href="#cl_khr_gl_sharing__memobjs">Creating OpenCL Memory Objects from OpenGL Objects</a></h3>
 <div class="paragraph">
 <p>If both the <strong><code>cl_khr_mipmap_image</code></strong> and <strong><code>cl_khr_gl_sharing</code></strong> extensions are
 supported by the OpenCL device, the <strong><code>cl_khr_gl_sharing</code></strong> extension may also
@@ -16400,7 +16809,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_srgb_image_writes">30. sRGB Image Writes</h2>
+<h2 id="cl_khr_srgb_image_writes"><a class="anchor" href="#cl_khr_srgb_image_writes"></a>30. sRGB Image Writes</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_srgb_image_writes</strong> extension.</p>
@@ -16414,9 +16823,9 @@
 Only the R, G, and B components are converted from linear to sRGB; the A component is written as-is.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_29">30.1. General information</h3>
+<h3 id="_general_information_29"><a class="anchor" href="#_general_information_29"></a>30.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_29">30.1.1. Version history</h4>
+<h4 id="_version_history_29"><a class="anchor" href="#_version_history_29"></a>30.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -16443,7 +16852,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_priority_hints">31. Priority Hints</h2>
+<h2 id="cl_khr_priority_hints"><a class="anchor" href="#cl_khr_priority_hints"></a>31. Priority Hints</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_priority_hints</strong> extension.
@@ -16454,9 +16863,9 @@
 guarantees.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_30">31.1. General information</h3>
+<h3 id="_general_information_30"><a class="anchor" href="#_general_information_30"></a>31.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_30">31.1.1. Version history</h4>
+<h4 id="_version_history_30"><a class="anchor" href="#_version_history_30"></a>31.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -16481,7 +16890,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_priority_hints-host-side-api-modifications">31.2. Host-side API modifications</h3>
+<h3 id="cl_khr_priority_hints-host-side-api-modifications"><a class="anchor" href="#cl_khr_priority_hints-host-side-api-modifications"></a>31.2. Host-side API modifications</h3>
 <div class="paragraph">
 <p>The function <strong><code>clCreateCommandQueueWithProperties</code></strong> (Section 5.1) is
 extended to support a priority value as part of the <em>properties</em> argument.</p>
@@ -16527,7 +16936,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_throttle_hints">32. Throttle Hints</h2>
+<h2 id="cl_khr_throttle_hints"><a class="anchor" href="#cl_khr_throttle_hints"></a>32. Throttle Hints</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_throttle_hints</strong> extension.
@@ -16544,9 +16953,9 @@
 (<code>CL_QUEUE_THROTTLE_LOW</code>).</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_31">32.1. General information</h3>
+<h3 id="_general_information_31"><a class="anchor" href="#_general_information_31"></a>32.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_31">32.1.1. Version history</h4>
+<h4 id="_version_history_31"><a class="anchor" href="#_version_history_31"></a>32.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -16571,7 +16980,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_throttle_hints-host-side-api-modifications">32.2. Host-side API modifications</h3>
+<h3 id="cl_khr_throttle_hints-host-side-api-modifications"><a class="anchor" href="#cl_khr_throttle_hints-host-side-api-modifications"></a>32.2. Host-side API modifications</h3>
 <div class="paragraph">
 <p>The function <strong><code>clCreateCommandQueueWithProperties</code></strong> (Section 5.1) is
 extended to support a new <code>CL_QUEUE_THROTTLE_KHR</code> value as part of the
@@ -16614,7 +17023,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_subgroup_named_barrier">33. Named Barriers for Subgroups</h2>
+<h2 id="cl_khr_subgroup_named_barrier"><a class="anchor" href="#cl_khr_subgroup_named_barrier"></a>33. Named Barriers for Subgroups</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_subgroup_named_barrier</strong> extension.
@@ -16627,9 +17036,9 @@
 barrier built-in functions in the OpenCL C++ kernel language.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_32">33.1. General information</h3>
+<h3 id="_general_information_32"><a class="anchor" href="#_general_information_32"></a>33.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_32">33.1.1. Version history</h4>
+<h4 id="_version_history_32"><a class="anchor" href="#_version_history_32"></a>33.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -16654,7 +17063,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_changes_to_opencl_specification">33.2. Changes to OpenCL specification</h3>
+<h3 id="_changes_to_opencl_specification"><a class="anchor" href="#_changes_to_opencl_specification"></a>33.2. Changes to OpenCL specification</h3>
 <div class="paragraph">
 <p>Add to <em>table 4.3</em>:</p>
 </div>
@@ -16685,7 +17094,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_extended_async_copies">34. Extended Async Copies (Provisional)</h2>
+<h2 id="cl_khr_extended_async_copies"><a class="anchor" href="#cl_khr_extended_async_copies"></a>34. Extended Async Copies (Provisional)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_extended_async_copies</strong> provisional extension.
@@ -16703,9 +17112,9 @@
 </ol>
 </div>
 <div class="sect2">
-<h3 id="_general_information_33">34.1. General information</h3>
+<h3 id="_general_information_33"><a class="anchor" href="#_general_information_33"></a>34.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_33">34.1.1. Version history</h4>
+<h4 id="_version_history_33"><a class="anchor" href="#_version_history_33"></a>34.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -16730,7 +17139,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_extended_async_copies-additions-to-chapter-6-of-the-opencl-specification">34.2. Additions to Chapter 6 of the OpenCL C Specification</h3>
+<h3 id="cl_khr_extended_async_copies-additions-to-chapter-6-of-the-opencl-specification"><a class="anchor" href="#cl_khr_extended_async_copies-additions-to-chapter-6-of-the-opencl-specification"></a>34.2. Additions to Chapter 6 of the OpenCL C Specification</h3>
 <div class="paragraph">
 <p>The following new built-in functions are added to the <em>Async Copies from Global to
 Local Memory, Local to Global Memory, and Prefetch</em> functions described in <em>section 6.12.10</em>
@@ -16884,16 +17293,16 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="cl_khr_async_work_group_copy_fence">35. Async Work Group Copy Fence (Provisional)</h2>
+<h2 id="cl_khr_async_work_group_copy_fence"><a class="anchor" href="#cl_khr_async_work_group_copy_fence"></a>35. Async Work Group Copy Fence (Provisional)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This section describes the <strong>cl_khr_async_work_group_copy_fence</strong> provisional extension.
 The extension adds a new built-in function to OpenCL C to establish a memory synchronization ordering of asynchronous copies.</p>
 </div>
 <div class="sect2">
-<h3 id="_general_information_34">35.1. General information</h3>
+<h3 id="_general_information_34"><a class="anchor" href="#_general_information_34"></a>35.1. General information</h3>
 <div class="sect3">
-<h4 id="_version_history_34">35.1.1. Version history</h4>
+<h4 id="_version_history_34"><a class="anchor" href="#_version_history_34"></a>35.1.1. Version history</h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 20%;">
@@ -16918,7 +17327,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="cl_khr_async_work_group_copy_fence-additions-to-chapter-6-of-the-opencl-specification">35.2. Additions to Chapter 6 of the OpenCL C Specification</h3>
+<h3 id="cl_khr_async_work_group_copy_fence-additions-to-chapter-6-of-the-opencl-specification"><a class="anchor" href="#cl_khr_async_work_group_copy_fence-additions-to-chapter-6-of-the-opencl-specification"></a>35.2. Additions to Chapter 6 of the OpenCL C Specification</h3>
 <div class="paragraph">
 <p>The following new built-in function is added to the <em>Async Copies from Global to
 Local Memory, Local to Global Memory, and Prefetch</em> functions described in <em>section 6.12.10</em>
@@ -16979,7 +17388,118 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="spirv_extensions">36. Extensions to the OpenCL SPIR-V Environment</h2>
+<h2 id="cl_khr_device_uuid"><a class="anchor" href="#cl_khr_device_uuid"></a>36. Unique Device Identifiers</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This section describes the <strong>cl_khr_device_uuid</strong> extension.</p>
+</div>
+<div class="paragraph">
+<p>This extension adds the ability to query a universally unique identifier
+(UUID) for an OpenCL driver and OpenCL device.
+The UUIDs returned by the query may be used to identify drivers and devices
+across processes or APIs.</p>
+</div>
+<div class="sect2">
+<h3 id="_general_information_35"><a class="anchor" href="#_general_information_35"></a>36.1. General information</h3>
+<div class="sect3">
+<h4 id="_version_history_35"><a class="anchor" href="#_version_history_35"></a>36.1.1. Version history</h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>Date</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Version</strong></th>
+<th class="tableblock halign-left valign-top"><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2020-08-27</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">First assigned version.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_additions_to_chapter_4_of_the_opencl_3_0_api_specification"><a class="anchor" href="#_additions_to_chapter_4_of_the_opencl_3_0_api_specification"></a>36.2. Additions to Chapter 4 of the OpenCL 3.0 API Specification</h3>
+<div class="paragraph">
+<p>Add to Table 5 - OpenCL Device Queries:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 5. OpenCL Device Queries</caption>
+<colgroup>
+<col style="width: 30%;">
+<col style="width: 20%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><strong>cl_device_info</strong></th>
+<th class="tableblock halign-left valign-top">Return Type</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_DEVICE_UUID_KHR</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uchar[CL_UUID_SIZE_KHR]</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns a universally unique identifier (UUID) for the device.</p>
+<p class="tableblock">      Device UUIDs must be immutable for a given device across processes, driver APIs, driver versions, and system reboots.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_DRIVER_UUID_KHR</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uchar[CL_UUID_SIZE_KHR]</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns a universally unique identifier (UUID) for the software driver for the device.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_DEVICE_LUID_VALID_KHR</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_bool</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns <code>CL_TRUE</code> if the device has a valid LUID and <code>CL_FALSE</code> otherwise.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_DEVICE_LUID_KHR</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uchar[CL_LUID_SIZE_KHR]</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns a locally unique identifier (LUID) for the device.</p>
+<p class="tableblock">      It is not an error to query <code>CL_DEVICE_LUID_KHR</code> when <code>CL_DEVICE_LUID_VALID_KHR</code> returns <code>CL_FALSE</code>, but in this case the returned LUID value is undefined.</p>
+<p class="tableblock">      When <code>CL_DEVICE_LUID_VALID_KHR</code> returns <code>CL_TRUE</code>, and the OpenCL device is running on the Windows operating system, the returned LUID value can be cast to an <code>LUID</code> object and must be equal to the locally unique identifier of an <code>IDXGIAdapter1</code> object that corresponds to the OpenCL device.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_DEVICE_NODE_MASK_KHR</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns a node mask for the device.</p>
+<p class="tableblock">      It is not an error to query <code>CL_DEVICE_NODE_MASK_KHR</code> when <code>CL_DEVICE_LUID_VALID_KHR</code> returns <code>CL_FALSE</code>, but in this case the returned node mask is undefined.</p>
+<p class="tableblock">      When <code>CL_DEVICE_LUID_VALID_KHR</code> returns <code>CL_TRUE</code>, the returned node mask must contain exactly one bit.
+      If the OpenCL device is running on an operating system that supports the Direct3D 12 API and the OpenCL device corresponds to an individual device in a linked device adapter, the returned node mask identifies the Direct3D 12 node corresponding to the OpenCL device.
+      Otherwise, the returned node mask must be <code>1</code>.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+While <code>CL_DEVICE_UUID_KHR</code> is specified to remain consistent across driver versions and system reboots, it is not intended to be usable as a serializable persistent identifier for a device.
+It may change when a device is physically added to, removed from, or moved to a different connector in a system while that system is powered down.
+Further, there is no reasonable way to verify with conformance testing that a given device retains the same UUID in a given system across all driver versions supported in that system.
+While implementations should make every effort to report consistent device UUIDs across driver versions, applications should avoid relying on the persistence of this value for uses other than identifying compatible devices for external object sharing purposes.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="spirv_extensions"><a class="anchor" href="#spirv_extensions"></a>37. Extensions to the OpenCL SPIR-V Environment</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>An OpenCL SPIR-V environment may be modified by OpenCL extensions.
@@ -16996,10 +17516,10 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="_extensions_promoted_to_core_features">Appendix A: Extensions Promoted to Core Features</h2>
+<h2 id="_extensions_promoted_to_core_features"><a class="anchor" href="#_extensions_promoted_to_core_features"></a>Appendix A: Extensions Promoted to Core Features</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="_for_opencl_1_1">A.1. For OpenCL 1.1:</h3>
+<h3 id="_for_opencl_1_1"><a class="anchor" href="#_for_opencl_1_1"></a>A.1. For OpenCL 1.1:</h3>
 <div class="ulist">
 <ul>
 <li>
@@ -17012,7 +17532,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_for_opencl_1_2">A.2. For OpenCL 1.2:</h3>
+<h3 id="_for_opencl_1_2"><a class="anchor" href="#_for_opencl_1_2"></a>A.2. For OpenCL 1.2:</h3>
 <div class="ulist">
 <ul>
 <li>
@@ -17022,7 +17542,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_for_opencl_2_0">A.3. For OpenCL 2.0:</h3>
+<h3 id="_for_opencl_2_0"><a class="anchor" href="#_for_opencl_2_0"></a>A.3. For OpenCL 2.0:</h3>
 <div class="ulist">
 <ul>
 <li>
@@ -17041,7 +17561,7 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="_for_opencl_2_1">A.4. For OpenCL 2.1:</h3>
+<h3 id="_for_opencl_2_1"><a class="anchor" href="#_for_opencl_2_1"></a>A.4. For OpenCL 2.1:</h3>
 <div class="ulist">
 <ul>
 <li>
@@ -17053,13 +17573,23 @@
 </ul>
 </div>
 </div>
+<div class="sect2">
+<h3 id="_for_opencl_3_0"><a class="anchor" href="#_for_opencl_3_0"></a>A.5. For OpenCL 3.0:</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>The built-in functions described by <strong>cl_khr_subgroups</strong> are now supported in OpenCL C 3.0 when the <code>__opencl_c_subgroups</code> feature is supported.</p>
+</li>
+</ul>
+</div>
+</div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_deprecated_extensions">Appendix B: Deprecated Extensions</h2>
+<h2 id="_deprecated_extensions"><a class="anchor" href="#_deprecated_extensions"></a>Appendix B: Deprecated Extensions</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="_for_opencl_1_1_2">B.1. For OpenCL 1.1:</h3>
+<h3 id="_for_opencl_1_1_2"><a class="anchor" href="#_for_opencl_1_1_2"></a>B.1. For OpenCL 1.1:</h3>
 <div class="ulist">
 <ul>
 <li>
@@ -17072,7 +17602,7 @@
 </div>
 </div>
 <div class="sect1">
-<h2 id="_quick_reference">Appendix C: Quick Reference</h2>
+<h2 id="_quick_reference"><a class="anchor" href="#_quick_reference"></a>Appendix C: Quick Reference</h2>
 <div class="sectionbody">
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -17129,6 +17659,11 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">Extension</p></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_khr_device_uuid">cl_khr_device_uuid</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Unique Device and Driver Identifier Queries</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Extension</p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#cl_khr_dx9_media_sharing">cl_khr_dx9_media_sharing</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Share DirectX 9 Media Surfaces with OpenCL</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Extension</p></td>
@@ -17285,8 +17820,8 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version v3.0.1-Provisional<br>
-Last updated 2020-04-26 21:05:33 -0700
+Version v3.0.5<br>
+Last updated 2020-09-29 09:40:19 -0700
 </div>
 </div>
 
diff --git a/specs/3.0-unified/pdf/OpenCL_API.pdf b/specs/3.0-unified/pdf/OpenCL_API.pdf
index 282147f..ca42dd1 100644
--- a/specs/3.0-unified/pdf/OpenCL_API.pdf
+++ b/specs/3.0-unified/pdf/OpenCL_API.pdf
Binary files differ
diff --git a/specs/3.0-unified/pdf/OpenCL_C.pdf b/specs/3.0-unified/pdf/OpenCL_C.pdf
index 4f8804f..9da1b86 100644
--- a/specs/3.0-unified/pdf/OpenCL_C.pdf
+++ b/specs/3.0-unified/pdf/OpenCL_C.pdf
Binary files differ
diff --git a/specs/3.0-unified/pdf/OpenCL_Env.pdf b/specs/3.0-unified/pdf/OpenCL_Env.pdf
index b758745..cee7944 100644
--- a/specs/3.0-unified/pdf/OpenCL_Env.pdf
+++ b/specs/3.0-unified/pdf/OpenCL_Env.pdf
Binary files differ
diff --git a/specs/3.0-unified/pdf/OpenCL_Ext.pdf b/specs/3.0-unified/pdf/OpenCL_Ext.pdf
index 23a6c89..38010a8 100644
--- a/specs/3.0-unified/pdf/OpenCL_Ext.pdf
+++ b/specs/3.0-unified/pdf/OpenCL_Ext.pdf
Binary files differ