OpenCL 3.1 Specifications v3.1.1 (#183)
* OpenCL 3.1 Specifications v3.1.1
* update index dates
diff --git a/index.php b/index.php
index 2e174b1..2faeac0 100644
--- a/index.php
+++ b/index.php
@@ -33,15 +33,15 @@
<li> OpenCL API Specification
(<a href="specs/unified/html/OpenCL_API.html">HTML</a>)
(<a href="specs/unified/pdf/OpenCL_API.pdf">PDF</a>)
- (May 5, 2026). </li>
+ (May 22, 2026). </li>
<li> OpenCL C Language Specification
(<a href="specs/unified/html/OpenCL_C.html">HTML</a>)
(<a href="specs/unified/pdf/OpenCL_C.pdf">PDF</a>)
- (May 5, 2026). </li>
+ (May 22, 2026). </li>
<li> OpenCL SPIR-V Environment Specification
(<a href="specs/unified/html/OpenCL_Env.html">HTML</a>)
(<a href="specs/unified/pdf/OpenCL_Env.pdf">PDF</a>)
- (May 5, 2026). </li>
+ (May 22, 2026). </li>
<li> <a href="specs/unified/refpages/man/html/">
OpenCL Reference Pages.</a> </li>
<li> <a href="https://www.khronos.org/files/opencl30-reference-guide.pdf" rel="external">
diff --git a/specs/unified/html/OpenCL_API.html b/specs/unified/html/OpenCL_API.html
index 3714b3f..39d431e 100644
--- a/specs/unified/html/OpenCL_API.html
+++ b/specs/unified/html/OpenCL_API.html
@@ -926,9 +926,9 @@
<h1>The OpenCL<sup>™</sup> Specification</h1>
<div class="details">
<span id="author" class="author">Khronos<sup>®</sup> OpenCL Working Group</span><br>
-<span id="revnumber">version v3.1.0,</span>
-<span id="revdate">Tue, 05 May 2026 04:00:00 +0000</span>
-<br><span id="revremark">from git branch: main commit: 9fff1a87a975972517f5d878b50f6063dc1b731b</span>
+<span id="revnumber">version v3.1.1,</span>
+<span id="revdate">Fri, 22 May 2026 12:00:00 +0000</span>
+<br><span id="revremark">from git branch: main commit: 9f68efb5d80e77a4e437c5b8ee67d581666d044c</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@@ -5398,17 +5398,6 @@
wait-for-events function on <strong>E</strong> (e.g. the <a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a> function
called from a host thread), then <strong>E</strong> global-synchronizes-with that
wait-for-events function call.</p>
-<div class="ulist">
-<ul>
-<li>
-<p>Additionally, for OpenCL 3.1 and newer, <strong>E</strong> global-synchronizes-with an
-API call <strong>X</strong> that observes that the status of <strong>E</strong> is complete.
-For example, if a host thread queries the execution status of <strong>E</strong> using
-<a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a>, and the execution status is <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>, then <strong>E</strong>
-global-synchronizes-with that call to <a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a>.</p>
-</li>
-</ul>
-</div>
</li>
<li>
<p>If commands <strong>C</strong> and <strong>C1</strong> are enqueued in that sequence onto an in-order
@@ -33785,14 +33774,25 @@
</tr>
</tbody>
</table>
+<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>Prior to OpenCL 3.1, using <a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> to determine if a command identified
-by <em>event</em> has finished execution (i.e. whether
-<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.
-For OpenCL 3.1 and newer, if a call to <a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> to determine the
-execution status of a command identified by <em>event</em> returns <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>, then
-the call to <a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> is a synchronization point.</p>
+<p>Calling <a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> with <a href="#CL_EVENT_COMMAND_EXECUTION_STATUS"><code>CL_EVENT_<wbr>COMMAND_<wbr>EXECUTION_<wbr>STATUS</code></a> is intended to
+be a lightweight query, therefore it is not a host synchronization point.
+This means that <em>event</em> does not global-synchronize-with the call to
+<a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a>, even if the returned execution status is <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a>.
+When a host synchronization point is needed, call a function that waits on the
+event instead, such as <a href="#clWaitForEvents"><strong>clWaitForEvents</strong></a>.
+Refer to the <a href="#memory-consistency-model">memory consistency model</a> for details.</p>
+</div>
+</td>
+</tr>
+</table>
</div>
<div class="paragraph">
<p><a href="#clGetEventInfo"><strong>clGetEventInfo</strong></a> returns <a href="#CL_SUCCESS"><code>CL_SUCCESS</code></a> if the function is executed
@@ -44338,6 +44338,16 @@
</li>
</ul>
</div>
+<div class="paragraph">
+<p>Changes from <strong>v3.1.0</strong> to <strong>v3.1.1</strong>:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Reverted the change where observing that an event is <a href="#CL_COMPLETE"><code>CL_COMPLETE</code></a> is a synchronization point due to possible performance regressions, see internal issue 386 and <a href="https://github.com/KhronosGroup/OpenCL-Docs/pull/1558">#1558</a>.</p>
+</li>
+</ul>
+</div>
</div>
</div>
</div>
diff --git a/specs/unified/html/OpenCL_C.html b/specs/unified/html/OpenCL_C.html
index 16765ef..420a840 100644
--- a/specs/unified/html/OpenCL_C.html
+++ b/specs/unified/html/OpenCL_C.html
@@ -926,9 +926,9 @@
<h1>The OpenCL<sup>™</sup> C Specification</h1>
<div class="details">
<span id="author" class="author">Khronos<sup>®</sup> OpenCL Working Group</span><br>
-<span id="revnumber">version v3.1.0,</span>
-<span id="revdate">Tue, 05 May 2026 04:00:00 +0000</span>
-<br><span id="revremark">from git branch: main commit: 9fff1a87a975972517f5d878b50f6063dc1b731b</span>
+<span id="revnumber">version v3.1.1,</span>
+<span id="revdate">Fri, 22 May 2026 12:00:00 +0000</span>
+<br><span id="revremark">from git branch: main commit: 9f68efb5d80e77a4e437c5b8ee67d581666d044c</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@@ -2651,10 +2651,6 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">A boolean vector.</p></td>
</tr>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>half<em>n</em></code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">A 16-bit floating-point vector.</p></td>
-</tr>
-<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>quad</code>, <code>quad<em>n</em></code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A 128-bit floating-point scalar and vector.</p></td>
</tr>
@@ -3842,7 +3838,7 @@
operands if the source operands are vector types.
Vector source operands of type <code>char<em>n</em></code> and <code>uchar<em>n</em></code> return a
<code>char<em>n</em></code> result; vector source operands of type
-<code>_half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_24" class="footnote" href="#_footnotedef_24" title="View footnote.">24</a>]</sup>,
+<code>half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_24" class="footnote" href="#_footnotedef_24" title="View footnote.">24</a>]</sup>,
<code>short<em>n</em></code> and
<code>ushort<em>n</em></code> return a <code>short<em>n</em></code> result; vector source operands of type
<code>int<em>n</em></code>, <code>uint<em>n</em></code> and <code>float<em>n</em></code> return an <code>int<em>n</em></code> result; vector
@@ -3901,7 +3897,7 @@
operands if the source operands are vector types.
Vector source operands of type <code>char<em>n</em></code> and <code>uchar<em>n</em></code> return a
<code>char<em>n</em></code> result; vector source operands of type
-<code>_half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_26" class="footnote" href="#_footnotedef_26" title="View footnote.">26</a>]</sup>,
+<code>half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_26" class="footnote" href="#_footnotedef_26" title="View footnote.">26</a>]</sup>,
<code>short<em>n</em></code> and
<code>ushort<em>n</em></code> return a <code>short<em>n</em></code> result; vector source operands of type
<code>int<em>n</em></code>, <code>uint<em>n</em></code> and <code>float<em>n</em></code> return an <code>int<em>n</em></code> result; vector
@@ -3938,7 +3934,7 @@
The scalar type is then widened to a vector that has the same number of
components as the vector operand.
The operation is done component-wise resulting in the same size vector.
-Vector source operands of type <code>_half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_27" class="footnote" href="#_footnotedef_27" title="View footnote.">27</a>]</sup>
+Vector source operands of type <code>half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_27" class="footnote" href="#_footnotedef_27" title="View footnote.">27</a>]</sup>
return a <code>short<em>n</em></code> result.</p>
</div>
</div>
@@ -3973,7 +3969,7 @@
operands if the source operands are vector types.
Vector source operands of type <code>char<em>n</em></code> and <code>uchar<em>n</em></code> return a
<code>char<em>n</em></code> result; vector source operands of type
-<code>_half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_28" class="footnote" href="#_footnotedef_28" title="View footnote.">28</a>]</sup>,
+<code>half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_28" class="footnote" href="#_footnotedef_28" title="View footnote.">28</a>]</sup>,
<code>short<em>n</em></code> and
<code>ushort<em>n</em></code> return a <code>short<em>n</em></code> result; vector source operands of type
<code>int<em>n</em></code>, <code>uint<em>n</em></code> and <code>float<em>n</em></code> return an <code>int<em>n</em></code> result; vector
@@ -4004,7 +4000,7 @@
operands if the source operands are vector types.
Vector source operands of type <code>char<em>n</em></code> and <code>uchar<em>n</em></code> return a
<code>char<em>n</em></code> result; vector source operands of type
-<code>_half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_29" class="footnote" href="#_footnotedef_29" title="View footnote.">29</a>]</sup>,
+<code>half<em>n</em></code> <sup class="footnote">[<a id="_footnoteref_29" class="footnote" href="#_footnotedef_29" title="View footnote.">29</a>]</sup>,
<code>short<em>n</em></code> and
<code>ushort<em>n</em></code> return a <code>short<em>n</em></code> result; vector source operands of type
<code>int<em>n</em></code>, <code>uint<em>n</em></code> and <code>float<em>n</em></code> return an <code>int<em>n</em></code> result; vector
@@ -7313,7 +7309,7 @@
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>
-<p class="tableblock"> <a href="#unified-spec">Requires</a> support for OpenCL 2.0 or newer.</p></td>
+<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">size_t <strong>get_local_id</strong>(uint <em>dimindx</em>)</p></td>
@@ -7356,7 +7352,7 @@
<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>
+<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">size_t <strong>get_local_linear_id</strong>()</p></td>
@@ -7368,7 +7364,7 @@
<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>
-<p class="tableblock"> <a href="#unified-spec">Requires</a> support for OpenCL 2.0 or newer.</p></td>
+<p class="tableblock"> <a href="#unified-spec">Requires</a> support for OpenCL C 2.0 or newer.</p></td>
</tr>
</tbody>
</table>
@@ -8966,7 +8962,7 @@
<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>
-<p class="tableblock"> <a href="#unified-spec">Requires</a> support for OpenCL 2.0 or newer.</p></td>
+<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">uint <strong>dot</strong>(uchar4 a, uchar4 b)<br>
@@ -9979,15 +9975,17 @@
<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>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns 1 if the most significant bit of <em>x</em> is set for scalar inputs, or
+ if the most significant bit is set for any component of <em>x</em> for vector
+ inputs; 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>
<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>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns 1 if the most significant bit of <em>x</em> is set for scalar inputs, or
+ if the most significant bit is set for all components of <em>x</em> for vector
+ inputs; otherwise returns 0.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"></td>
@@ -11089,7 +11087,7 @@
<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
+The C11 style atomic functions in this sub-section <a href="#unified-spec">require</a> support for OpenCL C 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>
@@ -24912,6 +24910,29 @@
</li>
</ul>
</div>
+<div class="paragraph">
+<p>Changes from <strong>v3.1.0</strong> to <strong>v3.1.1</strong>:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Clarified that the version requirements in this OpenCL C spec are for the OpenCL C language version, not the OpenCL device or platform version, see <a href="https://github.com/KhronosGroup/OpenCL-Docs/pull/1557">#1557</a>.</p>
+</li>
+<li>
+<p>Clarified the description of the <code>andy</code> and <code>all</code> functions, see <a href="https://github.com/KhronosGroup/OpenCL-Docs/pull/1561">#1561</a>.</p>
+</li>
+<li>
+<p><code>cl_khr_<wbr>fp16</code></p>
+<div class="ulist">
+<ul>
+<li>
+<p>Clarified that the <code>halfn</code> vector data type is not a reserved data type when the extension is supported, see <a href="https://github.com/KhronosGroup/OpenCL-Docs/pull/1548">#1548</a>.</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
</div>
</div>
</div>
diff --git a/specs/unified/html/OpenCL_Env.html b/specs/unified/html/OpenCL_Env.html
index 2fe19b6..174ffc7 100644
--- a/specs/unified/html/OpenCL_Env.html
+++ b/specs/unified/html/OpenCL_Env.html
@@ -891,9 +891,9 @@
<h1>The OpenCL<sup>™</sup> SPIR-V Environment Specification</h1>
<div class="details">
<span id="author" class="author">Khronos<sup>®</sup> OpenCL Working Group</span><br>
-<span id="revnumber">version v3.1.0,</span>
-<span id="revdate">Tue, 05 May 2026 04:00:00 +0000</span>
-<br><span id="revremark">from git branch: main commit: 9fff1a87a975972517f5d878b50f6063dc1b731b</span>
+<span id="revnumber">version v3.1.1,</span>
+<span id="revdate">Fri, 22 May 2026 12:00:00 +0000</span>
+<br><span id="revremark">from git branch: main commit: 9f68efb5d80e77a4e437c5b8ee67d581666d044c</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
diff --git a/specs/unified/pdf/OpenCL_API.pdf b/specs/unified/pdf/OpenCL_API.pdf
index c85ef43..550894e 100644
--- a/specs/unified/pdf/OpenCL_API.pdf
+++ b/specs/unified/pdf/OpenCL_API.pdf
Binary files differ
diff --git a/specs/unified/pdf/OpenCL_C.pdf b/specs/unified/pdf/OpenCL_C.pdf
index 7b4587a..e7dde2b 100644
--- a/specs/unified/pdf/OpenCL_C.pdf
+++ b/specs/unified/pdf/OpenCL_C.pdf
Binary files differ
diff --git a/specs/unified/pdf/OpenCL_Env.pdf b/specs/unified/pdf/OpenCL_Env.pdf
index 8fed30a..cd8e635 100644
--- a/specs/unified/pdf/OpenCL_Env.pdf
+++ b/specs/unified/pdf/OpenCL_Env.pdf
Binary files differ