Merge pull request #53 from bashbaug/opencl22_updates
OpenCL 2.2 Specs, rev 8
diff --git a/specs/2.2/html/OpenCL_API.html b/specs/2.2/html/OpenCL_API.html
index afc7d01..dacbc0f 100644
--- a/specs/2.2/html/OpenCL_API.html
+++ b/specs/2.2/html/OpenCL_API.html
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.6.1">
+<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="Khronos OpenCL Working Group">
<title>The OpenCL™ Specification</title>
<style>
@@ -841,9 +841,9 @@
<h1>The OpenCL<sup>™</sup> Specification</h1>
<div class="details">
<span id="author" class="author">Khronos OpenCL Working Group</span><br>
-<span id="revnumber">version 2.2-7,</span>
-<span id="revdate">Sat, 12 May 2018 13:21:27 +0000</span>
-<br><span id="revremark">from git branch: master commit: ab6da3001e9eeafaa36c18888ca7eb4ebb9768af</span>
+<span id="revnumber">version 2.2-8,</span>
+<span id="revdate">Mon, 08 Oct 2018 16:49:19 +0000</span>
+<br><span id="revremark">from git branch: master commit: b3cab22fcff5d8c17869907c983e259ddd7ce788</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@@ -1074,7 +1074,6 @@
Yariv Aridor, Intel<br>
Michael Kinsner, Intel<br>
Kevin Stevens, Intel<br>
-Jon Leech, Khronos<br>
Benjamin Bergen, Los Alamos National Laboratory<br>
Roy Ju, Mediatek<br>
Bor-Sung Liang, Mediatek<br>
@@ -3460,15 +3459,15 @@
<td class="tableblock halign-left valign-top" rowspan="2"><p class="tableblock">Kernel</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Static Allocation for program scope variables</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Static Allocation</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Static Allocation.</p>
-<p class="tableblock"> Dynamic allocation for child kernel</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Static Allocation.
+</p><p class="tableblock"> Dynamic allocation for child kernel</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Static Allocation</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read/Write access</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read-only access</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Read/Write access.</p>
-<p class="tableblock"> No access to child’s local memory.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Read/Write access.
+</p><p class="tableblock"> No access to child’s local memory.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read/Write access</p></td>
</tr>
</tbody>
@@ -3516,10 +3515,12 @@
</ul>
</div>
<div class="paragraph">
-<p>In both cases, the commands to transfer data between devices and the host
+<p>With Read/Write/Map, the commands
can be blocking or non-blocking operations.
The OpenCL function call for a blocking memory transfer returns once the
-associated memory resources on the host can be safely reused.
+command (memory transfer) has completed. At this point the associated memory
+resources on the host can be safely reused, and following operations on the host are
+guaranteed that the transfer has already completed.
For a non-blocking memory transfer, the OpenCL function call returns as soon
as the command is enqueued.</p>
</div>
@@ -5157,11 +5158,11 @@
<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">OpenCL profile string.
Returns the profile name supported by the implementation.
- The profile name returned can be one of the following strings:</p>
-<p class="tableblock"> FULL_PROFILE - if the implementation supports the OpenCL
+ The profile name returned can be one of the following strings:
+</p><p class="tableblock"> FULL_PROFILE - if the implementation supports the OpenCL
specification (functionality defined as part of the core
- specification and does not require any extensions to be supported).</p>
-<p class="tableblock"> EMBEDDED_PROFILE - if the implementation supports the OpenCL
+ specification and does not require any extensions to be supported).
+</p><p class="tableblock"> EMBEDDED_PROFILE - if the implementation supports the OpenCL
embedded profile.
The embedded profile is defined to be a subset for each version of
OpenCL.
@@ -5173,10 +5174,10 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</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>
-<p class="tableblock"> <em>OpenCL<space><major_version.minor_version><space><platform-specific
- information></em></p>
-<p class="tableblock"> The <em>major_version.minor_version</em> value returned will be 2.2.</p></td>
+ This version string has the following format:
+</p><p class="tableblock"> <em>OpenCL<space><major_version.minor_version><space><platform-specific
+ information></em>
+</p><p class="tableblock"> The <em>major_version.minor_version</em> value returned will be 2.2.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_PLATFORM_NAME</strong></p></td>
@@ -5446,8 +5447,8 @@
<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">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"> CL_DEVICE_TYPE_CPU, CL_DEVICE_TYPE_GPU, CL_DEVICE_TYPE_ACCELERATOR,
+ Currently supported values are:
+</p><p class="tableblock"> CL_DEVICE_TYPE_CPU, CL_DEVICE_TYPE_GPU, CL_DEVICE_TYPE_ACCELERATOR,
CL_DEVICE_TYPE_DEFAULT, a combination of the above types or
CL_DEVICE_TYPE_CUSTOM.</p></td>
</tr>
@@ -5477,10 +5478,10 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_WORK_ITEM_SIZES</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">Maximum number of work-items that can be specified in each dimension
- of the work-group to <strong>clEnqueueNDRangeKernel</strong>.</p>
-<p class="tableblock"> Returns <em>n</em> size_t entries, where <em>n</em> is the value returned by the
- query for CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS.</p>
-<p class="tableblock"> The minimum value is (1, 1, 1) for devices that are not of type
+ of the work-group to <strong>clEnqueueNDRangeKernel</strong>.
+</p><p class="tableblock"> Returns <em>n</em> size_t entries, where <em>n</em> is the value returned by the
+ query for CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS.
+</p><p class="tableblock"> The minimum value is (1, 1, 1) for devices that are not of type
CL_DEVICE_TYPE_CUSTOM.</p></td>
</tr>
<tr>
@@ -5508,10 +5509,10 @@
<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,
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE must return 0.</p>
-<p class="tableblock"> If the <strong>cl_khr_fp16</strong> extension is not supported,
+ can be stored in the vector.
+</p><p class="tableblock"> If double precision is not supported,
+ CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE must return 0.
+</p><p class="tableblock"> If the <strong>cl_khr_fp16</strong> extension is not supported,
CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF must return 0.</p></td>
</tr>
<tr>
@@ -5525,10 +5526,10 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</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,
- CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE must return 0.</p>
-<p class="tableblock"> If the <strong>cl_khr_fp16</strong> extension is not supported,
+ can be stored in the vector.
+</p><p class="tableblock"> If double precision is not supported,
+ CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE must return 0.
+</p><p class="tableblock"> If the <strong>cl_khr_fp16</strong> extension is not supported,
CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF must return 0.</p></td>
</tr>
<tr>
@@ -5563,7 +5564,7 @@
otherwise.</p></td>
</tr>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_READ_IMAGE_ARGS</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_READ_IMAGE_ARGS<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">Max number of image objects arguments of a kernel declared with the
read_only qualifier.
@@ -5577,7 +5578,7 @@
The minimum value is 64 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS<sup>4</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS<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">Max number of image objects arguments of a kernel declared with the
write_only or read_write qualifier.
@@ -5596,68 +5597,68 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE2D_MAX_WIDTH</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">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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
+ in pixels.
+</p><p class="tableblock"> The minimum value is 16384 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE2D_MAX_HEIGHT</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">Max height of 2D image in pixels.</p>
-<p class="tableblock"> The minimum value is 16384 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE3D_MAX_WIDTH</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">Max width of 3D image in pixels.</p>
-<p class="tableblock"> The minimum value is 2048 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE3D_MAX_HEIGHT</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">Max height of 3D image in pixels.</p>
-<p class="tableblock"> The minimum value is 2048 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE3D_MAX_DEPTH</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">Max depth of 3D image in pixels.</p>
-<p class="tableblock"> The minimum value is 2048 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE_MAX_BUFFER_SIZE</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">Max number of pixels for a 1D image created from a buffer object.</p>
-<p class="tableblock"> The minimum value is 65536 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE_MAX_ARRAY_SIZE</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">Max number of images in a 1D or 2D image array.</p>
-<p class="tableblock"> The minimum value is 2048 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_SAMPLERS</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">Maximum number of samplers that can be used in a kernel.</p>
-<p class="tableblock"> The minimum value is 16 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE_PITCH_ALIGNMENT</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.
- The value returned must be a power of 2.</p>
-<p class="tableblock"> If the device does not support images, this value must be 0.</p></td>
+ The value returned must be a power of 2.
+</p><p class="tableblock"> If the device does not support images, this value must be 0.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT</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">This query should be used when a 2D image is created from a buffer
which was created using CL_MEM_USE_HOST_PTR.
- The value returned must be a power of 2.</p>
-<p class="tableblock"> This query specifies the minimum alignment in pixels of the host_ptr
- specified to <strong>clCreateBuffer</strong>.</p>
-<p class="tableblock"> If the device does not support images, this value must be 0.</p></td>
+ The value returned must be a power of 2.
+</p><p class="tableblock"> This query specifies the minimum alignment in pixels of the host_ptr
+ specified to <strong>clCreateBuffer</strong>.
+</p><p class="tableblock"> If the device does not support images, this value must be 0.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_PIPE_ARGS</p></td>
@@ -5684,8 +5685,8 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_PARAMETER_SIZE</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">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
+<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
CL_DEVICE_TYPE_CUSTOM.
For this minimum value, only a maximum of 128 arguments can be
passed to a kernel</p></td>
@@ -5700,48 +5701,48 @@
type CL_DEVICE_TYPE_CUSTOM.</p></td>
</tr>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_SINGLE_FP_CONFIG<sup>5</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_SINGLE_FP_CONFIG<sup>6</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">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"> CL_FP_DENORM - denorms are supported</p>
-<p class="tableblock"> CL_FP_INF_NAN - INF and quiet NaNs are supported.</p>
-<p class="tableblock"> CL_FP_ROUND_TO_NEAREST-- round to nearest even rounding mode
- supported</p>
-<p class="tableblock"> CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported</p>
-<p class="tableblock"> CL_FP_ROUND_TO_INF - round to positive and negative infinity
- rounding modes supported</p>
-<p class="tableblock"> CL_FP_FMA - IEEE754-2008 fused multiply-add is supported.</p>
-<p class="tableblock"> CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT - divide and sqrt are correctly
- rounded as defined by the IEEE754 specification.</p>
-<p class="tableblock"> CL_FP_SOFT_FLOAT - 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
+ values:
+</p><p class="tableblock"> CL_FP_DENORM - denorms are supported
+</p><p class="tableblock"> CL_FP_INF_NAN - INF and quiet NaNs are supported.
+</p><p class="tableblock"> CL_FP_ROUND_TO_NEAREST-- round to nearest even rounding mode
+ supported
+</p><p class="tableblock"> CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported
+</p><p class="tableblock"> CL_FP_ROUND_TO_INF - round to positive and negative infinity
+ rounding modes supported
+</p><p class="tableblock"> CL_FP_FMA - IEEE754-2008 fused multiply-add is supported.
+</p><p class="tableblock"> CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT - divide and sqrt are correctly
+ rounded as defined by the IEEE754 specification.
+</p><p class="tableblock"> CL_FP_SOFT_FLOAT - 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 CL_DEVICE_TYPE_CUSTOM is:
- CL_FP_ROUND_TO_NEAREST | CL_FP_INF_NAN.</p>
-<p class="tableblock"> For the embedded profile, see section 10.</p></td>
+ CL_FP_ROUND_TO_NEAREST | CL_FP_INF_NAN.
+</p><p class="tableblock"> For the embedded profile, see section 10.</p></td>
</tr>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_DOUBLE_FP_CONFIG<sup>6</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_DOUBLE_FP_CONFIG<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">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"> CL_FP_DENORM - denorms are supported</p>
-<p class="tableblock"> CL_FP_INF_NAN - INF and NaNs are supported.</p>
-<p class="tableblock"> CL_FP_ROUND_TO_NEAREST - round to nearest even rounding mode
- supported.</p>
-<p class="tableblock"> CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported.</p>
-<p class="tableblock"> CL_FP_ROUND_TO_INF - round to positive and negative infinity
- rounding modes supported.</p>
-<p class="tableblock"> CP_FP_FMA - IEEE754-2008 fused multiply-add is supported.</p>
-<p class="tableblock"> CL_FP_SOFT_FLOAT - 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
+ values:
+</p><p class="tableblock"> CL_FP_DENORM - denorms are supported
+</p><p class="tableblock"> CL_FP_INF_NAN - INF and NaNs are supported.
+</p><p class="tableblock"> CL_FP_ROUND_TO_NEAREST - round to nearest even rounding mode
+ supported.
+</p><p class="tableblock"> CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported.
+</p><p class="tableblock"> CL_FP_ROUND_TO_INF - round to positive and negative infinity
+ rounding modes supported.
+</p><p class="tableblock"> CL_FP_FMA - IEEE754-2008 fused multiply-add is supported.
+</p><p class="tableblock"> CL_FP_SOFT_FLOAT - 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>
CL_FP_FMA |<br>
CL_FP_ROUND_TO_NEAREST |<br>
@@ -5790,8 +5791,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">size_t</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"> The minimum value is 64 KB.</p></td>
+ kernel language declared in the global address space.
+</p><p class="tableblock"> The minimum value is 64 KB.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE</p></td>
@@ -5809,8 +5810,8 @@
<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">Type of local memory supported.
This can be set to CL_LOCAL implying dedicated local memory storage
- such as SRAM , or CL_GLOBAL.</p>
-<p class="tableblock"> For custom devices, CL_NONE can also be returned indicating no local
+ such as SRAM , or CL_GLOBAL.
+</p><p class="tableblock"> For custom devices, CL_NONE can also be returned indicating no local
memory support.</p></td>
</tr>
<tr>
@@ -5851,40 +5852,40 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_COMPILER_AVAILABLE</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 CL_FALSE if the implementation does not have a compiler available
- to compile the program source.</p>
-<p class="tableblock"> Is CL_TRUE if the compiler is available.
+ to compile the program source.
+</p><p class="tableblock"> Is CL_TRUE if the compiler is available.
This can be CL_FALSE for the embedded platform profile only.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_LINKER_AVAILABLE</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 CL_FALSE if the implementation does not have a linker available.
- Is CL_TRUE if the linker is available.</p>
-<p class="tableblock"> This can be CL_FALSE for the embedded platform profile only.</p>
-<p class="tableblock"> This must be CL_TRUE if CL_DEVICE_COMPILER_AVAILABLE is CL_TRUE.</p></td>
+ Is CL_TRUE if the linker is available.
+</p><p class="tableblock"> This can be CL_FALSE for the embedded platform profile only.
+</p><p class="tableblock"> This must be CL_TRUE if CL_DEVICE_COMPILER_AVAILABLE is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_EXECUTION_CAPABILITIES</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">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"> CL_EXEC_KERNEL - The OpenCL device can execute OpenCL kernels.</p>
-<p class="tableblock"> CL_EXEC_NATIVE_KERNEL - The OpenCL device can execute native
- kernels.</p>
-<p class="tableblock"> The mandated minimum capability is: CL_EXEC_KERNEL.</p></td>
+ values:
+</p><p class="tableblock"> CL_EXEC_KERNEL - The OpenCL device can execute OpenCL kernels.
+</p><p class="tableblock"> CL_EXEC_NATIVE_KERNEL - The OpenCL device can execute native
+ kernels.
+</p><p class="tableblock"> The mandated minimum capability is: CL_EXEC_KERNEL.</p></td>
</tr>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_QUEUE_ON_HOST_PROPERTIES<sup>7</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_QUEUE_ON_HOST_PROPERTIES<sup>8</sup></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">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"> CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE<br>
- CL_QUEUE_PROFILING_ENABLE</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: CL_QUEUE_PROFILING_ENABLE.</p></td>
+ values:
+</p><p class="tableblock"> CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE<br>
+ CL_QUEUE_PROFILING_ENABLE
+</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: CL_QUEUE_PROFILING_ENABLE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES</p></td>
@@ -5892,11 +5893,11 @@
<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"> CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE<br>
- CL_QUEUE_PROFILING_ENABLE</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:
+ values:
+</p><p class="tableblock"> CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE<br>
+ CL_QUEUE_PROFILING_ENABLE
+</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:
CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_PROFILING_ENABLE.</p></td>
</tr>
<tr>
@@ -5905,8 +5906,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">The size of the device queue in bytes preferred by the
implementation.
Applications should use this size for the device queue to ensure
- good performance.</p>
-<p class="tableblock"> The minimum value is 16 KB</p></td>
+ good performance.
+</p><p class="tableblock"> The minimum value is 16 KB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE</p></td>
@@ -5919,8 +5920,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_ON_DEVICE_QUEUES</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 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.</p></td>
+ device in a single context.
+</p><p class="tableblock"> The minimum value is 1.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_MAX_ON_DEVICE_EVENTS</p></td>
@@ -5928,8 +5929,8 @@
<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.</p></td>
+ built-in function that have not been released.
+</p><p class="tableblock"> The minimum value is 1024.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_BUILT_IN_KERNELS</p></td>
@@ -5961,15 +5962,15 @@
Follows a vendor-specific format.</p></td>
</tr>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_PROFILE<sup>8</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_PROFILE<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">OpenCL profile string.
Returns the profile name supported by the device.
- The profile name returned can be one of the following strings:</p>
-<p class="tableblock"> FULL_PROFILE - if the device supports the OpenCL specification
+ The profile name returned can be one of the following strings:
+</p><p class="tableblock"> FULL_PROFILE - if the device supports the OpenCL specification
(functionality defined as part of the core specification and does
- not require any extensions to be supported).</p>
-<p class="tableblock"> EMBEDDED_PROFILE - if the device supports the OpenCL embedded
+ not require any extensions to be supported).
+</p><p class="tableblock"> EMBEDDED_PROFILE - if the device supports the OpenCL embedded
profile.</p></td>
</tr>
<tr>
@@ -5977,10 +5978,10 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</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>
-<p class="tableblock"> <em>OpenCL<space><major_version.minor_version><space><vendor-specific
- information></em></p>
-<p class="tableblock"> The major_version.minor_version value returned will be 2.2.</p></td>
+ string has the following format:
+</p><p class="tableblock"> <em>OpenCL<space><major_version.minor_version><space><vendor-specific
+ information></em>
+</p><p class="tableblock"> The major_version.minor_version value returned will be 2.2.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_OPENCL_C_VERSION</p></td>
@@ -5988,16 +5989,16 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL C version string.
Returns the highest OpenCL C version supported by the compiler for
this device that is not of type CL_DEVICE_TYPE_CUSTOM.
- This version string has the following format:</p>
-<p class="tableblock"> <em>OpenCL<space>C<space><major_version.minor_version><space><vendor-specific
- information></em></p>
-<p class="tableblock"> The major_version.minor_version value returned must be 2.0 if
- CL_DEVICE_VERSION is OpenCL 2.0.</p>
-<p class="tableblock"> The major_version.minor_version value returned must be 1.2 if
- CL_DEVICE_VERSION is OpenCL 1.2.</p>
-<p class="tableblock"> The major_version.minor_version value returned must be 1.1 if
- CL_DEVICE_VERSION is OpenCL 1.1.</p>
-<p class="tableblock"> The major_version.minor_version value returned can be 1.0 or 1.1 if
+ This version string has the following format:
+</p><p class="tableblock"> <em>OpenCL<space>C<space><major_version.minor_version><space><vendor-specific
+ information></em>
+</p><p class="tableblock"> The major_version.minor_version value returned must be 2.0 if
+ CL_DEVICE_VERSION is OpenCL 2.0.
+</p><p class="tableblock"> The major_version.minor_version value returned must be 1.2 if
+ CL_DEVICE_VERSION is OpenCL 1.2.
+</p><p class="tableblock"> The major_version.minor_version value returned must be 1.1 if
+ CL_DEVICE_VERSION is OpenCL 1.1.
+</p><p class="tableblock"> The major_version.minor_version value returned can be 1.0 or 1.1 if
CL_DEVICE_VERSION is OpenCL 1.0.</p></td>
</tr>
<tr>
@@ -6007,8 +6008,8 @@
names themselves do not contain any spaces) supported by the device.
The list of extension names returned can be vendor supported
extension names and one or more of the following Khronos approved
- extension names:</p>
-<p class="tableblock"> <strong>cl_khr_int64_base_atomics</strong><br>
+ extension names:
+</p><p class="tableblock"> <strong>cl_khr_int64_base_atomics</strong><br>
<strong>cl_khr_int64_extended_atomics</strong><br>
<strong>cl_khr_fp16</strong><br>
<strong>cl_khr_gl_sharing</strong><br>
@@ -6021,16 +6022,16 @@
<strong>cl_khr_initialize_memory</strong><br>
<strong>cl_khr_terminate_context</strong><br>
<strong>cl_khr_spir</strong><br>
- <strong>cl_khr_srgb_image_writes</strong></p>
-<p class="tableblock"> The following approved Khronos extension names must be returned by
- all devices that support OpenCL C 2.0:</p>
-<p class="tableblock"> <strong>cl_khr_byte_addressable_store</strong><br>
+ <strong>cl_khr_srgb_image_writes</strong>
+</p><p class="tableblock"> The following approved Khronos extension names must be returned by
+ all devices that support OpenCL C 2.0:
+</p><p class="tableblock"> <strong>cl_khr_byte_addressable_store</strong><br>
<strong>cl_khr_fp64</strong> (for backward compatibility if double precision is
supported)<br>
<strong>cl_khr_3d_image_writes</strong><br>
<strong>cl_khr_image2d_from_buffer</strong><br>
- <strong>cl_khr_depth_images</strong></p>
-<p class="tableblock"> Please refer to the OpenCL 2.0 Extension Specification for a
+ <strong>cl_khr_depth_images</strong>
+</p><p class="tableblock"> Please refer to the OpenCL 2.0 Extension Specification for a
detailed description of these extensions.</p></td>
</tr>
<tr>
@@ -6061,19 +6062,19 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_PARTITION_MAX_SUB_DEVICES</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">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 CL_DEVICE_MAX_COMPUTE_UNITS.</p></td>
+ device is partitioned.
+</p><p class="tableblock"> The value returned cannot exceed CL_DEVICE_MAX_COMPUTE_UNITS.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_DEVICE_PARTITION_PROPERTIES</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">Returns the list of partition types supported by <em>device</em>.
This is an array of cl_device_partition_property values drawn from
- the following list:</p>
-<p class="tableblock"> CL_DEVICE_PARTITION_EQUALLY<br>
+ the following list:
+</p><p class="tableblock"> CL_DEVICE_PARTITION_EQUALLY<br>
CL_DEVICE_PARTITION_BY_COUNTS<br>
- CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN</p>
-<p class="tableblock"> If the device cannot be partitioned (i.e. there is no partitioning
+ CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN
+</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>
@@ -6083,14 +6084,14 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the list of supported affinity domains for partitioning the
device using CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN.
This is a bit-field that describes one or more of the following
- values:</p>
-<p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_NUMA<br>
+ values:
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_NUMA<br>
CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE<br>
CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE<br>
CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE<br>
CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE<br>
- CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE</p>
-<p class="tableblock"> If the device does not support any affinity domains, a value of 0
+ CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE
+</p><p class="tableblock"> If the device does not support any affinity domains, a value of 0
will be returned.</p></td>
</tr>
<tr>
@@ -6102,13 +6103,13 @@
CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN,
CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE, the affinity domain
used to perform the partition will be returned.
- This can be one of the following values:</p>
-<p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_NUMA<br>
+ This can be one of the following values:
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_NUMA<br>
CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE<br>
CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE<br>
CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE<br>
- CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE</p>
-<p class="tableblock"> Otherwise the implementation may either return a
+ CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE
+</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
is used to terminate the partition property list) in the memory that
@@ -6129,23 +6130,23 @@
Coarse-grain SVM allocations are required to be supported by all
OpenCL 2.0 devices.
This is a bit-field that describes a combination of the following
- values:</p>
-<p class="tableblock"> CL_DEVICE_SVM_COARSE_GRAIN_BUFFER - Support for coarse-grain buffer
+ values:
+</p><p class="tableblock"> CL_DEVICE_SVM_COARSE_GRAIN_BUFFER - Support for coarse-grain buffer
sharing using <strong>clSVMAlloc</strong>.
Memory consistency is guaranteed at synchronization points and the
host must use calls to <strong>clEnqueueMapBuffer</strong> and
- <strong>clEnqueueUnmapMemObject</strong>.</p>
-<p class="tableblock"> CL_DEVICE_SVM_FINE_GRAIN_BUFFER - Support for fine-grain buffer
+ <strong>clEnqueueUnmapMemObject</strong>.
+</p><p class="tableblock"> CL_DEVICE_SVM_FINE_GRAIN_BUFFER - Support for fine-grain buffer
sharing using <strong>clSVMAlloc</strong>.
Memory consistency is guaranteed at synchronization points without
- need for <strong>clEnqueueMapBuffer</strong> and <strong>clEnqueueUnmapMemObject</strong>.</p>
-<p class="tableblock"> CL_DEVICE_SVM_FINE_GRAIN_SYSTEM - Support for sharing the host’s
+ need for <strong>clEnqueueMapBuffer</strong> and <strong>clEnqueueUnmapMemObject</strong>.
+</p><p class="tableblock"> CL_DEVICE_SVM_FINE_GRAIN_SYSTEM - Support for sharing the host’s
entire virtual memory including memory allocated using <strong>malloc</strong>.
- Memory consistency is guaranteed at synchronization points.</p>
-<p class="tableblock"> CL_DEVICE_SVM_ATOMICS - Support for the OpenCL 2.0 atomic
+ Memory consistency is guaranteed at synchronization points.
+</p><p class="tableblock"> CL_DEVICE_SVM_ATOMICS - 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 is
+ OpenCL devices supporting fine-grain SVM allocations.
+</p><p class="tableblock"> The mandated minimum capability is
CL_DEVICE_SVM_COARSE_GRAIN_BUFFER.</p></td>
</tr>
<tr>
@@ -6195,16 +6196,19 @@
<dl>
<dt class="hdlist1">4</dt>
<dd>
-<p>NOTE: <strong>CL_DEVICE_MAX_WRITE_IMAGE_ARGS</strong> is only there for backward
-compatibility.
-<strong>CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS</strong> should be used instead.</p>
+<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 CL_DEVICE_MAX_READ_IMAGE_ARGS.
+Enqueuing a kernel that requires more images than the implementation can
+support will result in a CL_OUT_OF_RESOURCES error being returned.</p>
</dd>
<dt class="hdlist1">5</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>
+<p>NOTE: <strong>CL_DEVICE_MAX_WRITE_IMAGE_ARGS</strong> is only there for backward
+compatibility.
+<strong>CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS</strong> should be used instead.</p>
</dd>
<dt class="hdlist1">6</dt>
<dd>
@@ -6215,10 +6219,17 @@
</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>CL_DEVICE_QUEUE_PROPERTIES is deprecated and replaced by
CL_DEVICE_QUEUE_ON_HOST_PROPERTIES.</p>
</dd>
-<dt class="hdlist1">8</dt>
+<dt class="hdlist1">9</dt>
<dd>
<p>The platform profile returns the profile that is implemented by the
OpenCL framework.
@@ -6475,10 +6486,10 @@
unit counts.
For each non-zero count <em>m</em> in the list, a sub-device is created
with <em>m</em> compute units in it.
- CL_DEVICE_PARTITION_BY_COUNTS_LIST_END is defined to be 0.</p>
-<p class="tableblock"> The number of non-zero count entries in the list may not exceed
- CL_DEVICE_PARTITION_MAX_SUB_DEVICES.</p>
-<p class="tableblock"> The total number of compute units specified may not exceed
+ CL_DEVICE_PARTITION_BY_COUNTS_LIST_END is defined to be 0.
+</p><p class="tableblock"> The number of non-zero count entries in the list may not exceed
+ CL_DEVICE_PARTITION_MAX_SUB_DEVICES.
+</p><p class="tableblock"> The total number of compute units specified may not exceed
CL_DEVICE_PARTITION_MAX_COMPUTE_UNITS.</p></td>
</tr>
<tr>
@@ -6487,28 +6498,28 @@
<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"> CL_DEVICE_AFFINITY_DOMAIN_NUMA - Split the device into sub-devices
- comprised of compute units that share a NUMA node.</p>
-<p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE - Split the device into
+ list:
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_NUMA - Split the device into sub-devices
+ comprised of compute units that share a NUMA node.
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE - Split the device into
sub-devices comprised of compute units that share a level 4 data
- cache.</p>
-<p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE - Split the device into
+ cache.
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE - Split the device into
sub-devices comprised of compute units that share a level 3 data
- cache.</p>
-<p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE - Split the device into
+ cache.
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE - Split the device into
sub-devices comprised of compute units that share a level 2 data
- cache.</p>
-<p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE - Split the device into
+ cache.
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE - Split the device into
sub-devices comprised of compute units that share a level 1 data
- cache.</p>
-<p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE - Split the device
+ cache.
+</p><p class="tableblock"> CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE - 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
+ compute units that share memory subsystems at this level.
+</p><p class="tableblock"> The user may determine what happened by calling
<strong>clGetDeviceInfo</strong>(CL_DEVICE_PARTITION_TYPE) on the sub-devices.</p></td>
</tr>
</tbody>
@@ -6747,8 +6758,8 @@
between OpenCL and other APIs.
Please refer to the specific sections in the OpenCL 2.0 extension
specification that describe sharing with other APIs for restrictions
- on using this flag.</p>
-<p class="tableblock"> If CL_CONTEXT_INTEROP_USER_SYNC is not specified, a default of
+ on using this flag.
+</p><p class="tableblock"> If CL_CONTEXT_INTEROP_USER_SYNC is not specified, a default of
CL_FALSE is assumed.</p></td>
</tr>
</tbody>
@@ -6757,13 +6768,13 @@
<p><em>num_devices</em> is the number of devices specified in the <em>devices</em> argument.</p>
</div>
<div class="paragraph">
-<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<sup>10</sup> returned by
<strong>clGetDeviceIDs</strong> or sub-devices created by <strong>clCreateSubDevices</strong> for a
platform.</p>
</div>
<div class="dlist">
<dl>
-<dt class="hdlist1">9</dt>
+<dt class="hdlist1">10</dt>
<dd>
<p>Duplicate devices specified in <em>devices</em> are ignored.</p>
</dd>
@@ -6870,7 +6881,7 @@
</ul>
</div>
<div class="paragraph">
-<p>The function<sup>10</sup></p>
+<p>The function<sup>11</sup></p>
</div>
<div class="listingblock">
<div class="content">
@@ -6957,7 +6968,7 @@
required by the OpenCL implementation on the host.</p>
<div class="dlist">
<dl>
-<dt class="hdlist1">10</dt>
+<dt class="hdlist1">11</dt>
<dd>
<p><strong>clCreateContextfromType</strong> may return all or a subset of the actual
physical devices present in the platform and that match device_type.</p>
@@ -7100,7 +7111,7 @@
</thead>
<tbody>
<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_CONTEXT_REFERENCE_COUNT</strong><sup>11</sup></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_CONTEXT_REFERENCE_COUNT</strong><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">Return the <em>context</em> reference count.</p></td>
</tr>
@@ -7118,12 +7129,12 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_CONTEXT_PROPERTIES</strong></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">Return the properties argument specified in <strong>clCreateContext</strong> or
- <strong>clCreateContextFromType</strong>.</p>
-<p class="tableblock"> If the <em>properties</em> argument specified in <strong>clCreateContext</strong> or
+ <strong>clCreateContextFromType</strong>.
+</p><p class="tableblock"> If the <em>properties</em> argument specified in <strong>clCreateContext</strong> or
<strong>clCreateContextFromType</strong> used to create <em>context</em> is not <code>NULL</code>, the
implementation must return the values specified in the properties
- argument.</p>
-<p class="tableblock"> If the <em>properties</em> argument specified in <strong>clCreateContext</strong> or
+ argument.
+</p><p class="tableblock"> If the <em>properties</em> argument specified in <strong>clCreateContext</strong> or
<strong>clCreateContextFromType</strong> 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
@@ -7135,7 +7146,7 @@
</table>
<div class="dlist">
<dl>
-<dt class="hdlist1">11</dt>
+<dt class="hdlist1">12</dt>
<dd>
<p>The reference count returned should be considered immediately stale.
It is unsuitable for general use in applications.
@@ -7253,35 +7264,35 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_QUEUE_PROPERTIES</strong></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">This is a bitfield and can be set to a combination of the following
- values:</p>
-<p class="tableblock"> CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE - Determines whether the
+ values:
+</p><p class="tableblock"> CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE - 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"> CL_QUEUE_PROFILING_ENABLE - Enable or disable profiling of commands
+ Otherwise, commands are executed in-order.
+</p><p class="tableblock"> CL_QUEUE_PROFILING_ENABLE - 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"> CL_QUEUE_ON_DEVICE - Indicates that this is a device queue.
+ Otherwise profiling of commands is disabled.
+</p><p class="tableblock"> CL_QUEUE_ON_DEVICE - Indicates that this is a device queue.
If CL_QUEUE_ON_DEVICE is set,
- CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE<sup>1</sup> must also be set.</p>
-<p class="tableblock"> CL_QUEUE_ON_DEVICE_DEFAULT<sup>2</sup> --indicates that this is the default
+ CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE<sup>1</sup> must also be set.
+</p><p class="tableblock"> CL_QUEUE_ON_DEVICE_DEFAULT<sup>2</sup> --indicates that this is the default
device queue.
- This can only be used with CL_QUEUE_ON_DEVICE.</p>
-<p class="tableblock"> If CL_QUEUE_PROPERTIES is not specified an in-order host command
+ This can only be used with CL_QUEUE_ON_DEVICE.
+</p><p class="tableblock"> If CL_QUEUE_PROPERTIES 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"><strong>CL_QUEUE_SIZE</strong></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">Specifies the size of the device queue in bytes.</p>
-<p class="tableblock"> This can only be specified if CL_QUEUE_ON_DEVICE is set in
+<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 CL_QUEUE_ON_DEVICE is set in
CL_QUEUE_PROPERTIES.
- This must be a value ≤ CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE.</p>
-<p class="tableblock"> For best performance, this should be ≤
- CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE.</p>
-<p class="tableblock"> If CL_QUEUE_SIZE is not specified, the device queue is created with
+ This must be a value ≤ CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE.
+</p><p class="tableblock"> For best performance, this should be ≤
+ CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE.
+</p><p class="tableblock"> If CL_QUEUE_SIZE is not specified, the device queue is created with
CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE as the size of the queue.</p></td>
</tr>
</tbody>
@@ -7678,18 +7689,18 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_WRITE_ONLY</strong></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 CL_MEM_WRITE_ONLY
- inside a kernel is undefined.</p>
-<p class="tableblock"> CL_MEM_READ_WRITE and CL_MEM_WRITE_ONLY are mutually exclusive.</p></td>
+ written but not read by a kernel.
+</p><p class="tableblock"> Reading from a buffer or image object created with CL_MEM_WRITE_ONLY
+ inside a kernel is undefined.
+</p><p class="tableblock"> CL_MEM_READ_WRITE and CL_MEM_WRITE_ONLY are mutually exclusive.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_READ_ONLY</strong></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 CL_MEM_READ_ONLY inside
- a kernel is undefined.</p>
-<p class="tableblock"> CL_MEM_READ_WRITE or CL_MEM_WRITE_ONLY and CL_MEM_READ_ONLY are mutually
+ readonly memory object when used inside a kernel.
+</p><p class="tableblock"> Writing to a buffer or image object created with CL_MEM_READ_ONLY inside
+ a kernel is undefined.
+</p><p class="tableblock"> CL_MEM_READ_WRITE or CL_MEM_WRITE_ONLY and CL_MEM_READ_ONLY are mutually
exclusive.</p></td>
</tr>
<tr>
@@ -7697,21 +7708,21 @@
<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
- for the memory object.</p>
-<p class="tableblock"> The contents of the memory pointed to by host_ptr at the time of the
- clCreateBuffer call define the initial contents of the buffer object.</p>
-<p class="tableblock"> OpenCL implementations are allowed to cache the buffer contents pointed
+ for the memory object.
+</p><p class="tableblock"> The contents of the memory pointed to by host_ptr at the time of the
+ clCreateBuffer call define the initial contents of the buffer object.
+</p><p class="tableblock"> OpenCL implementations are allowed to cache the buffer contents pointed
to by host_ptr in device memory.
- This cached copy can be used when kernels are executed on a device.</p>
-<p class="tableblock"> The result of OpenCL commands that operate on multiple buffer objects
+ This cached copy can be used when kernels are executed on a device.
+</p><p class="tableblock"> The result of OpenCL commands that operate on multiple buffer objects
created with the same host_ptr or from overlapping host or SVM regions
is considered to be undefined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_ALLOC_HOST_PTR</strong></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"> CL_MEM_ALLOC_HOST_PTR and CL_MEM_USE_HOST_PTR are mutually exclusive.</p></td>
+ to allocate memory from host accessible memory.
+</p><p class="tableblock"> CL_MEM_ALLOC_HOST_PTR and CL_MEM_USE_HOST_PTR are mutually exclusive.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_COPY_HOST_PTR</strong></p></td>
@@ -7721,9 +7732,9 @@
data from memory referenced by host_ptr.
The implementation will copy the memory immediately and host_ptr is
available for reuse by the application when the <strong>clCreateBuffer</strong> or
- <strong>clCreateImage</strong> operation returns.</p>
-<p class="tableblock"> CL_MEM_COPY_HOST_PTR and CL_MEM_USE_HOST_PTR are mutually exclusive.</p>
-<p class="tableblock"> CL_MEM_COPY_HOST_PTR can be used with CL_MEM_ALLOC_HOST_PTR to
+ <strong>clCreateImage</strong> operation returns.
+</p><p class="tableblock"> CL_MEM_COPY_HOST_PTR and CL_MEM_USE_HOST_PTR are mutually exclusive.
+</p><p class="tableblock"> CL_MEM_COPY_HOST_PTR can be used with CL_MEM_ALLOC_HOST_PTR to
initialize the contents of the cl_mem object allocated using
hostaccessible (e.g. PCIe) memory.</p></td>
</tr>
@@ -7739,14 +7750,14 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_HOST_READ_ONLY</strong></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"> CL_MEM_HOST_WRITE_ONLY and CL_MEM_HOST_READ_ONLY are mutually exclusive.</p></td>
+ read).
+</p><p class="tableblock"> CL_MEM_HOST_WRITE_ONLY and CL_MEM_HOST_READ_ONLY are mutually exclusive.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_HOST_NO_ACCESS</strong></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"> CL_MEM_HOST_WRITE_ONLY or CL_MEM_HOST_READ_ONLY and
+ write the memory object.
+</p><p class="tableblock"> CL_MEM_HOST_WRITE_ONLY or CL_MEM_HOST_READ_ONLY and
CL_MEM_HOST_NO_ACCESS are mutually exclusive.</p></td>
</tr>
</tbody>
@@ -8072,8 +8083,8 @@
points to can be used by the application.</p>
</div>
<div class="paragraph">
-<p>If <em>blocking_write</em> is CL_TRUE, the OpenCL implementation copies the data
-referred to by <em>ptr</em> and enqueues the write operation in the command-queue.
+<p>If <em>blocking_write</em> is CL_TRUE, 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
<strong>clEnqueueWriteBuffer</strong> call returns.</p>
</div>
@@ -8258,8 +8269,8 @@
points to can be used by the application.</p>
</div>
<div class="paragraph">
-<p>If <em>blocking_write</em> is CL_TRUE, the OpenCL implementation copies the data
-referred to by <em>ptr</em> and enqueues the write operation in the command-queue.
+<p>If <em>blocking_write</em> is CL_TRUE, 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
<strong>clEnqueueWriteBufferRect</strong> call returns.</p>
</div>
@@ -9233,31 +9244,31 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MAP_READ</strong></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 <strong>clEnqueueMapBuffer</strong> (<strong>clEnqueueMapImage</strong>) is
+ being mapped for reading.
+</p><p class="tableblock"> The pointer returned by <strong>clEnqueueMapBuffer</strong> (<strong>clEnqueueMapImage</strong>) is
guaranteed to contain the latest bits in the region being mapped when
the <strong>clEnqueueMapBuffer</strong> (<strong>clEnqueueMapImage</strong>) command has completed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MAP_WRITE</strong></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 <strong>clEnqueueMapBuffer</strong> (<strong>clEnqueueMapImage</strong>) is
+ being mapped for writing.
+</p><p class="tableblock"> The pointer returned by <strong>clEnqueueMapBuffer</strong> (<strong>clEnqueueMapImage</strong>) is
guaranteed to contain the latest bits in the region being mapped when
the <strong>clEnqueueMapBuffer</strong> (<strong>clEnqueueMapImage</strong>) command has completed</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MAP_WRITE_INVALIDATE_REGION</strong></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 contents of the region being mapped are to be discarded.
+ being mapped for writing.
+</p><p class="tableblock"> The contents of the region being mapped are to be discarded.
This is typically the case when the region being mapped is overwritten
by the host.
This flag allows the implementation to no longer guarantee that the
pointer returned by <strong>clEnqueueMapBuffer</strong> (<strong>clEnqueueMapImage</strong>) contains
the latest bits in the region being mapped which can be a significant
- performance enhancement.</p>
-<p class="tableblock"> CL_MAP_READ or CL_MAP_WRITE and CL_MAP_WRITE_INVALIDATE_REGION are
+ performance enhancement.
+</p><p class="tableblock"> CL_MAP_READ or CL_MAP_WRITE and CL_MAP_WRITE_INVALIDATE_REGION are
mutually exclusive.</p></td>
</tr>
</tbody>
@@ -10414,8 +10425,8 @@
points to can be used by the application.</p>
</div>
<div class="paragraph">
-<p>If <em>blocking_write</em> is CL_TRUE, the OpenCL implementation copies the data
-referred to by <em>ptr</em> and enqueues the write command in the command-queue.
+<p>If <em>blocking_write</em> is CL_TRUE, 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
<strong>clEnqueueWriteImage</strong> call returns.</p>
</div>
@@ -12612,12 +12623,12 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_TYPE</strong></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">Returns one of the following values:</p>
-<p class="tableblock"> CL_MEM_OBJECT_BUFFER if <em>memobj</em> is created with <strong>clCreateBuffer</strong> or
- <strong>clCreateSubBuffer</strong>.</p>
-<p class="tableblock"> cl_image_desc.image_type argument value if <em>memobj</em> is created with
- <strong>clCreateImage</strong>.</p>
-<p class="tableblock"> CL_MEM_OBJECT_PIPE if <em>memobj</em> is created with <strong>clCreatePipe</strong>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns one of the following values:
+</p><p class="tableblock"> CL_MEM_OBJECT_BUFFER if <em>memobj</em> is created with <strong>clCreateBuffer</strong> or
+ <strong>clCreateSubBuffer</strong>.
+</p><p class="tableblock"> cl_image_desc.image_type argument value if <em>memobj</em> is created with
+ <strong>clCreateImage</strong>.
+</p><p class="tableblock"> CL_MEM_OBJECT_PIPE if <em>memobj</em> is created with <strong>clCreatePipe</strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_FLAGS</strong></p></td>
@@ -12626,8 +12637,8 @@
with <strong>clCreateBuffer</strong>,<br>
<strong>clCreateSubBuffer</strong>,<br>
<strong>clCreateImage</strong> or<br>
- <strong>clCreatePipe</strong>.</p>
-<p class="tableblock"> If <em>memobj</em> is a sub-buffer the memory access qualifiers inherited
+ <strong>clCreatePipe</strong>.
+</p><p class="tableblock"> If <em>memobj</em> is a sub-buffer the memory access qualifiers inherited
from parent buffer is also returned.</p></td>
</tr>
<tr>
@@ -12642,8 +12653,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">If <em>memobj</em> is created with <strong>clCreateBuffer</strong> or <strong>clCreateImage</strong> and
CL_MEM_USE_HOST_PTR is specified in mem_flags, return the host_ptr
argument value specified when <em>memobj</em> is created.
- Otherwise a <code>NULL</code> value is returned.</p>
-<p class="tableblock"> If <em>memobj</em> is created with <strong>clCreateSubBuffer</strong>, return the host_ptr
+ Otherwise a <code>NULL</code> value is returned.
+</p><p class="tableblock"> If <em>memobj</em> is created with <strong>clCreateSubBuffer</strong>, return the host_ptr
+ origin value specified when <em>memobj</em> is created.
host_ptr is the argument value specified to <strong>clCreateBuffer</strong> and
CL_MEM_USE_HOST_PTR is specified in mem_flags for memory object from
@@ -12674,17 +12685,17 @@
<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
<strong>clCreateSubBuffer</strong> if <em>memobj</em> is a subbuffer object created using
- <strong>clCreateSubBuffer</strong>.</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>
+ <strong>clCreateSubBuffer</strong>.
+</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>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_OFFSET</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">Return offset if <em>memobj</em> is a sub-buffer object created using
- <strong>clCreateSubBuffer</strong>.</p>
-<p class="tableblock"> This return 0 if <em>memobj</em> is not a subbuffer object.</p></td>
+ <strong>clCreateSubBuffer</strong>.
+</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"><strong>CL_MEM_USES_SVM_POINTER</strong></p></td>
@@ -12887,18 +12898,18 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_WRITE_ONLY</strong></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 CL_MEM_WRITE_ONLY inside a kernel
- is undefined.</p>
-<p class="tableblock"> CL_MEM_READ_WRITE and CL_MEM_WRITE_ONLY are mutually exclusive.</p></td>
+ a kernel.
+</p><p class="tableblock"> Reading from a SVM buffer created with CL_MEM_WRITE_ONLY inside a kernel
+ is undefined.
+</p><p class="tableblock"> CL_MEM_READ_WRITE and CL_MEM_WRITE_ONLY are mutually exclusive.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_MEM_READ_ONLY</strong></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 CL_MEM_READ_ONLY inside a kernel is
- undefined.</p>
-<p class="tableblock"> CL_MEM_READ_WRITE or CL_MEM_WRITE_ONLY and CL_MEM_READ_ONLY are mutually
+ object when used inside a kernel.
+</p><p class="tableblock"> Writing to a SVM buffer created with CL_MEM_READ_ONLY inside a kernel is
+ undefined.
+</p><p class="tableblock"> CL_MEM_READ_WRITE or CL_MEM_WRITE_ONLY and CL_MEM_READ_ONLY are mutually
exclusive.</p></td>
</tr>
<tr>
@@ -13873,32 +13884,32 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_SAMPLER_NORMALIZED_COORDS</strong></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 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 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 CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_SAMPLER_ADDRESSING_MODE</strong></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">Specifies how out-of-range image coordinates are handled when
- reading from an image.</p>
-<p class="tableblock"> Valid values are:</p>
-<p class="tableblock"> CL_ADDRESS_MIRRORED_REPEAT<br>
+ reading from an image.
+</p><p class="tableblock"> Valid values are:
+</p><p class="tableblock"> CL_ADDRESS_MIRRORED_REPEAT<br>
CL_ADDRESS_REPEAT<br>
CL_ADDRESS_CLAMP_TO_EDGE<br>
CL_ADDRESS_CLAMP<br>
- CL_ADDRESS_NONE</p>
-<p class="tableblock"> The default is CL_ADDRESS_CLAMP.</p></td>
+ CL_ADDRESS_NONE
+</p><p class="tableblock"> The default is CL_ADDRESS_CLAMP.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_SAMPLER_FILTER_MODE</strong></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">Specifies the type of filter that must be applied when reading an
image.
- Valid values are:</p>
-<p class="tableblock"> CL_FILTER_NEAREST<br>
- CL_FILTER_LINEAR</p>
-<p class="tableblock"> The default value is CL_FILTER_NEAREST.</p></td>
+ Valid values are:
+</p><p class="tableblock"> CL_FILTER_NEAREST<br>
+ CL_FILTER_LINEAR
+</p><p class="tableblock"> The default value is CL_FILTER_NEAREST.</p></td>
</tr>
</tbody>
</table>
@@ -15830,13 +15841,13 @@
<strong>clCreateProgramWithSource</strong>.
The source string returned is a concatenation of all source strings
specified to <strong>clCreateProgramWithSource</strong> with a null terminator.
- The concatenation strips any nulls in the original source strings.</p>
-<p class="tableblock"> If <em>program</em> is created using <strong>clCreateProgramWithBinary</strong>,
+ The concatenation strips any nulls in the original source strings.
+</p><p class="tableblock"> If <em>program</em> is created using <strong>clCreateProgramWithBinary</strong>,
<strong>clCreateProgramWithIL</strong> or <strong>clCreateProgramWithBuiltinKernels</strong>, a
null string or the appropriate program source code is returned
depending on whether or not the program source code is stored in the
- binary.</p>
-<p class="tableblock"> The actual number of characters that represents the program source
+ binary.
+</p><p class="tableblock"> The actual number of characters that represents the program source
code including the null terminator is returned in
<em>param_value_size_ret</em>.</p></td>
</tr>
@@ -15844,8 +15855,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_PROGRAM_IL</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">Returns the program IL for programs created with
- <strong>clCreateProgramWithIL</strong>.</p>
-<p class="tableblock"> If <em>program</em> is created with <strong>clCreateProgramWithSource</strong>,
+ <strong>clCreateProgramWithIL</strong>.
+</p><p class="tableblock"> If <em>program</em> is created with <strong>clCreateProgramWithSource</strong>,
<strong>clCreateProgramWithBinary</strong> or <strong>clCreateProgramWithBuiltinKernels</strong>
the memory pointed to by param_value will be unchanged and
param_value_size_retwill be set to 0.</p></td>
@@ -15859,8 +15870,8 @@
The size of the array is the number of devices associated with
program.
If a binary is not available for a device(s), a size of zero is
- returned.</p>
-<p class="tableblock"> If <em>program</em> is created using <strong>clCreateProgramWithBuiltinKernels</strong>,
+ returned.
+</p><p class="tableblock"> If <em>program</em> is created using <strong>clCreateProgramWithBuiltinKernels</strong>,
the implementation may return zero in any entries of the returned
array.</p></td>
</tr>
@@ -15880,13 +15891,13 @@
representation (a.k.a. IR) or device specific executable bits or
both.
The decision on which information is returned in the binary is up to
- the OpenCL implementation.</p>
-<p class="tableblock"> param_value points to an array of <code>n</code> pointers allocated by the
+ the OpenCL implementation.
+</p><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 CL_PROGRAM_BINARY_SIZES
- query as described in this table.</p>
-<p class="tableblock"> Each entry in this array is used by the implementation as the
+ 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,
@@ -16035,18 +16046,18 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_PROGRAM_BUILD_STATUS</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">Returns the build, compile or link status, whichever was performed
- last on program for device.</p>
-<p class="tableblock"> This can be one of the following:</p>
-<p class="tableblock"> CL_BUILD_NONE - The build status returned if no <strong>clBuildProgram</strong>,
+ last on program for device.
+</p><p class="tableblock"> This can be one of the following:
+</p><p class="tableblock"> CL_BUILD_NONE - The build status returned if no <strong>clBuildProgram</strong>,
<strong>clCompileProgram</strong> or <strong>clLinkProgram</strong> has been performed on the
- specified program object for device.</p>
-<p class="tableblock"> CL_BUILD_ERROR - The build status returned if <strong>clBuildProgram</strong>,
+ specified program object for device.
+</p><p class="tableblock"> CL_BUILD_ERROR - The build status returned if <strong>clBuildProgram</strong>,
<strong>clCompileProgram</strong> or <strong>clLinkProgram</strong> whichever was performed last
- on the specified program object for device generated an error.</p>
-<p class="tableblock"> CL_BUILD_SUCCESS - The build status returned if <strong>clBuildProgram</strong>,
+ on the specified program object for device generated an error.
+</p><p class="tableblock"> CL_BUILD_SUCCESS - The build status returned if <strong>clBuildProgram</strong>,
<strong>clCompileProgram</strong> or <strong>clLinkProgram</strong> whichever was performed last
- on the specified program object for device was successful.</p>
-<p class="tableblock"> CL_BUILD_IN_PROGRESS - The build status returned if
+ on the specified program object for device was successful.
+</p><p class="tableblock"> CL_BUILD_IN_PROGRESS - The build status returned if
<strong>clBuildProgram</strong>, <strong>clCompileProgram</strong> or <strong>clLinkProgram</strong> whichever
was performed last on the specified program object for device has
not finished.</p></td>
@@ -16056,8 +16067,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</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 <strong>clBuildProgram</strong>, <strong>clCompileProgram</strong> or <strong>clLinkProgram</strong>,
- whichever was performed last on program for device.</p>
-<p class="tableblock"> If build status of program for device is CL_BUILD_NONE, an empty
+ whichever was performed last on program for device.
+</p><p class="tableblock"> If build status of program for device is CL_BUILD_NONE, an empty
string is returned.</p></td>
</tr>
<tr>
@@ -16065,28 +16076,28 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Return the build, compile or link log for <strong>clBuildProgram</strong>,
<strong>clCompileProgram</strong> or <strong>clLinkProgram</strong>, whichever was performed last
- on program for device.</p>
-<p class="tableblock"> If build status of program for device is CL_BUILD_NONE, an empty
+ on program for device.
+</p><p class="tableblock"> If build status of program for device is CL_BUILD_NONE, an empty
string is returned.</p></td>
</tr>
<tr>
<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">cl_program_binary_type</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"> CL_PROGRAM_BINARY_TYPE_NONE - There is no binary associated with
- device.</p>
-<p class="tableblock"> CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT - A compiled binary is
+ This can be one of the following values:
+</p><p class="tableblock"> CL_PROGRAM_BINARY_TYPE_NONE - There is no binary associated with
+ device.
+</p><p class="tableblock"> CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT - A compiled binary is
associated with device.
This is the case if program was created using
<strong>clCreateProgramWithSource</strong> and compiled using <strong>clCompileProgram</strong> or
- a compiled binary is loaded using <strong>clCreateProgramWithBinary</strong>.</p>
-<p class="tableblock"> CL_PROGRAM_BINARY_TYPE_LIBRARY - A library binary is associated with
+ a compiled binary is loaded using <strong>clCreateProgramWithBinary</strong>.
+</p><p class="tableblock"> CL_PROGRAM_BINARY_TYPE_LIBRARY - A library binary is associated with
device.
This is the case if program was created by <strong>clLinkProgram</strong> which is
called with the <code>-create-library</code> link option or if a library binary
- is loaded using <strong>clCreateProgramWithBinary</strong>.</p>
-<p class="tableblock"> CL_PROGRAM_BINARY_TYPE_EXECUTABLE - An executable binary is
+ is loaded using <strong>clCreateProgramWithBinary</strong>.
+</p><p class="tableblock"> CL_PROGRAM_BINARY_TYPE_EXECUTABLE - An executable binary is
associated with device.
This is the case if program was created by <strong>clLinkProgram</strong> without
the <code>-create-library link</code> option or program was created by
@@ -16704,8 +16715,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">void *[]</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>
-<p class="tableblock"> Non-argument SVM buffers must be specified by passing pointers to
+ through the execution information.
+</p><p class="tableblock"> Non-argument SVM buffers must be specified by passing pointers to
those buffers via <strong>clSetKernelExecInfo</strong> for coarse-grain and
fine-grain buffer SVM allocations but not for finegrain system SVM
allocations.</p></td>
@@ -16992,13 +17003,13 @@
with the kernel function declaration in the program source.
These attributes include attributes described in the earlier OpenCL
C kernel language specifications and other attributes supported by
- an implementation.</p>
-<p class="tableblock"> Attributes are returned as they were declared inside
+ an implementation.
+</p><p class="tableblock"> Attributes are returned as they were declared inside
<code>__attribute__((...))</code>, with any surrounding whitespace and
embedded newlines removed.
When multiple attributes are present, they are returned as a single,
- space delimited string.</p>
-<p class="tableblock"> For kernels not created from OpenCL C source and the
+ space delimited string.
+</p><p class="tableblock"> For kernels not created from OpenCL C source and the
<strong>clCreateProgramWithSource</strong> API call the string returned from this
query will be empty.</p></td>
</tr>
@@ -17112,8 +17123,8 @@
global size that can be used to execute a kernel (i.e.
<em>global_work_size</em> argument to <strong>clEnqueueNDRangeKernel</strong>) on a custom
device given by device or a built-in kernel on an OpenCL device
- given by device.</p>
-<p class="tableblock"> If device is not a custom device and kernel is not a built-in
+ given by device.
+</p><p class="tableblock"> If device is not a custom device and kernel is not a built-in
kernel, <strong>clGetKernelWorkGroupInfo</strong> returns the error
CL_INVALID_VALUE.</p></td>
</tr>
@@ -17125,17 +17136,17 @@
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 CL_DEVICE_MAX_WORK_GROUP_SIZE this value may
- vary from one kernel to another as well as one device to another.</p>
-<p class="tableblock"> CL_KERNEL_WORK_GROUP_SIZE will be less than or equal to
+ should be.
+</p><p class="tableblock"> As a result and unlike CL_DEVICE_MAX_WORK_GROUP_SIZE this value may
+ vary from one kernel to another as well as one device to another.
+</p><p class="tableblock"> CL_KERNEL_WORK_GROUP_SIZE will be less than or equal to
CL_DEVICE_MAX_WORK_GROUP_SIZE for a given kernel object.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_KERNEL_COMPILE_WORK_GROUP_SIZE</strong></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">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,
+<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>
@@ -17146,8 +17157,8 @@
to execute the kernel, variables declared inside the kernel with the
<code>__local</code> address qualifier and local memory to be allocated for
arguments to the kernel declared as pointers with the <code>__local</code>
- address qualifier and whose size is specified with <strong>clSetKernelArg</strong>.</p>
-<p class="tableblock"> If the local memory size, for any pointer argument to the kernel
+ address qualifier and whose size is specified with <strong>clSetKernelArg</strong>.
+</p><p class="tableblock"> If the local memory size, for any pointer argument to the kernel
declared with the <code>__local</code> address qualifier, is not specified,
its size is assumed to be 0.</p></td>
</tr>
@@ -17294,8 +17305,8 @@
<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
+ be the same or smaller size.
+</p><p class="tableblock"> The <em>input_value</em> must be an array of size_t values
corresponding to the local work size parameter of the intended
dispatch.
The number of dimensions in the ND-range will be inferred from
@@ -17309,8 +17320,8 @@
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
+ same number of sub-groups.
+</p><p class="tableblock"> The <em>input_value</em> must be an array of size_t values
corresponding to the local work size parameter of the intended
dispatch.
The number of dimensions in the ND-range will be inferred from
@@ -17354,9 +17365,7 @@
<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">Returns the number of sub-groups specified in the kernel source
- or IL.
- If the sub-group count is not specified using the above
- attribute then 0 is returned.</p></td>
+ or IL. If the sub-group count is not specified then 0 is returned.</p></td>
</tr>
</tbody>
</table>
@@ -17469,12 +17478,12 @@
<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">Returns the address qualifier specified for the argument given by
<em>arg_indx</em>.
- This can be one of the following values:</p>
-<p class="tableblock"> CL_KERNEL_ARG_ADDRESS_GLOBAL<br>
+ This can be one of the following values:
+</p><p class="tableblock"> CL_KERNEL_ARG_ADDRESS_GLOBAL<br>
CL_KERNEL_ARG_ADDRESS_LOCAL<br>
CL_KERNEL_ARG_ADDRESS_CONSTANT<br>
- CL_KERNEL_ARG_ADDRESS_PRIVATE</p>
-<p class="tableblock"> If no address qualifier is specified, the default address qualifier
+ CL_KERNEL_ARG_ADDRESS_PRIVATE
+</p><p class="tableblock"> If no address qualifier is specified, the default address qualifier
which is CL_KERNEL_ARG_ADDRESS_PRIVATE is returned.</p></td>
</tr>
<tr>
@@ -17482,12 +17491,12 @@
<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">Returns the access qualifier specified for the argument given by
<em>arg_indx</em>.
- This can be one of the following values:</p>
-<p class="tableblock"> CL_KERNEL_ARG_ACCESS_READ_ONLY<br>
+ This can be one of the following values:
+</p><p class="tableblock"> CL_KERNEL_ARG_ACCESS_READ_ONLY<br>
CL_KERNEL_ARG_ACCESS_WRITE_ONLY<br>
CL_KERNEL_ARG_ACCESS_READ_WRITE<br>
- CL_KERNEL_ARG_ACCESS_NONE</p>
-<p class="tableblock"> If argument is not an image type and is not declared with the pipe
+ CL_KERNEL_ARG_ACCESS_NONE
+</p><p class="tableblock"> If argument is not an image type and is not declared with the pipe
qualifier, CL_KERNEL_ARG_ACCESS_NONE is returned.
If argument is an image type, the access qualifier specified or the
default access qualifier is returned.</p></td>
@@ -17513,8 +17522,8 @@
The returned value can be: CL_KERNEL_ARG_TYPE_CONST<sup>17</sup>,
CL_KERNEL_ARG_TYPE_RESTRICT, CL_KERNEL_ARG_TYPE_VOLATILE<sup>18</sup>, a
combination of the above enums, CL_KERNEL_ARG_TYPE_PIPE or
- CL_KERNEL_ARG_TYPE_NONE.</p>
-<p class="tableblock"> CL_KERNEL_ARG_TYPE_NONE is returned for all parameters passed by
+ CL_KERNEL_ARG_TYPE_NONE.
+</p><p class="tableblock"> CL_KERNEL_ARG_TYPE_NONE is returned for all parameters passed by
value.</p></td>
</tr>
<tr>
@@ -18383,8 +18392,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_EVENT_COMMAND_TYPE</strong></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 associated with event.
- Can be one of the following values:</p>
-<p class="tableblock"> CL_COMMAND_NDRANGE_KERNEL<br>
+ Can be one of the following values:
+</p><p class="tableblock"> CL_COMMAND_NDRANGE_KERNEL<br>
CL_COMMAND_NATIVE_KERNEL<br>
CL_COMMAND_READ_BUFFER<br>
CL_COMMAND_WRITE_BUFFER<br>
@@ -18418,13 +18427,13 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_EVENT_COMMAND_EXECUTION_STATUS</strong><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">Return the execution status of the command identified by event.
- Valid values are:</p>
-<p class="tableblock"> CL_QUEUED (command has been enqueued n the command-queue),</p>
-<p class="tableblock"> CL_SUBMITTED (enqueued command has been submitted by the host to the
- device associated with the command-queue),</p>
-<p class="tableblock"> CL_RUNNING (device is currently executing this command),</p>
-<p class="tableblock"> CL_COMPLETE (the command has completed), or</p>
-<p class="tableblock"> Error code given by a negative integer value. (command was
+ Valid values are:
+</p><p class="tableblock"> CL_QUEUED (command has been enqueued n the command-queue),
+</p><p class="tableblock"> CL_SUBMITTED (enqueued command has been submitted by the host to the
+ device associated with the command-queue),
+</p><p class="tableblock"> CL_RUNNING (device is currently executing this command),
+</p><p class="tableblock"> CL_COMPLETE (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.).
These error codes come from the same set of error codes that are
@@ -18992,34 +19001,12 @@
<div class="sect2">
<h3 id="profiling-operations">5.14. Profiling Operations on Memory Objects and Kernels</h3>
<div class="paragraph">
-<p>This section describes profiling of OpenCL functions that are enqueued as
-commands to a command-queue.
-The specific functions<sup>22</sup> being referred to are:
-<strong>clEnqueue{Read|Write|Map}Buffer</strong>, <strong>clEnqueue{Read|Write}BufferRect</strong>,
-<strong>clEnqueue{Read|Write|Map}Image</strong>, <strong>clEnqueueUnmapMemObject</strong>,
-<strong>clEnqueueSVMMemcpy</strong>, <strong>clEnqueueSVMMemFill</strong>, <strong>clEnqueueSVMMap</strong>,
-<strong>clEnqueueSVMUnmap</strong>, <strong>clEnqueueSVMFree</strong>, <strong>clEnqueueCopyBuffer</strong>,
-<strong>clEnqueueCopyBufferRect</strong>, <strong>clEnqueueCopyImage</strong>,
-<strong>clEnqueueCopyImageToBuffer</strong>, <strong>clEnqueueCopyBufferToImage</strong>,
-<strong>clEnqueueNDRangeKernel</strong> and <strong>clEnqueueNativeKernel</strong>.
-These enqueued commands are identified by unique event objects.</p>
-</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">22</dt>
-<dd>
-<p><strong>clEnqueueAcquireGLObjects</strong> and <strong>clEnqueueReleaseGLObjects</strong> defined in
-<em>section 9.4.6</em> of the OpenCL 2.2 Extension Specification are also
-included.</p>
-</dd>
-</dl>
-</div>
-<div class="paragraph">
-<p>Event objects can be used to capture profiling information that measure
-execution time of a command.
-Profiling of OpenCL commands can be enabled either by using a command-queue
-created with CL_QUEUE_PROFILING_ENABLE flag set in <em>properties</em> argument to
-<strong>clCreateCommandQueueWithProperties</strong>.</p>
+<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 CL_QUEUE_PROFILING_ENABLE
+flag set in <em>properties</em> argument to <strong>clCreateCommandQueueWithProperties</strong>.
+When profiling is enabled, the event objects that are created from
+enqueuing a command store a timestamp for each of their state transitions.</p>
</div>
<div class="paragraph">
<p>If profiling is enabled, the function</p>
@@ -19136,8 +19123,8 @@
<li>
<p>CL_PROFILING_INFO_NOT_AVAILABLE if the CL_QUEUE_PROFILING_ENABLE flag is
not set for the command-queue, if the execution status of the command
-identified by <em>event</em> is not CL_COMPLETE or if <em>event</em> refers to the
-<strong>clEnqueueSVMFree</strong> command or is a user event object.</p>
+identified by <em>event</em> is not CL_COMPLETE or if <em>event</em> is a user event
+object.</p>
</li>
<li>
<p>CL_INVALID_VALUE if <em>param_name</em> is not valid, or if size in bytes
@@ -19654,20 +19641,20 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_IMAGE_MAX_BUFFER_SIZE</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">Max number of pixels for a 1D image created from a buffer object.</p>
-<p class="tableblock"> The minimum value is 2048 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_IMAGE_MAX_ARRAY_SIZE</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">Max number of images in a 1D or 2D image array.</p>
-<p class="tableblock"> The minimum value is 256 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_MAX_SAMPLERS</strong></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">Maximum number of samplers that can be used in a kernel.</p>
-<p class="tableblock"> The minimum value is 8 if CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</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 CL_DEVICE_IMAGE_SUPPORT is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_MAX_PARAMETER_SIZE</strong></p></td>
@@ -19681,20 +19668,20 @@
<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">Describes single precision floatingpoint capability of the device.
This is a bit-field that describes one or more of the following
- values:</p>
-<p class="tableblock"> CL_FP_DENORM - denorms are supported</p>
-<p class="tableblock"> CL_FP_INF_NAN - INF and quiet NaNs are supported.</p>
-<p class="tableblock"> CL_FP_ROUND_TO_NEAREST - round to nearest even rounding mode
- supported</p>
-<p class="tableblock"> CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported</p>
-<p class="tableblock"> CL_FP_ROUND_TO_INF - round to positive and negative infinity
- rounding modes supported</p>
-<p class="tableblock"> CL_FP_FMA - IEEE754-2008 fused multiply-add is supported.</p>
-<p class="tableblock"> CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT - divide and sqrt are correctly
- rounded as defined by the IEEE754 specification.</p>
-<p class="tableblock"> CL_FP_SOFT_FLOAT - Basic floating-point operations (such as
- addition, subtraction, multiplication) are implemented in software.</p>
-<p class="tableblock"> The mandated minimum floating-point capability is:
+ values:
+</p><p class="tableblock"> CL_FP_DENORM - denorms are supported
+</p><p class="tableblock"> CL_FP_INF_NAN - INF and quiet NaNs are supported.
+</p><p class="tableblock"> CL_FP_ROUND_TO_NEAREST - round to nearest even rounding mode
+ supported
+</p><p class="tableblock"> CL_FP_ROUND_TO_ZERO - round to zero rounding mode supported
+</p><p class="tableblock"> CL_FP_ROUND_TO_INF - round to positive and negative infinity
+ rounding modes supported
+</p><p class="tableblock"> CL_FP_FMA - IEEE754-2008 fused multiply-add is supported.
+</p><p class="tableblock"> CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT - divide and sqrt are correctly
+ rounded as defined by the IEEE754 specification.
+</p><p class="tableblock"> CL_FP_SOFT_FLOAT - Basic floating-point operations (such as
+ addition, subtraction, multiplication) are implemented in software.
+</p><p class="tableblock"> The mandated minimum floating-point capability is:
CL_FP_ROUND_TO_ZERO or CL_FP_ROUND_TO_NEAREST for devices that are
not of type CL_DEVICE_TYPE_CUSTOM.</p></td>
</tr>
@@ -19724,17 +19711,17 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_COMPILER_AVAILABLE</strong></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 CL_FALSE if the implementation does not have a compiler available
- to compile the program source.</p>
-<p class="tableblock"> Is CL_TRUE if the compiler is available.
+ to compile the program source.
+</p><p class="tableblock"> Is CL_TRUE if the compiler is available.
This can be CL_FALSE for the embedded platform profile only.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_LINKER_AVAILABLE</strong></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 CL_FALSE if the implementation does not have a linker available.
- Is CL_TRUE if the linker is available.</p>
-<p class="tableblock"> This can be CL_FALSE for the embedded platform profile only.</p>
-<p class="tableblock"> This must be CL_TRUE if CL_DEVICE_COMPILER_AVAILABLE is CL_TRUE.</p></td>
+ Is CL_TRUE if the linker is available.
+</p><p class="tableblock"> This can be CL_FALSE for the embedded platform profile only.
+</p><p class="tableblock"> This must be CL_TRUE if CL_DEVICE_COMPILER_AVAILABLE is CL_TRUE.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE</strong></p></td>
@@ -20188,7 +20175,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 1.2.4 of OpenCL 2.0C specification)</p>
+is implementation-defined, see section 6.2.4 of OpenCL 2.0 C specification.)</p>
</div>
<div class="paragraph">
<p>An example follows:</p>
@@ -20339,7 +20326,7 @@
<li>
<p>A number of edge cases for math library functions are more rigorously
defined than in C99.
-Please see <em>section 3.5</em> of the OpenCL 2.0 C specification.</p>
+Please see <em>section 7.5</em> of the OpenCL 2.0 C specification.</p>
</li>
</ul>
</div>
@@ -21441,8 +21428,8 @@
</div>
<div id="footer">
<div id="footer-text">
-Version 2.2-7<br>
-Last updated 2018-05-07 12:41:34 BST
+Version 2.2-8<br>
+Last updated 2018-09-24 21:35:08 PDT
</div>
</div>
diff --git a/specs/2.2/html/OpenCL_C.html b/specs/2.2/html/OpenCL_C.html
index 69bd709..953dac7 100644
--- a/specs/2.2/html/OpenCL_C.html
+++ b/specs/2.2/html/OpenCL_C.html
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.6.1">
+<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="Document Revision: 40">
<title>The OpenCL™ C 2.0 Specification</title>
<style>
@@ -841,152 +841,152 @@
<h1>The OpenCL<sup>™</sup> C 2.0 Specification</h1>
<div class="details">
<span id="author" class="author">Document Revision: 40</span><br>
-<span id="revnumber">version 2.2-7,</span>
-<span id="revdate">Sat, 12 May 2018 13:21:28 +0000</span>
-<br><span id="revremark">from git branch: master commit: ab6da3001e9eeafaa36c18888ca7eb4ebb9768af</span>
+<span id="revnumber">version 2.2-8,</span>
+<span id="revdate">Mon, 08 Oct 2018 16:51:37 +0000</span>
+<br><span id="revremark">from git branch: master commit: b3cab22fcff5d8c17869907c983e259ddd7ce788</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">1. The OpenCL C Programming Language</a>
+<li><a href="#the-opencl-c-programming-language">6. The OpenCL C Programming Language</a>
<ul class="sectlevel2">
-<li><a href="#supported-data-types">1.1. Supported Data Types</a>
+<li><a href="#supported-data-types">6.1. Supported Data Types</a>
<ul class="sectlevel3">
-<li><a href="#built-in-scalar-data-types">1.1.1. Built-in Scalar Data Types</a></li>
-<li><a href="#built-in-vector-data-types">1.1.2. Built-in Vector Data Types<sup>4</sup></a></li>
-<li><a href="#other-built-in-data-types">1.1.3. Other Built-in Data Types</a></li>
-<li><a href="#reserved-data-types">1.1.4. Reserved Data Types</a></li>
-<li><a href="#alignment-of-types">1.1.5. Alignment of Types</a></li>
-<li><a href="#vector-literals">1.1.6. Vector Literals</a></li>
-<li><a href="#vector-components">1.1.7. Vector Components</a></li>
-<li><a href="#aliasing-rules">1.1.8. Aliasing Rules</a></li>
-<li><a href="#keywords">1.1.9. Keywords</a></li>
+<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>
</ul>
</li>
-<li><a href="#conversions-and-type-casting">1.2. Conversions and Type Casting</a>
+<li><a href="#conversions-and-type-casting">6.2. Conversions and Type Casting</a>
<ul class="sectlevel3">
-<li><a href="#implicit-conversions">1.2.1. Implicit Conversions</a></li>
-<li><a href="#explicit-casts">1.2.2. Explicit Casts</a></li>
-<li><a href="#explicit-conversions">1.2.3. Explicit Conversions</a></li>
-<li><a href="#reinterpreting-data-as-another-type">1.2.4. Reinterpreting Data As Another Type</a></li>
-<li><a href="#pointer-casting">1.2.5. Pointer Casting</a></li>
-<li><a href="#usual-arithmetic-conversions">1.2.6. Usual Arithmetic Conversions</a></li>
+<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>
</ul>
</li>
-<li><a href="#operators">1.3. Operators</a>
+<li><a href="#operators">6.3. Operators</a>
<ul class="sectlevel3">
-<li><a href="#operators-arithmetic">1.3.1. Arithmetic Operators</a></li>
-<li><a href="#operators-unary">1.3.2. Unary Operators</a></li>
-<li><a href="#operators-prepost">1.3.3. Operators</a></li>
-<li><a href="#operators-relational">1.3.4. Relational Operators</a></li>
-<li><a href="#operators-equality">1.3.5. Equality Operators</a></li>
-<li><a href="#operators-bitwise">1.3.6. Bitwise Operators</a></li>
-<li><a href="#operators-logical">1.3.7. Logical Operators</a></li>
-<li><a href="#operators-logical-unary">1.3.8. Unary Logical Operator</a></li>
-<li><a href="#operators-ternary-selection">1.3.9. Ternary Selection Operator</a></li>
-<li><a href="#operators-shift">1.3.10. Shift Operators</a></li>
-<li><a href="#operators-sizeof">1.3.11. Sizeof Operator</a></li>
-<li><a href="#operators-comma">1.3.12. Comma Operator</a></li>
-<li><a href="#operators-indirection">1.3.13. Indirection Operator</a></li>
-<li><a href="#operators-address">1.3.14. Address Operator</a></li>
-<li><a href="#operators-assignment">1.3.15. Assignment Operator</a></li>
+<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. 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>
</ul>
</li>
-<li><a href="#vector-operations">1.4. Vector Operations</a></li>
-<li><a href="#address-space-qualifiers">1.5. Address Space Qualifiers</a>
+<li><a href="#vector-operations">6.4. Vector Operations</a></li>
+<li><a href="#address-space-qualifiers">6.5. Address Space Qualifiers</a>
<ul class="sectlevel3">
-<li><a href="#global-or-global">1.5.1. <code>__global</code> (or <code>global</code>)</a></li>
-<li><a href="#local-or-local">1.5.2. <code>__local</code> (or <code>local</code>)</a></li>
-<li><a href="#constant-or-constant">1.5.3. <code>__constant</code> (or <code>constant</code>)</a></li>
-<li><a href="#private-or-private">1.5.4. <code>__private</code> (or <code>private</code>)</a></li>
-<li><a href="#the-generic-address-space">1.5.5. The generic address space</a></li>
-<li><a href="#changes-to-C99">1.5.6. Changes to C99</a></li>
+<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>
</ul>
</li>
-<li><a href="#access-qualifiers">1.6. Access Qualifiers</a></li>
-<li><a href="#function-qualifiers">1.7. Function Qualifiers</a>
+<li><a href="#access-qualifiers">6.6. Access Qualifiers</a></li>
+<li><a href="#function-qualifiers">6.7. Function Qualifiers</a>
<ul class="sectlevel3">
-<li><a href="#kernel-or-kernel">1.7.1. <code>__kernel</code> (or <code>kernel</code>)</a></li>
-<li><a href="#optional-attribute-qualifiers">1.7.2. Optional Attribute Qualifiers</a></li>
+<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>
</ul>
</li>
-<li><a href="#storage-class-specifiers">1.8. Storage-Class Specifiers</a></li>
-<li><a href="#restrictions">1.9. Restrictions</a></li>
-<li><a href="#preprocessor-directives-and-macros">1.10. Preprocessor Directives and Macros</a></li>
-<li><a href="#attribute-qualifiers">1.11. Attribute Qualifiers</a>
+<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>
<ul class="sectlevel3">
-<li><a href="#specifying-attributes-of-types">1.11.1. Specifying Attributes of Types</a></li>
-<li><a href="#specifying-attributes-of-functions">1.11.2. Specifying Attributes of Functions</a></li>
-<li><a href="#specifying-attributes-of-variables">1.11.3. Specifying Attributes of Variables</a></li>
-<li><a href="#specifying-attributes-of-blocks-and-control-flow-statements">1.11.4. Specifying Attributes of Blocks and Control-Flow-Statements</a></li>
-<li><a href="#specifying-attribute-for-unrolling-loops">1.11.5. Specifying Attribute For Unrolling Loops</a></li>
-<li><a href="#extending-attribute-qualifiers">1.11.6. Extending Attribute Qualifiers</a></li>
+<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>
</ul>
</li>
-<li><a href="#blocks">1.12. Blocks</a>
+<li><a href="#blocks">6.12. Blocks</a>
<ul class="sectlevel3">
-<li><a href="#declaring-and-using-a-block">1.12.1. Declaring and Using a Block</a></li>
-<li><a href="#declaring-a-block-reference">1.12.2. Declaring a Block Reference</a></li>
-<li><a href="#block-literal-expressions">1.12.3. Block Literal Expressions</a></li>
-<li><a href="#control-flow">1.12.4. Control Flow</a></li>
-<li><a href="#restrictions-1">1.12.5. Restrictions</a></li>
+<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>
</ul>
</li>
-<li><a href="#built-in-functions">1.13. Built-in Functions</a>
+<li><a href="#built-in-functions">6.13. Built-in Functions</a>
<ul class="sectlevel3">
-<li><a href="#work-item-functions">1.13.1. Work-Item Functions</a></li>
-<li><a href="#math-functions">1.13.2. Math Functions</a></li>
-<li><a href="#integer-functions">1.13.3. Integer Functions</a></li>
-<li><a href="#common-functions">1.13.4. Common Functions<sup>33</sup></a></li>
-<li><a href="#geometric-functions">1.13.5. Geometric Functions<sup>34</sup></a></li>
-<li><a href="#relational-functions">1.13.6. Relational Functions</a></li>
-<li><a href="#vector-data-load-and-store-functions">1.13.7. Vector Data Load and Store Functions</a></li>
-<li><a href="#synchronization-functions">1.13.8. Synchronization Functions</a></li>
-<li><a href="#address-space-qualifier-functions">1.13.9. Address Space Qualifier Functions</a></li>
-<li><a href="#async-copies">1.13.10. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</a></li>
-<li><a href="#atomic-functions">1.13.11. Atomic Functions</a></li>
-<li><a href="#miscellaneous-vector-functions">1.13.12. Miscellaneous Vector Functions</a></li>
-<li><a href="#printf">1.13.13. printf</a></li>
-<li><a href="#image-read-and-write-functions">1.13.14. Image Read and Write Functions</a></li>
-<li><a href="#work-group-functions">1.13.15. Work-group Functions</a></li>
-<li><a href="#pipe-functions">1.13.16. Pipe Functions</a></li>
-<li><a href="#enqueuing-kernels">1.13.17. Enqueuing Kernels</a></li>
+<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 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>
</ul>
</li>
</ul>
</li>
-<li><a href="#opencl-numerical-compliance">2. OpenCL Numerical Compliance</a>
+<li><a href="#opencl-numerical-compliance">7. OpenCL Numerical Compliance</a>
<ul class="sectlevel2">
-<li><a href="#rounding-modes-1">2.1. Rounding Modes</a></li>
-<li><a href="#inf-nan-and-denormalized-numbers">2.2. INF, NaN and Denormalized Numbers</a></li>
-<li><a href="#floating-point-exceptions">2.3. Floating-Point Exceptions</a></li>
-<li><a href="#relative-error-as-ulps">2.4. Relative Error as ULPs</a></li>
-<li><a href="#edge-case-behavior">2.5. Edge Case Behavior</a>
+<li><a href="#rounding-modes-1">7.1. Rounding Modes</a></li>
+<li><a href="#inf-nan-and-denormalized-numbers">7.2. INF, NaN and Denormalized Numbers</a></li>
+<li><a href="#floating-point-exceptions">7.3. Floating-Point Exceptions</a></li>
+<li><a href="#relative-error-as-ulps">7.4. Relative Error as ULPs</a></li>
+<li><a href="#edge-case-behavior">7.5. Edge Case Behavior</a>
<ul class="sectlevel3">
-<li><a href="#additional-requirements-beyond-c99-tc2">2.5.1. Additional Requirements Beyond C99 TC2</a></li>
-<li><a href="#changes-to-c99-tc2-behavior">2.5.2. Changes to C99 TC2 Behavior</a></li>
-<li><a href="#edge-case-behavior-in-flush-to-zero-mode">2.5.3. Edge Case Behavior in Flush To Zero Mode</a></li>
+<li><a href="#additional-requirements-beyond-c99-tc2">7.5.1. Additional Requirements Beyond C99 TC2</a></li>
+<li><a href="#changes-to-c99-tc2-behavior">7.5.2. Changes to C99 TC2 Behavior</a></li>
+<li><a href="#edge-case-behavior-in-flush-to-zero-mode">7.5.3. Edge Case Behavior in Flush To Zero Mode</a></li>
</ul>
</li>
</ul>
</li>
-<li><a href="#image-addressing-and-filtering">3. Image Addressing and Filtering</a>
+<li><a href="#image-addressing-and-filtering">8. Image Addressing and Filtering</a>
<ul class="sectlevel2">
-<li><a href="#image-coordinates">3.1. Image Coordinates</a></li>
-<li><a href="#addressing-and-filter-modes">3.2. Addressing and Filter Modes</a></li>
-<li><a href="#conversion-rules">3.3. Conversion Rules</a>
+<li><a href="#image-coordinates">8.1. Image Coordinates</a></li>
+<li><a href="#addressing-and-filter-modes">8.2. Addressing and Filter Modes</a></li>
+<li><a href="#conversion-rules">8.3. Conversion Rules</a>
<ul class="sectlevel3">
-<li><a href="#conversion-rules-for-normalized-integer-channel-data-types">3.3.1. Conversion rules for normalized integer channel data types</a></li>
-<li><a href="#conversion-rules-for-half-precision-floating-point-channel-data-type">3.3.2. Conversion rules for half precision floating-point channel data type</a></li>
-<li><a href="#conversion-rules-for-floating-point-channel-data-type">3.3.3. Conversion rules for floating-point channel data type</a></li>
-<li><a href="#conversion-rules-for-signed-and-unsigned-8-bit-16-bit-and-32-bit-integer-channel-data-types">3.3.4. Conversion rules for signed and unsigned 8-bit, 16-bit and 32-bit integer channel data types</a></li>
-<li><a href="#conversion-rules-for-srgba-and-sbgra-images">3.3.5. Conversion rules for sRGBA and sBGRA images</a></li>
+<li><a href="#conversion-rules-for-normalized-integer-channel-data-types">8.3.1. Conversion rules for normalized integer channel data types</a></li>
+<li><a href="#conversion-rules-for-half-precision-floating-point-channel-data-type">8.3.2. Conversion rules for half precision floating-point channel data type</a></li>
+<li><a href="#conversion-rules-for-floating-point-channel-data-type">8.3.3. Conversion rules for floating-point channel data type</a></li>
+<li><a href="#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</a></li>
+<li><a href="#conversion-rules-for-srgba-and-sbgra-images">8.3.5. Conversion rules for sRGBA and sBGRA images</a></li>
</ul>
</li>
-<li><a href="#selecting-an-image-from-an-image-array">3.4. Selecting an Image from an Image Array</a></li>
+<li><a href="#selecting-an-image-from-an-image-array">8.4. Selecting an Image from an Image Array</a></li>
</ul>
</li>
-<li><a href="#references">4. Normative References</a></li>
+<li><a href="#references">9. Normative References</a></li>
</ul>
</div>
</div>
@@ -1133,7 +1133,6 @@
Yariv Aridor, Intel<br>
Michael Kinsner, Intel<br>
Kevin Stevens, Intel<br>
-Jon Leech, Khronos<br>
Benjamin Bergen, Los Alamos National Laboratory<br>
Roy Ju, Mediatek<br>
Bor-Sung Liang, Mediatek<br>
@@ -1218,8 +1217,25 @@
</div>
</div>
<div class="sect1">
-<h2 id="the-opencl-c-programming-language">1. The OpenCL C Programming Language</h2>
+<h2 id="the-opencl-c-programming-language">6. The OpenCL C Programming Language</h2>
<div class="sectionbody">
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="title">Note</div>
+<div class="paragraph">
+<p>This document starts at chapter 6 to keep the section numbers historically
+consistent with previous versions of the OpenCL and OpenCL C Programming
+Language specifications.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
<div class="paragraph">
<p>This section describes the OpenCL C programming language used to create
kernels that are executed on OpenCL device(s).
@@ -1238,12 +1254,12 @@
Such features are described by reference to that Specification.</p>
</div>
<div class="sect2">
-<h3 id="supported-data-types">1.1. Supported Data Types</h3>
+<h3 id="supported-data-types">6.1. 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">1.1.1. Built-in Scalar Data Types</h4>
+<h4 id="built-in-scalar-data-types">6.1.1. Built-in Scalar Data Types</h4>
<div class="paragraph">
<p>The following table describes the list of built-in scalar data types.</p>
</div>
@@ -1510,7 +1526,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="built-in-vector-data-types">1.1.2. Built-in Vector Data Types<sup>4</sup></h4>
+<h4 id="built-in-vector-data-types">6.1.2. Built-in Vector Data Types<sup>4</sup></h4>
<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.
@@ -1650,7 +1666,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="other-built-in-data-types">1.1.3. Other Built-in Data Types</h4>
+<h4 id="other-built-in-data-types">6.1.3. Other Built-in Data Types</h4>
<div class="paragraph">
<p>The following table describes the list of additional data types supported by
OpenCL.</p>
@@ -1732,11 +1748,11 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_mem_fence_flags</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This is a bitfield and can be 0 or a combination of the following
- values ORed together:</p>
-<p class="tableblock"> <code>CLK_GLOBAL_MEM_FENCE</code><br>
+ values ORed together:
+</p><p class="tableblock"> <code>CLK_GLOBAL_MEM_FENCE</code><br>
<code>CLK_LOCAL_MEM_FENCE</code><br>
- <code>CLK_IMAGE_MEM_FENCE</code></p>
-<p class="tableblock"> These flags are described in detail in the
+ <code>CLK_IMAGE_MEM_FENCE</code>
+</p><p class="tableblock"> These flags are described in detail in the
<a href="#synchronization-functions">synchronization functions</a> section.</p></td>
</tr>
</tbody>
@@ -1796,7 +1812,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="reserved-data-types">1.1.4. Reserved Data Types</h4>
+<h4 id="reserved-data-types">6.1.4. Reserved Data Types</h4>
<div class="paragraph">
<p>The data type names described in the following table are reserved and cannot
be used by applications as type names.
@@ -1888,7 +1904,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="alignment-of-types">1.1.5. Alignment of Types</h4>
+<h4 id="alignment-of-types">6.1.5. Alignment of Types</h4>
<div class="paragraph">
<p>A data item declared to be a data type in memory is always aligned to the
size of the data type in bytes.
@@ -1926,7 +1942,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="vector-literals">1.1.6. Vector Literals</h4>
+<h4 id="vector-literals">6.1.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.
@@ -1984,7 +2000,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="vector-components">1.1.7. Vector Components</h4>
+<h4 id="vector-components">6.1.7. Vector Components</h4>
<div class="paragraph">
<p>The components of vector data types with 1 …​ 4 components can be addressed
as <code><vector_data_type>.xyzw</code>.
@@ -2251,7 +2267,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="aliasing-rules">1.1.8. Aliasing Rules</h4>
+<h4 id="aliasing-rules">6.1.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>.
@@ -2265,7 +2281,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="keywords">1.1.9. Keywords</h4>
+<h4 id="keywords">6.1.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>
@@ -2299,9 +2315,9 @@
</div>
</div>
<div class="sect2">
-<h3 id="conversions-and-type-casting">1.2. Conversions and Type Casting</h3>
+<h3 id="conversions-and-type-casting">6.2. Conversions and Type Casting</h3>
<div class="sect3">
-<h4 id="implicit-conversions">1.2.1. Implicit Conversions</h4>
+<h4 id="implicit-conversions">6.2.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.
@@ -2329,7 +2345,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="explicit-casts">1.2.2. Explicit Casts</h4>
+<h4 id="explicit-casts">6.2.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
@@ -2406,7 +2422,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="explicit-conversions">1.2.3. Explicit Conversions</h4>
+<h4 id="explicit-conversions">6.2.3. Explicit Conversions</h4>
<div class="paragraph">
<p>Explicit conversions may be performed using the</p>
</div>
@@ -2630,7 +2646,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="reinterpreting-data-as-another-type">1.2.4. Reinterpreting Data As Another Type</h4>
+<h4 id="reinterpreting-data-as-another-type">6.2.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.
@@ -2788,7 +2804,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="pointer-casting">1.2.5. Pointer Casting</h4>
+<h4 id="pointer-casting">6.2.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
@@ -2799,7 +2815,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="usual-arithmetic-conversions">1.2.6. Usual Arithmetic Conversions</h4>
+<h4 id="usual-arithmetic-conversions">6.2.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.
@@ -2894,9 +2910,9 @@
</div>
</div>
<div class="sect2">
-<h3 id="operators">1.3. Operators</h3>
+<h3 id="operators">6.3. Operators</h3>
<div class="sect3">
-<h4 id="operators-arithmetic">1.3.1. Arithmetic Operators</h4>
+<h4 id="operators-arithmetic">6.3.1. Arithmetic Operators</h4>
<div class="paragraph">
<p>The arithmetic operators add (<strong>+</strong>), subtract (<strong>-</strong>), multiply (<strong>*</strong>) and
divide (<strong>/</strong>) operate on built-in integer and floating-point scalar, and
@@ -2942,14 +2958,14 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-unary">1.3.2. Unary Operators</h4>
+<h4 id="operators-unary">6.3.2. Unary Operators</h4>
<div class="paragraph">
<p>The arithmetic unary operators (<strong>+</strong> and <strong>-</strong>) operate on built-in scalar and
vector types.</p>
</div>
</div>
<div class="sect3">
-<h4 id="operators-prepost">1.3.3. Operators</h4>
+<h4 id="operators-prepost">6.3.3. Operators</h4>
<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
@@ -2979,7 +2995,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-relational">1.3.4. Relational Operators</h4>
+<h4 id="operators-relational">6.3.4. Relational Operators</h4>
<div class="paragraph">
<p>The relational operators<sup>16</sup> greater than (<strong>></strong>), less than (<strong><</strong>), greater
than or equal (<strong>>=</strong>), and less than or equal (<strong><=</strong>) operate on scalar and
@@ -3036,7 +3052,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-equality">1.3.5. Equality Operators</h4>
+<h4 id="operators-equality">6.3.5. Equality Operators</h4>
<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.
@@ -3097,7 +3113,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-bitwise">1.3.6. Bitwise Operators</h4>
+<h4 id="operators-bitwise">6.3.6. Bitwise Operators</h4>
<div class="paragraph">
<p>The bitwise operators and (<strong>&</strong>), or (<strong>|</strong>), exclusive or (<strong>^</strong>), and not
(<strong>~</strong>) operate on all scalar and vector built-in types except the built-in
@@ -3112,7 +3128,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-logical">1.3.7. Logical Operators</h4>
+<h4 id="operators-logical">6.3.7. Logical Operators</h4>
<div class="paragraph">
<p>The logical operators and (<strong>&&</strong>) and or (<strong>||</strong>) operate on all scalar and
vector built-in types.
@@ -3151,7 +3167,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-logical-unary">1.3.8. Unary Logical Operator</h4>
+<h4 id="operators-logical-unary">6.3.8. Unary Logical Operator</h4>
<div class="paragraph">
<p>The logical unary operator not (<strong>!</strong>) operates on all scalar and vector
built-in types.
@@ -3178,7 +3194,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-ternary-selection">1.3.9. Ternary Selection Operator</h4>
+<h4 id="operators-ternary-selection">6.3.9. Ternary Selection Operator</h4>
<div class="paragraph">
<p>The ternary selection operator (<strong>?:</strong>) operates on three expressions (<em>exp1</em>
<strong>?</strong> <em>exp2</em> <strong>:</strong> <em>exp3</em>).
@@ -3199,7 +3215,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-shift">1.3.10. Shift Operators</h4>
+<h4 id="operators-shift">6.3.10. Shift Operators</h4>
<div class="paragraph">
<p>The operators right-shift (<strong>>></strong>), left-shift (<strong><<</strong>) operate on all scalar
and vector built-in types except the built-in scalar and vector <code>float</code>
@@ -3234,7 +3250,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-sizeof">1.3.11. Sizeof Operator</h4>
+<h4 id="operators-sizeof">6.3.11. Sizeof Operator</h4>
<div class="paragraph">
<p>The <code>sizeof</code> operator yields the size (in bytes) of its operand, including
any <a href="#alignment-of-types">padding bytes needed for alignment</a>, which may be
@@ -3284,7 +3300,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-comma">1.3.12. Comma Operator</h4>
+<h4 id="operators-comma">6.3.12. Comma Operator</h4>
<div class="paragraph">
<p>The comma (<strong>,</strong>) operator operates on expressions by returning the type and
value of the right-most expression in a comma separated list of expressions.
@@ -3292,7 +3308,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-indirection">1.3.13. Indirection Operator</h4>
+<h4 id="operators-indirection">6.3.13. Indirection Operator</h4>
<div class="paragraph">
<p>The unary (<strong>*</strong>) operator denotes indirection.
If the operand points to an object, the result is an l-value designating the
@@ -3312,7 +3328,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-address">1.3.14. Address Operator</h4>
+<h4 id="operators-address">6.3.14. Address Operator</h4>
<div class="paragraph">
<p>The unary (<strong>&</strong>) operator returns the address of its operand.
If the operand has type “<em>type</em>”, the result has type “pointer to
@@ -3336,7 +3352,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="operators-assignment">1.3.15. Assignment Operator</h4>
+<h4 id="operators-assignment">6.3.15. Assignment Operator</h4>
<div class="paragraph">
<p>Assignments of values to variable names are done with the assignment
operator (<strong>=</strong>), like</p>
@@ -3428,7 +3444,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="vector-operations">1.4. Vector Operations</h3>
+<h3 id="vector-operations">6.4. Vector Operations</h3>
<div class="paragraph">
<p>Vector operations are component-wise.
Usually, when an operator operates on a vector, it is operating
@@ -3483,7 +3499,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="address-space-qualifiers">1.5. Address Space Qualifiers</h3>
+<h3 id="address-space-qualifiers">6.5. Address Space Qualifiers</h3>
<div class="paragraph">
<p>OpenCL implements the following disjoint named address spaces: <code>__global</code>,
<code>__local</code>, <code>__constant</code> and <code>__private</code>.
@@ -3584,7 +3600,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="global-or-global">1.5.1. <code>__global</code> (or <code>global</code>)</h4>
+<h4 id="global-or-global">6.5.1. <code>__global</code> (or <code>global</code>)</h4>
<div class="paragraph">
<p>The <code>__global</code> or <code>global</code> address space name is used to refer to memory
objects (buffer or image objects) allocated from the <code>global</code> memory pool.</p>
@@ -3687,7 +3703,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="local-or-local">1.5.2. <code>__local</code> (or <code>local</code>)</h4>
+<h4 id="local-or-local">6.5.2. <code>__local</code> (or <code>local</code>)</h4>
<div class="paragraph">
<p>The <code>__local</code> or <code>local</code> address space name is used to describe variables
that need to be allocated in local memory and are shared by all work-items
@@ -3753,7 +3769,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="constant-or-constant">1.5.3. <code>__constant</code> (or <code>constant</code>)</h4>
+<h4 id="constant-or-constant">6.5.3. <code>__constant</code> (or <code>constant</code>)</h4>
<div class="paragraph">
<p>The <code>__constant</code> or <code>constant</code> address space name is used to describe
variables allocated in <code>global</code> memory and which are accessed inside a
@@ -3804,7 +3820,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="private-or-private">1.5.4. <code>__private</code> (or <code>private</code>)</h4>
+<h4 id="private-or-private">6.5.4. <code>__private</code> (or <code>private</code>)</h4>
<div class="paragraph">
<p>Variables inside a kernel function not declared with an address space
qualifier, all variables inside non-kernel functions, and all function
@@ -3814,7 +3830,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="the-generic-address-space">1.5.5. The generic address space</h4>
+<h4 id="the-generic-address-space">6.5.5. The generic address space</h4>
<div class="paragraph">
<p>The following rules apply when using pointers that point to the generic
address space:</p>
@@ -3931,7 +3947,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="changes-to-C99">1.5.6. Changes to C99</h4>
+<h4 id="changes-to-C99">6.5.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
@@ -4282,7 +4298,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="access-qualifiers">1.6. Access Qualifiers</h3>
+<h3 id="access-qualifiers">6.6. Access Qualifiers</h3>
<div class="paragraph">
<p>Image objects specified as arguments to a kernel can be declared to be
read-only, write-only or read-write.
@@ -4333,9 +4349,9 @@
</div>
</div>
<div class="sect2">
-<h3 id="function-qualifiers">1.7. Function Qualifiers</h3>
+<h3 id="function-qualifiers">6.7. Function Qualifiers</h3>
<div class="sect3">
-<h4 id="kernel-or-kernel">1.7.1. <code>__kernel</code> (or <code>kernel</code>)</h4>
+<h4 id="kernel-or-kernel">6.7.1. <code>__kernel</code> (or <code>kernel</code>)</h4>
<div class="paragraph">
<p>The <code>__kernel</code> (or <code>kernel</code>) qualifier declares a function to be a kernel
that can be executed by an application on an OpenCL device(s).
@@ -4378,7 +4394,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="optional-attribute-qualifiers">1.7.2. Optional Attribute Qualifiers</h4>
+<h4 id="optional-attribute-qualifiers">6.7.2. Optional Attribute Qualifiers</h4>
<div class="paragraph">
<p>The <code>__kernel</code> qualifier can be used with the keyword <em>attribute</em> to
declare additional information about the kernel function as described below.</p>
@@ -4511,7 +4527,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="storage-class-specifiers">1.8. Storage-Class Specifiers</h3>
+<h3 id="storage-class-specifiers">6.8. Storage-Class Specifiers</h3>
<div class="paragraph">
<p>The <code>typedef</code>, <code>extern</code> and <code>static</code> storage-class specifiers are supported.
The <code>auto</code> and <code>register</code> storage-class specifiers are not supported.</p>
@@ -4557,7 +4573,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="restrictions">1.9. Restrictions</h3>
+<h3 id="restrictions">6.9. Restrictions</h3>
<div class="admonitionblock note">
<table>
<tr>
@@ -4652,6 +4668,11 @@
enqueue_kernel are not supported.</p>
</li>
<li>
+<p>If a list of parameters in a function declaration is empty, the function
+takes no arguments. This is due to the above restriction on variadic
+prototypes.</p>
+</li>
+<li>
<p>Unless defined in the OpenCL specification, the library functions,
macros, types, and constants defined in the C99 standard headers
<code>assert.h</code>, <code>ctype.h</code>, <code>complex.h</code>, <code>errno.h</code>, <code>fenv.h</code>, <code>float.h</code>,
@@ -4776,7 +4797,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="preprocessor-directives-and-macros">1.10. Preprocessor Directives and Macros</h3>
+<h3 id="preprocessor-directives-and-macros">6.10. Preprocessor Directives and Macros</h3>
<div class="paragraph">
<p>The preprocessing directives defined by the C99 specification are supported.</p>
</div>
@@ -4916,7 +4937,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="attribute-qualifiers">1.11. Attribute Qualifiers</h3>
+<h3 id="attribute-qualifiers">6.11. 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>
@@ -4996,7 +5017,7 @@
in <em>section 11</em> - <strong>References</strong>] for the details.</p>
</div>
<div class="sect3">
-<h4 id="specifying-attributes-of-types">1.11.1. Specifying Attributes of Types</h4>
+<h4 id="specifying-attributes-of-types">6.11.1. Specifying Attributes of Types</h4>
<div class="paragraph">
<p>The keyword <code>__attribute__</code> allows you to specify special attributes of
enum, struct and union types when you define such types.
@@ -5132,14 +5153,14 @@
</div>
</div>
<div class="sect3">
-<h4 id="specifying-attributes-of-functions">1.11.2. Specifying Attributes of Functions</h4>
+<h4 id="specifying-attributes-of-functions">6.11.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">1.11.3. Specifying Attributes of Variables</h4>
+<h4 id="specifying-attributes-of-variables">6.11.3. Specifying Attributes of Variables</h4>
<div class="paragraph">
<p>The keyword <code>__attribute__</code> allows you to specify special attributes of
variables or structure fields.
@@ -5302,7 +5323,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="specifying-attributes-of-blocks-and-control-flow-statements">1.11.4. Specifying Attributes of Blocks and Control-Flow-Statements</h4>
+<h4 id="specifying-attributes-of-blocks-and-control-flow-statements">6.11.4. Specifying Attributes of Blocks and Control-Flow-Statements</h4>
<div class="paragraph">
<p>For basic blocks and control-flow-statements the attribute is placed before
the structure in question, for example:</p>
@@ -5324,7 +5345,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="specifying-attribute-for-unrolling-loops">1.11.5. Specifying Attribute For Unrolling Loops</h4>
+<h4 id="specifying-attribute-for-unrolling-loops">6.11.5. Specifying Attribute For Unrolling Loops</h4>
<div class="paragraph">
<p>The <code>__attribute__((opencl_unroll_hint))</code> and
<code>__attribute__((opencl_unroll_hint(n)))</code> attribute qualifiers can be used
@@ -5443,7 +5464,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="extending-attribute-qualifiers">1.11.6. Extending Attribute Qualifiers</h4>
+<h4 id="extending-attribute-qualifiers">6.11.6. Extending Attribute Qualifiers</h4>
<div class="paragraph">
<p>The attribute syntax can be extended for standard language extensions and
vendor specific extensions.
@@ -5465,7 +5486,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="blocks">1.12. Blocks</h3>
+<h3 id="blocks">6.12. Blocks</h3>
<div class="paragraph">
<p>OpenCL C 2.0 adds support for the clang block syntax<sup>26</sup>.
Like function types, the Block type is a pair consisting of a result value
@@ -5483,7 +5504,7 @@
tasks as a block.</p>
</div>
<div class="sect3">
-<h4 id="declaring-and-using-a-block">1.12.1. Declaring and Using a Block</h4>
+<h4 id="declaring-and-using-a-block">6.12.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.
@@ -5518,7 +5539,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="declaring-a-block-reference">1.12.2. Declaring a Block Reference</h4>
+<h4 id="declaring-a-block-reference">6.12.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
@@ -5557,7 +5578,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="block-literal-expressions">1.12.3. Block Literal Expressions</h4>
+<h4 id="block-literal-expressions">6.12.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>
@@ -5666,7 +5687,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="control-flow">1.12.4. Control Flow</h4>
+<h4 id="control-flow">6.12.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
@@ -5674,7 +5695,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="restrictions-1">1.12.5. Restrictions</h4>
+<h4 id="restrictions-1">6.12.5. Restrictions</h4>
<div class="paragraph">
<p>The following Blocks features are currently not supported in OpenCL C.</p>
</div>
@@ -5871,7 +5892,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="built-in-functions">1.13. Built-in Functions</h3>
+<h3 id="built-in-functions">6.13. 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.
@@ -5894,7 +5915,7 @@
that operate on mixed scalar and vector types, however.</p>
</div>
<div class="sect3">
-<h4 id="work-item-functions">1.13.1. Work-Item Functions</h4>
+<h4 id="work-item-functions">6.13.1. Work-Item Functions</h4>
<div class="paragraph">
<p>The following table describes the list of built-in work-item functions that
can be used to query the number of dimensions, the global and local work
@@ -5923,8 +5944,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of global work-items specified for dimension
identified by <em>dimindx</em>.
This value is given by the <em>global_work_size</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.
+ <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 of <em>dimindx</em>, <strong>get_global_size</strong>() returns 1.</p></td>
</tr>
<tr>
@@ -5932,8 +5953,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the unique global work-item ID value for dimension identified
by <em>dimindx</em>.
The global work-item ID specifies the work-item ID based on the number
- of global work-items specified to execute the kernel.</p>
-<p class="tableblock"> Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
+ of global work-items specified to execute the kernel.
+</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_global_id</strong>() returns 0.</p></td>
</tr>
<tr>
@@ -5946,16 +5967,16 @@
<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>
-<p class="tableblock"> Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
+ 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>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_enqueued_local_size</strong>(
uint <em>dimindx</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the same value as that returned by <strong>get_local_size</strong>(<em>dimindx</em>)
- if the kernel is executed with a uniform work-group size.</p>
-<p class="tableblock"> If the kernel is executed with a non-uniform work-group size, returns
+ if the kernel is executed with a uniform work-group size.
+</p><p class="tableblock"> If the kernel is executed with a non-uniform work-group size, returns
the number of local work-items in each of the work-groups that make up
the uniform region of the global range in the dimension identified by
<em>dimindx</em>.
@@ -5964,59 +5985,59 @@
<em>local_work_size</em>[<em>dimindx</em>].
If <em>local_work_size</em> is <code>NULL</code>, this value will match the local size
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.
+ 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>
</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>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the unique local work-item ID, i.e. a work-item within a
- specific work-group for dimension identified by <em>dimindx</em>.</p>
-<p class="tableblock"> Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
+ specific work-group for dimension identified by <em>dimindx</em>.
+</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_id</strong>() returns 0.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_num_groups</strong>(uint <em>dimindx</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of work-groups that will execute a kernel for
- dimension identified by <em>dimindx</em>.</p>
-<p class="tableblock"> Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
+ dimension identified by <em>dimindx</em>.
+</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_num_groups</strong>() returns 1.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_group_id</strong>(uint <em>dimindx</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>get_group_id</strong> returns the work-group ID which is a number from 0 ..
- <strong>get_num_groups</strong>(<em>dimindx</em>) - 1.</p>
-<p class="tableblock"> Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
+ <strong>get_num_groups</strong>(<em>dimindx</em>) - 1.
+</p><p class="tableblock"> Valid values of <em>dimindx</em> are 0 to <strong>get_work_dim</strong>() - 1.
For other values, <strong>get_group_id</strong>() returns 0.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_global_offset</strong>(uint <em>dimindx</em>)</p></td>
<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.
+ <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>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_global_linear_id</strong>()</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the work-items 1-dimensional global ID.</p>
-<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) -
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the work-items 1-dimensional global ID.
+</p><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>(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_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>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">size_t <strong>get_local_linear_id</strong>()</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the work-items 1-dimensional local ID.</p>
-<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"> 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)) +
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the work-items 1-dimensional local ID.
+</p><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"> 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>
</tr>
</tbody>
@@ -6027,7 +6048,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="math-functions">1.13.2. Math Functions</h4>
+<h4 id="math-functions">6.13.2. Math Functions</h4>
<div class="paragraph">
<p>The built-in math functions are categorized into the following:</p>
</div>
@@ -7052,7 +7073,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="integer-functions">1.13.3. Integer Functions</h4>
+<h4 id="integer-functions">6.13.3. Integer Functions</h4>
<div class="paragraph">
<p>The following table describes the built-in integer functions that take
scalar or vector arguments.
@@ -7348,7 +7369,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="common-functions">1.13.4. Common Functions<sup>33</sup></h4>
+<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>
@@ -7412,9 +7433,9 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>mix</strong>(gentype <em>x</em>, gentype <em>y</em>, gentype <em>a</em>)<br>
gentypef <strong>mix</strong>(gentypef <em>x</em>, gentypef <em>y</em>, float <em>a</em>)<br>
gentyped <strong>mix</strong>(gentyped <em>x</em>, gentyped <em>y</em>, double <em>a</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the linear blend of <em>x</em> & <em>y</em> implemented as:</p>
-<p class="tableblock"> <em>x</em> + (<em>y</em> - <em>x</em>) * <em>a</em></p>
-<p class="tableblock"> <em>a</em> must be a value in the range [0.0, 1.0].
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the linear blend of <em>x</em> & <em>y</em> implemented as:
+</p><p class="tableblock"> <em>x</em> + (<em>y</em> - <em>x</em>) * <em>a</em>
+</p><p class="tableblock"> <em>a</em> must be a value in the range [0.0, 1.0].
If <em>a</em> is not in the range [0.0, 1.0], the return values are
undefined.</p></td>
</tr>
@@ -7468,7 +7489,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="geometric-functions">1.13.5. Geometric Functions<sup>34</sup></h4>
+<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>
@@ -7533,8 +7554,8 @@
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">float <strong>fast_length</strong>(float<em>n</em> <em>p</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the length of vector <em>p</em> computed as:</p>
-<p class="tableblock"> <strong>half_sqrt</strong>(<em>p.x</em><sup>2</sup> + <em>p.y</em><sup>2</sup> + …​)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the length of vector <em>p</em> computed as:
+</p><p class="tableblock"> <strong>half_sqrt</strong>(<em>p.x</em><sup>2</sup> + <em>p.y</em><sup>2</sup> + …​)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">float<em>n</em> <strong>fast_normalize</strong>(float<em>n</em> <em>p</em>)</p></td>
@@ -7586,7 +7607,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="relational-functions">1.13.6. Relational Functions</h4>
+<h4 id="relational-functions">6.13.6. Relational Functions</h4>
<div class="paragraph">
<p>The <a href="#operators-relational">relational</a> and <a href="#operators-equality">equality</a>
operators (<strong><</strong>, <strong><=</strong>, <strong>></strong>, <strong>>=</strong>, <strong>!=</strong>, <strong>==</strong>) can be used with scalar and
@@ -7782,10 +7803,10 @@
<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>)
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
+<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>
</tr>
</tbody>
@@ -7797,7 +7818,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="vector-data-load-and-store-functions">1.13.7. Vector Data Load and Store Functions</h4>
+<h4 id="vector-data-load-and-store-functions">6.13.7. Vector Data Load and Store Functions</h4>
<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.
@@ -7881,8 +7902,8 @@
using the appropriate rounding mode.
The <code>half</code> value is then written to the address computed as <code>(<em>p</em>
+ <em>offset</em>)</code>.
- The computed address must be 16-bit aligned.</p>
-<p class="tableblock"> <strong>vstore_half</strong> uses the default rounding mode.
+ The computed address must be 16-bit aligned.
+</p><p class="tableblock"> <strong>vstore_half</strong> uses the default rounding mode.
The default rounding mode is round to nearest even.</p></td>
</tr>
<tr>
@@ -7896,8 +7917,8 @@
<code><em>n</em> * sizeof(half)</code> bytes from the <code>half<em>n</em></code> value are then written to
the address computed as <code>(<em>p</em>
+ (<em>offset</em> * <em>n</em>))</code>.
- The computed address must be 16-bit aligned.</p>
-<p class="tableblock"> <strong>vstore_half<em>n</em></strong> uses the default rounding mode.
+ The computed address must be 16-bit aligned.
+</p><p class="tableblock"> <strong>vstore_half<em>n</em></strong> uses the default rounding mode.
The default rounding mode is round to nearest even.</p></td>
</tr>
<tr>
@@ -7910,8 +7931,8 @@
value using the appropriate rounding mode.
The <code>half</code> value is then written to the address computed as <code>(<em>p</em>
+ <em>offset</em>)</code>.
- The computed address must be 16-bit aligned.</p>
-<p class="tableblock"> <strong>vstore_half</strong> uses the default rounding mode.
+ The computed address must be 16-bit aligned.
+</p><p class="tableblock"> <strong>vstore_half</strong> uses the default rounding mode.
The default rounding mode is round to nearest even.</p></td>
</tr>
<tr>
@@ -7924,8 +7945,8 @@
value using the appropriate rounding mode.
<code><em>n</em> * sizeof(half)</code> bytes from the <code>half<em>n</em></code> value are then written to
the address computed as <code>(<em>p</em> + (<em>offset</em> * <em>n</em>))</code>.
- The computed address must be 16-bit aligned.</p>
-<p class="tableblock"> <strong>vstore_half<em>n</em></strong> uses the default rounding mode.
+ The computed address must be 16-bit aligned.
+</p><p class="tableblock"> <strong>vstore_half<em>n</em></strong> uses the default rounding mode.
The default rounding mode is round to nearest even.</p></td>
</tr>
<tr>
@@ -7940,8 +7961,8 @@
The data read is interpreted as a <code>half<em>n</em></code> value.
The <code>half<em>n</em></code> value read is converted to a <code>float<em>n</em></code> value and
the <code>float<em>n</em></code> value is returned.
- The computed address must be aligned to <code>sizeof(half<em>n</em>)</code> bytes.</p>
-<p class="tableblock"> For n = 3, <strong>vloada_half3</strong> reads a <code>half3</code> from the address computed as
+ The computed address must be aligned to <code>sizeof(half<em>n</em>)</code> bytes.
+</p><p class="tableblock"> For n = 3, <strong>vloada_half3</strong> reads a <code>half3</code> from the address computed as
<code>(<em>p</em> + (<em>offset * 4</em>))</code> and returns a <code>float3</code>.
The computed address must be aligned to <code>sizeof(half)</code> * 4 bytes.</p></td>
</tr>
@@ -7952,14 +7973,14 @@
void <strong>vstorea_half<em>n_rtp</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_rtn</em></strong>(float<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The <code>float<em>n</em></code> value given by <em>data</em> is converted to a <code>half<em>n</em></code>
- value using the appropriate rounding mode.</p>
-<p class="tableblock"> For n = 2, 4, 8 and 16, the <code>half<em>n</em></code> value is written to the
+ value using the appropriate rounding mode.
+</p><p class="tableblock"> For n = 2, 4, 8 and 16, the <code>half<em>n</em></code> value is written to the
address computed as <code>(<em>p</em> + (<em>offset</em> * <em>n</em>))</code>.
- The computed address must be aligned to <code>sizeof(half<em>n</em>)</code> bytes.</p>
-<p class="tableblock"> For n = 3, the <code>half3</code> value is written
+ The computed address must be aligned to <code>sizeof(half<em>n</em>)</code> bytes.
+</p><p class="tableblock"> For n = 3, the <code>half3</code> value is written
to the address computed as <code>(<em>p</em> + (<em>offset</em> * 4))</code>.
- The computed address must be aligned to <code>sizeof(half) * 4</code> bytes.</p>
-<p class="tableblock"> <strong>vstorea_half<em>n</em></strong> uses the default rounding mode.
+ The computed address must be aligned to <code>sizeof(half) * 4</code> bytes.
+</p><p class="tableblock"> <strong>vstorea_half<em>n</em></strong> uses the default rounding mode.
The default rounding mode is round to nearest even.</p></td>
</tr>
<tr>
@@ -7969,14 +7990,14 @@
void <strong>vstorea_half<em>n_rtp</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_rtn</em></strong>(double<em>n</em> <em>data</em>, size_t <em>offset</em>, half *<em>p</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The <code>double<em>n</em></code> value is converted to a <code>half<em>n</em></code> value using the
- appropriate rounding mode.</p>
-<p class="tableblock"> For n = 2, 4, 8 or 16, the <code>half<em>n</em></code> value is written to the address
+ appropriate rounding mode.
+</p><p class="tableblock"> For n = 2, 4, 8 or 16, the <code>half<em>n</em></code> value is written to the address
computed as <code>(<em>p</em> + (<em>offset</em> * <em>n</em>))</code>.
- The computed address must be aligned to <code>sizeof(half<em>n</em>)</code> bytes.</p>
-<p class="tableblock"> For n = 3, the <code>half3</code> value is written
+ The computed address must be aligned to <code>sizeof(half<em>n</em>)</code> bytes.
+</p><p class="tableblock"> For n = 3, the <code>half3</code> value is written
to the address computed as <code>(<em>p</em> + (<em>offset</em> * 4))</code>.
- The computed address must be aligned to <code>sizeof(half) * 4</code> bytes.</p>
-<p class="tableblock"> <strong>vstorea_half<em>n</em></strong> uses the default rounding mode.
+ The computed address must be aligned to <code>sizeof(half) * 4</code> bytes.
+</p><p class="tableblock"> <strong>vstorea_half<em>n</em></strong> uses the default rounding mode.
The default rounding mode is round to nearest even.</p></td>
</tr>
</tbody>
@@ -8021,7 +8042,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="synchronization-functions">1.13.8. Synchronization Functions</h4>
+<h4 id="synchronization-functions">6.13.8. Synchronization Functions</h4>
<div class="paragraph">
<p>The OpenCL C programming language implements the following synchronization
functions.</p>
@@ -8049,22 +8070,22 @@
This function must be encountered by all work-items in a work-group
executing the kernel.
These rules apply to ND-ranges implemented with uniform and
- non-uniform work-groups.</p>
-<p class="tableblock"> If <strong>work_group_barrier</strong> is inside a conditional statement, then all
+ non-uniform work-groups.
+</p><p class="tableblock"> If <strong>work_group_barrier</strong> is inside a conditional statement, then all
work-items must enter the conditional if any work-item enters the
- conditional statement and executes the <strong>work_group_barrier</strong>.</p>
-<p class="tableblock"> If <strong>work_group_barrier</strong> is inside a loop, all work-items must execute
+ conditional statement and executes the <strong>work_group_barrier</strong>.
+</p><p class="tableblock"> If <strong>work_group_barrier</strong> is inside a loop, all work-items must execute
the <strong>work_group_barrier</strong> for each iteration of the loop before any are
- allowed to continue execution beyond the <strong>work_group_barrier</strong>.</p>
-<p class="tableblock"> The <strong>work_group_barrier</strong> function also supports a variant that
+ allowed to continue execution beyond the <strong>work_group_barrier</strong>.
+</p><p class="tableblock"> The <strong>work_group_barrier</strong> function also supports a variant that
specifies the memory scope.
For the <strong>work_group_barrier</strong> variant that does not take a memory
- scope, the <em>scope</em> is <code>memory_scope_work_group</code>.</p>
-<p class="tableblock"> The <em>scope</em> argument specifies whether the memory accesses of
+ scope, the <em>scope</em> is <code>memory_scope_work_group</code>.
+</p><p class="tableblock"> The <em>scope</em> argument specifies whether the memory accesses of
work-items in the work-group to memory address space(s) identified by
<em>flags</em> become visible to all work-items in the work-group, the device
- or all SVM devices.</p>
-<p class="tableblock"> The <strong>work_group_barrier</strong> function can also be used to specify which
+ or all SVM devices.
+</p><p class="tableblock"> The <strong>work_group_barrier</strong> function can also be used to specify which
memory operations, i.e. to <code>global</code> memory, <code>local</code> memory or images
become visible to the appropriate memory scope identified by <em>scope</em>.
The <em>flags</em> argument specifies the memory address spaces.
@@ -8073,20 +8094,20 @@
When these flags are OR’ed together the <strong>work_group_barrier</strong> acts as a
combined barrier for all address spaces specified by the flags
ordering memory accesses both within and across the specified address
- spaces.</p>
-<p class="tableblock"> <code>CLK_LOCAL_MEM_FENCE</code> - The <strong>work_group_barrier</strong> function will ensure
+ spaces.
+</p><p class="tableblock"> <code>CLK_LOCAL_MEM_FENCE</code> - The <strong>work_group_barrier</strong> function will ensure
that all local memory accesses become visible to all work-items in the
work-group.
Note that the value of <em>scope</em> is ignored as the memory scope is
- always <code>memory_scope_work_group</code>.</p>
-<p class="tableblock"> <code>CLK_GLOBAL_MEM_FENCE</code> - The <strong>work_group_barrier</strong> function ensure that
+ always <code>memory_scope_work_group</code>.
+</p><p class="tableblock"> <code>CLK_GLOBAL_MEM_FENCE</code> - The <strong>work_group_barrier</strong> function ensure that
all <code>global</code> memory accesses become visible to the appropriate scope
- as given by <em>scope</em>.</p>
-<p class="tableblock"> <code>CLK_IMAGE_MEM_FENCE</code> - The <strong>work_group_barrier</strong> function will ensure
+ as given by <em>scope</em>.
+</p><p class="tableblock"> <code>CLK_IMAGE_MEM_FENCE</code> - The <strong>work_group_barrier</strong> function will ensure
that all image memory accesses become visible to the appropriate scope
as given by <em>scope</em>.
- The value of <em>scope</em> must be <code>memory_scope_work_group</code>.</p>
-<p class="tableblock"> The values of <em>flags</em> and <em>scope</em> must be the same for all work-items
+ The value of <em>scope</em> must be <code>memory_scope_work_group</code>.
+</p><p class="tableblock"> The values of <em>flags</em> and <em>scope</em> must be the same for all work-items
in the work-group.</p></td>
</tr>
</tbody>
@@ -8100,7 +8121,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="address-space-qualifier-functions">1.13.9. Address Space Qualifier Functions</h4>
+<h4 id="address-space-qualifier-functions">6.13.9. Address Space Qualifier Functions</h4>
<div class="paragraph">
<p>The OpenCL C programming language implements the following address space
qualifier functions.
@@ -8148,7 +8169,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="async-copies">1.13.10. Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch</h4>
+<h4 id="async-copies">6.13.10. 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 <code>global</code> and local memory and a prefetch
@@ -8190,17 +8211,17 @@
work-group executing the kernel with the same argument values;
otherwise the results are undefined.
This rule applies to ND-ranges implemented with uniform and
- non-uniform work-groups.</p>
-<p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to
+ non-uniform work-groups.
+</p><p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to
wait for the async copy to finish.
The <em>event</em> argument can also be used to associate the
<strong>async_work_group_copy</strong> with a previous async copy allowing an event
to be shared by multiple async copies; otherwise <em>event</em> should be
- zero.</p>
-<p class="tableblock"> 0 can be implicitly and explicitly cast to <code>event_t</code> type.</p>
-<p class="tableblock"> If <em>event</em> argument is non-zero, the event object supplied in <em>event</em>
- argument will be returned.</p>
-<p class="tableblock"> This function does not perform any implicit synchronization of source
+ zero.
+</p><p class="tableblock"> 0 can be implicitly and explicitly cast to <code>event_t</code> type.
+</p><p class="tableblock"> If <em>event</em> argument is non-zero, the event object supplied in <em>event</em>
+ argument will be returned.
+</p><p class="tableblock"> This function does not perform any implicit synchronization of source
data such as using a <strong>barrier</strong> before performing the copy.</p></td>
</tr>
<tr>
@@ -8225,19 +8246,19 @@
in a work-group executing the kernel with the same argument values;
otherwise the results are undefined.
This rule applies to ND-ranges implemented with uniform and
- non-uniform work-groups</p>
-<p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to
+ non-uniform work-groups
+</p><p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to
wait for the async copy to finish.
The <em>event</em> argument can also be used to associate the
<strong>async_work_group_strided_copy</strong> with a previous async copy allowing an
event to be shared by multiple async copies; otherwise <em>event</em> should
- be zero.</p>
-<p class="tableblock"> 0 can be implicitly and explicitly cast to event_t type.</p>
-<p class="tableblock"> If <em>event</em> argument is non-zero, the event object supplied in <em>event</em>
- argument will be returned.</p>
-<p class="tableblock"> This function does not perform any implicit synchronization of source
- data such as using a <strong>barrier</strong> before performing the copy.</p>
-<p class="tableblock"> The behavior of <strong>async_work_group_strided_copy</strong> is undefined if
+ be zero.
+</p><p class="tableblock"> 0 can be implicitly and explicitly cast to event_t type.
+</p><p class="tableblock"> If <em>event</em> argument is non-zero, the event object supplied in <em>event</em>
+ argument will be returned.
+</p><p class="tableblock"> This function does not perform any implicit synchronization of source
+ data such as using a <strong>barrier</strong> before performing the copy.
+</p><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>
@@ -8251,8 +8272,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">Wait for events that identify the <strong>async_work_group_copy</strong> operations
to complete.
The event objects specified in <em>event_list</em> will be released after the
- wait is performed.</p>
-<p class="tableblock"> This function must be encountered by all work-items in a work-group
+ wait is performed.
+</p><p class="tableblock"> This function must be encountered by all work-items in a work-group
executing the kernel with the same <em>num_events</em> and event objects
specified in <em>event_list</em>; otherwise the results are undefined.
This rule applies to ND-ranges implemented with uniform and
@@ -8289,7 +8310,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="atomic-functions">1.13.11. Atomic Functions</h4>
+<h4 id="atomic-functions">6.13.11. Atomic Functions</h4>
<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
@@ -8679,7 +8700,7 @@
This section specifies each general kind.</p>
</div>
<div class="sect5">
-<h6 id="_strong_the_atomic_store_functions_strong"><strong>The atomic_store functions</strong></h6>
+<h6 id="__strong_the_atomic_store_functions_strong"><strong>The atomic_store functions</strong></h6>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="c"><span class="directive">void</span> atomic_store(<span class="directive">volatile</span> A *object, C desired)
@@ -8703,7 +8724,7 @@
</div>
</div>
<div class="sect5">
-<h6 id="_strong_the_atomic_load_functions_strong"><strong>The atomic_load functions</strong></h6>
+<h6 id="__strong_the_atomic_load_functions_strong"><strong>The atomic_load functions</strong></h6>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="c">C atomic_load(<span class="directive">volatile</span> A *object)
@@ -8724,7 +8745,7 @@
</div>
</div>
<div class="sect5">
-<h6 id="_strong_the_atomic_exchange_functions_strong"><strong>The atomic_exchange functions</strong></h6>
+<h6 id="__strong_the_atomic_exchange_functions_strong"><strong>The atomic_exchange functions</strong></h6>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="c">C atomic_exchange(<span class="directive">volatile</span> A *object, C desired)
@@ -8749,7 +8770,7 @@
</div>
</div>
<div class="sect5">
-<h6 id="_strong_the_atomic_compare_exchange_functions_strong"><strong>The atomic_compare_exchange functions</strong></h6>
+<h6 id="__strong_the_atomic_compare_exchange_functions_strong"><strong>The atomic_compare_exchange functions</strong></h6>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="c"><span class="predefined-type">bool</span> atomic_compare_exchange_strong(
@@ -8843,7 +8864,7 @@
</div>
</div>
<div class="sect5">
-<h6 id="_strong_the_code_atomic_fetch_code_and_modify_functions_strong"><strong>The <code>atomic_fetch</code> and modify functions</strong></h6>
+<h6 id="__strong_the_code_atomic_fetch_code_and_modify_functions_strong"><strong>The <code>atomic_fetch</code> and modify functions</strong></h6>
<div class="paragraph">
<p>The following operations perform arithmetic and bitwise computations.
All of these operations are applicable to an object of any atomic integer
@@ -8948,7 +8969,7 @@
</div>
</div>
<div class="sect5">
-<h6 id="_strong_atomic_flag_type_and_operations_strong"><strong>Atomic flag type and operations</strong></h6>
+<h6 id="__strong_atomic_flag_type_and_operations_strong"><strong>Atomic flag type and operations</strong></h6>
<div class="paragraph">
<p>The atomic_flag type provides the classic test-and-set functionality.
It has two states, <em>set</em> (value is non-zero) and <em>clear</em> (value is 0).
@@ -8974,7 +8995,7 @@
</div>
</div>
<div class="sect5">
-<h6 id="_strong_the_atomic_flag_test_and_set_functions_strong"><strong>The atomic_flag_test_and_set functions</strong></h6>
+<h6 id="__strong_the_atomic_flag_test_and_set_functions_strong"><strong>The atomic_flag_test_and_set functions</strong></h6>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="c"><span class="predefined-type">bool</span> atomic_flag_test_and_set(
@@ -8999,7 +9020,7 @@
</div>
</div>
<div class="sect5">
-<h6 id="_strong_the_atomic_flag_clear_functions_strong"><strong>The atomic_flag_clear functions</strong></h6>
+<h6 id="__strong_the_atomic_flag_clear_functions_strong"><strong>The atomic_flag_clear functions</strong></h6>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="c"><span class="directive">void</span> atomic_flag_clear(<span class="directive">volatile</span> atomic_flag *object)
@@ -9056,7 +9077,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="miscellaneous-vector-functions">1.13.12. Miscellaneous Vector Functions</h4>
+<h4 id="miscellaneous-vector-functions">6.13.12. Miscellaneous Vector Functions</h4>
<div class="paragraph">
<p>The OpenCL C programming language implements the following additional
built-in vector functions.
@@ -9101,11 +9122,11 @@
int <strong>vec_step</strong>(<em>type</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The <strong>vec_step</strong> built-in function takes a built-in scalar or vector
data type argument and returns an integer value representing the
- number of elements in the scalar or vector.</p>
-<p class="tableblock"> For all scalar types, <strong>vec_step</strong> returns 1.</p>
-<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.
+ number of elements in the scalar or vector.
+</p><p class="tableblock"> For all scalar types, <strong>vec_step</strong> returns 1.
+</p><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>
</tr>
<tr>
@@ -9176,7 +9197,7 @@
</table>
</div>
<div class="sect3">
-<h4 id="printf">1.13.13. printf</h4>
+<h4 id="printf">6.13.13. printf</h4>
<div class="paragraph">
<p>The OpenCL C programming language implements the <strong>printf</strong> function.</p>
</div>
@@ -9202,8 +9223,8 @@
If the format is exhausted while arguments remain, the excess
arguments are evaluated (as always) but are otherwise ignored.
The <strong>printf</strong> function returns when the end of the format string is
- encountered.</p>
-<p class="tableblock"> <strong>printf</strong> returns 0 if it was executed successfully and -1 otherwise.</p></td>
+ encountered.
+</p><p class="tableblock"> <strong>printf</strong> returns 0 if it was executed successfully and -1 otherwise.</p></td>
</tr>
</tbody>
</table>
@@ -9716,7 +9737,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="image-read-and-write-functions">1.13.14. Image Read and Write Functions</h4>
+<h4 id="image-read-and-write-functions">6.13.14. 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.
@@ -9827,9 +9848,9 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies whether the <em>x</em>, <em>y</em> and <em>z</em> coordinates are passed in as
normalized or unnormalized values.
This must be a literal value and can be one of the following
- predefined enums:</p>
-<p class="tableblock"> <code>CLK_NORMALIZED_COORDS_TRUE</code> or <code>CLK_NORMALIZED_COORDS_FALSE</code>.</p>
-<p class="tableblock"> The samplers used with an image in multiple calls to
+ predefined enums:
+</p><p class="tableblock"> <code>CLK_NORMALIZED_COORDS_TRUE</code> or <code>CLK_NORMALIZED_COORDS_FALSE</code>.
+</p><p class="tableblock"> The samplers used with an image in multiple calls to
<strong>read_image{f|i|ui}</strong> declared in a kernel must use the same value
for <normalized coords>.</p></td>
</tr>
@@ -9838,26 +9859,26 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the image addressing mode, i.e. how out-of-range image
coordinates are handled.
This must be a literal value and can be one of the following
- predefined enums:</p>
-<p class="tableblock"> <code>CLK_ADDRESS_MIRRORED_REPEAT</code> - Flip the image coordinate at every
+ predefined enums:
+</p><p class="tableblock"> <code>CLK_ADDRESS_MIRRORED_REPEAT</code> - Flip the image coordinate at every
integer junction.
This addressing mode can only be used with normalized coordinates.
If normalized coordinates are not used, this addressing mode may
- generate image coordinates that are undefined.</p>
-<p class="tableblock"> <code>CLK_ADDRESS_REPEAT</code> - out-of-range image coordinates are wrapped to
+ generate image coordinates that are undefined.
+</p><p class="tableblock"> <code>CLK_ADDRESS_REPEAT</code> - out-of-range image coordinates are wrapped to
the valid range.
This addressing mode can only be used with normalized coordinates.
If normalized coordinates are not used, this addressing mode may
- 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_NONE</code> - for this addressing mode the programmer
+ 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_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
- undefined.</p>
-<p class="tableblock"> For 1D and 2D image arrays, the addressing mode applies only to the
+ undefined.
+</p><p class="tableblock"> For 1D and 2D image arrays, the addressing mode applies only to the
<em>x</em> and (<em>x, y</em>) coordinates.
The addressing mode for the coordinate which specifies the array index
is always <code>CLK_ADDRESS_CLAMP_TO_EDGE</code>.</p></td>
@@ -9866,8 +9887,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><code><filter mode></code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the filter mode to use.
This must be a literal value and can be one of the following
- predefined enums: <code>CLK_FILTER_NEAREST</code> or <code>CLK_FILTER_LINEAR</code>.</p>
-<p class="tableblock"> Refer to the <a href="#addressing-and-filter-modes">detailed description of
+ predefined enums: <code>CLK_FILTER_NEAREST</code> or <code>CLK_FILTER_LINEAR</code>.
+</p><p class="tableblock"> Refer to the <a href="#addressing-and-filter-modes">detailed description of
these filter modes</a>.</p></td>
</tr>
</tbody>
@@ -9968,22 +9989,22 @@
float4 <strong>read_imagef</strong>(read_only image2d_t <em>image</em>, sampler_t <em>sampler</em>,
float2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>) to do an element lookup in
- the 2D image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ the 2D image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
+</p><p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
sampler with filter mode set to <code>CLK_FILTER_NEAREST</code>, 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>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <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>
</tr>
@@ -10001,28 +10022,28 @@
uint4 <strong>read_imageui</strong>(read_only image2d_t <em>image</em>, sampler_t <em>sampler</em>,
float2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>) to do an element lookup in
- the 2D image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ the 2D image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively.
- Each channel will be stored in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ Each channel will be stored in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imageui</strong> are undefined.</p>
-<p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imageui</strong> are undefined.
+</p><p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
The filter_mode specified in <em>sampler</em> must be set to
- <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.</p>
-<p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
+ <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.
+</p><p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
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
@@ -10039,22 +10060,22 @@
float4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>, <em>coord.z</em>) to do an element
lookup in the 3D image object specified by <em>image</em>.
- <em>coord.w</em> is ignored.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ <em>coord.w</em> is ignored.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
+</p><p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
sampler with filter mode set to <code>CLK_FILTER_NEAREST</code>, 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>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <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 are
undefined.</p></td>
</tr>
@@ -10073,28 +10094,28 @@
float4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>, <em>coord.z</em>) to do an element
lookup in the 3D image object specified by <em>image</em>.
- <em>coord.w</em> is ignored.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ <em>coord.w</em> is ignored.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively.
- Each channel will be stored in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ Each channel will be stored in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imageui</strong> are undefined.</p>
-<p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imageui</strong> are undefined.
+</p><p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
The filter_mode specified in <em>sampler</em> must be set to
- <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.</p>
-<p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
+ <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.
+</p><p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
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
@@ -10110,22 +10131,22 @@
float4 <strong>read_imagef</strong>(read_only image2d_array_t <em>image</em>,
sampler_t <em>sampler</em>, float4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ <em>coord.z</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with image_channel_data_type set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with image_channel_data_type set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with image_channel_data_type set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with image_channel_data_type set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
+</p><p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
sampler with filter mode set to <code>CLK_FILTER_NEAREST</code>, 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>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <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>
</tr>
@@ -10139,28 +10160,28 @@
uint4 <strong>read_imageui</strong>(read_only image2d_array_t <em>image</em>,
sampler_t <em>sampler</em>, float4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ <em>coord.z</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively.
- Each channel will be stored in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ Each channel will be stored in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imageui</strong> are undefined.</p>
-<p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imageui</strong> are undefined.
+</p><p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
The filter_mode specified in <em>sampler</em> must be set to
- <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.</p>
-<p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
+ <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.
+</p><p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
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
@@ -10176,22 +10197,22 @@
float4 <strong>read_imagef</strong>(read_only image1d_t <em>image</em>, sampler_t <em>sampler</em>,
float <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord</em> to do an element lookup in the 1D image object specified
- by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
+</p><p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
sampler with filter mode set to <code>CLK_FILTER_NEAREST</code>, 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>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <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>
</tr>
@@ -10209,28 +10230,28 @@
uint4 <strong>read_imageui</strong>(read_only image1d_t <em>image</em>, sampler_t <em>sampler</em>,
float <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord</em> to do an element lookup in the 1D image object specified
- by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively.
- Each channel will be stored in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ Each channel will be stored in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imageui</strong> are undefined.</p>
-<p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imageui</strong> are undefined.
+</p><p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
The filter_mode specified in <em>sampler</em> must be set to
- <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.</p>
-<p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
+ <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.
+</p><p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
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
@@ -10246,22 +10267,22 @@
float4 <strong>read_imagef</strong>(read_only image1d_array_t <em>image</em>,
sampler_t <em>sampler</em>, float2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.x</em> to do an element lookup in the 1D image identified by
- <em>coord.y</em> in the 1D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ <em>coord.y</em> in the 1D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with image_channel_data_type set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with image_channel_data_type set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with image_channel_data_type set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with image_channel_data_type set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
+</p><p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
sampler with filter mode set to <code>CLK_FILTER_NEAREST</code>, 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>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <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>
</tr>
@@ -10275,28 +10296,28 @@
uint4 <strong>read_imageui</strong>(read_only image1d_array_t <em>image</em>,
sampler_t <em>sampler</em>, float2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.x</em> to do an element lookup in the 1D image identified by
- <em>coord.y</em> in the 1D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ <em>coord.y</em> in the 1D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively. Each channel will be stored
- in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imageui</strong> are undefined.</p>
-<p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imageui</strong> are undefined.
+</p><p class="tableblock"> The <strong>read_image{i|ui}</strong> calls support a nearest filter only.
The filter_mode specified in <em>sampler</em> must be set to
- <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.</p>
-<p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
+ <code>CLK_FILTER_NEAREST</code>; otherwise the values returned are undefined.
+</p><p class="tableblock"> Furthermore, the <strong>read_image{i|ui}</strong> calls that take integer
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
@@ -10312,18 +10333,18 @@
float <strong>read_imagef</strong>(read_only image2d_depth_t <em>image</em>,
sampler_t <em>sampler</em>, float2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>) to do an element lookup in
- the 2D depth image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
+ the 2D depth image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
for depth image objects created with <em>image_channel_data_type</em> set to
- <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
- created with <em>image_channel_data_type</em> set to <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
+ <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
+ created with <em>image_channel_data_type</em> set to <code>CL_FLOAT</code>.
+</p><p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
sampler with filter mode set to <code>CLK_FILTER_NEAREST</code>, 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>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for depth image objects with
+ <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>
</tr>
@@ -10337,18 +10358,18 @@
float <strong>read_imagef</strong>(read_only image2d_array_depth_t <em>image</em>,
sampler_t <em>sampler</em>, float4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D depth image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
+ <em>coord.z</em> in the 2D depth image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
for depth image objects created with <em>image_channel_data_type</em> set to
- <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
- created with <em>image_channel_data_type</em> set to <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
+ <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
+ created with <em>image_channel_data_type</em> set to <code>CL_FLOAT</code>.
+</p><p class="tableblock"> The <strong>read_imagef</strong> calls that take integer coordinates must use a
sampler with filter mode set to <code>CLK_FILTER_NEAREST</code>, 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>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <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>
</tr>
@@ -10366,7 +10387,13 @@
<a href="#built-in-image-read-functions">built-in image read functions</a> that take
integer coordinates and a sampler with filter mode set to
<code>CLK_FILTER_NEAREST</code>, normalized coordinates set to
-<code>CLK_NORMALIZED_COORDS_FALSE</code> and addressing mode to <code>CLK_ADDRESS_NONE</code>.</p>
+<code>CLK_NORMALIZED_COORDS_FALSE</code> and addressing mode to <code>CLK_ADDRESS_NONE</code>.
+There is one exception when the <em>image_channel_data_type</em> is a floating
+point type (such as <code>CL_FLOAT</code>).
+In this exceptional case, when channel data values are denormalized, the
+sampler-less image read function may return the denormalized data, while
+the image read function with a sampler argument may flush the denormalized
+channel data values to zero.</p>
</div>
<div class="paragraph">
<p><em>aQual</em> in the following table refers to one of the access qualifiers.
@@ -10386,17 +10413,17 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">float4 <strong>read_imagef</strong>(<em>aQual</em> image2d_t <em>image</em>, int2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>) to do an element lookup in
- the 2D image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ the 2D image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <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>
</tr>
@@ -10408,23 +10435,23 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">int4 <strong>read_imagei</strong>(<em>aQual</em> image2d_t <em>image</em>, int2 <em>coord</em>)<br>
uint4 <strong>read_imageui</strong>(<em>aQual</em> image2d_t <em>image</em>, int2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>) to do an element lookup in
- the 2D image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ the 2D image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively. Each channel will be stored
- in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
values returned by <strong>read_imageui</strong> are undefined.</p></td>
</tr>
<tr>
@@ -10435,17 +10462,17 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">float4 <strong>read_imagef</strong>(<em>aQual</em> image3d_t <em>image</em>, int4 <em>coord</em> )</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>, <em>coord.z</em>) to do an element
lookup in the 3D image object specified by <em>image</em>.
- <em>coord.w</em> is ignored.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ <em>coord.w</em> is ignored.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <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 are
undefined.</p></td>
</tr>
@@ -10458,23 +10485,23 @@
uint4 <strong>read_imageui</strong>(<em>aQual</em> image3d_t <em>image</em>, int4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>, <em>coord.z</em>) to do an element
lookup in the 3D image object specified by <em>image</em>.
- <em>coord.w</em> is ignored.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ <em>coord.w</em> is ignored.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively.
- Each channel will be stored in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ Each channel will be stored in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
values returned by <strong>read_imageui</strong> are undefined.</p></td>
</tr>
<tr>
@@ -10484,17 +10511,17 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">float4 <strong>read_imagef</strong>(<em>aQual</em> image2d_array_t <em>image</em>, int4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ <em>coord.z</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <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>
</tr>
@@ -10506,23 +10533,23 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">int4 <strong>read_imagei</strong>(<em>aQual</em> image2d_array_t <em>image</em>, int4 <em>coord</em>)<br>
uint4 <strong>read_imageui</strong>(<em>aQual</em> image2d_array_t <em>image</em>, int4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ <em>coord.z</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively. Each channel will be stored
- in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
values returned by <strong>read_imageui</strong> are undefined.</p></td>
</tr>
<tr>
@@ -10533,17 +10560,17 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">float4 <strong>read_imagef</strong>(<em>aQual</em> image1d_t <em>image</em>, int <em>coord</em>)<br>
float4 <strong>read_imagef</strong>(<em>aQual</em> image1d_buffer_t <em>image</em>, int <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord</em> to do an element lookup in the 1D image or 1D image buffer
- object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <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>
</tr>
@@ -10557,23 +10584,23 @@
int4 <strong>read_imagei</strong>(<em>aQual</em> image1d_buffer_t <em>image</em>, int <em>coord</em>)<br>
uint4 <strong>read_imageui</strong>(<em>aQual</em> image1d_buffer_t <em>image</em>, int <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord</em> to do an element lookup in the 1D image or 1D image buffer
- object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively. Each channel will be stored
- in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
values returned by <strong>read_imageui</strong> are undefined.</p></td>
</tr>
<tr>
@@ -10583,17 +10610,17 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">float4 <strong>read_imagef</strong>(<em>aQual</em> image1d_array_t <em>image</em>, int2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.x</em> to do an element lookup in the 1D image identified by
- <em>coord.y</em> in the 1D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
+ <em>coord.y</em> in the 1D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [0.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to one of
the pre-defined packed formats or <code>CL_UNORM_INT8</code>, or
- <code>CL_UNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
+ <code>CL_UNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values in the range [-1.0, 1.0]
for image objects created with <em>image_channel_data_type</em> set to
- <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
- with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.</p>
-<p class="tableblock"> Values returned by <strong>read_imagef</strong> for image objects with
+ <code>CL_SNORM_INT8</code>, or <code>CL_SNORM_INT16</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns floating-point values for image objects created
+ with <em>image_channel_data_type</em> set to <code>CL_HALF_FLOAT</code> or <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>
</tr>
@@ -10605,23 +10632,23 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">int4 <strong>read_imagei</strong>(<em>aQual</em> image1d_array_t <em>image</em>, int2 <em>coord</em>)<br>
uint4 <strong>read_imageui</strong>(<em>aQual</em> image1d_array_t <em>image</em>, int2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.x</em> to do an element lookup in the 1D image identified by
- <em>coord.y</em> in the 1D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
+ <em>coord.y</em> in the 1D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagei</strong> and <strong>read_imageui</strong> return unnormalized signed integer
and unsigned integer values respectively. Each channel will be stored
- in a 32-bit integer.</p>
-<p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ in a 32-bit integer.
+</p><p class="tableblock"> <strong>read_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
- values returned by <strong>read_imagei</strong> are undefined.</p>
-<p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ values returned by <strong>read_imagei</strong> are undefined.
+</p><p class="tableblock"> <strong>read_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> If the <em>image_channel_data_type</em> is not one of the above values, the
values returned by <strong>read_imageui</strong> are undefined.</p></td>
</tr>
<tr>
@@ -10631,13 +10658,13 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">float <strong>read_imagef</strong>(<em>aQual</em> image2d_depth_t <em>image</em>, int2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate (<em>coord.x</em>, <em>coord.y</em>) to do an element lookup in
- the 2D depth image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
+ the 2D depth image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
for depth image objects created with <em>image_channel_data_type</em> set to
- <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
- 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
+ <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
+ 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>
</tr>
@@ -10648,13 +10675,13 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">float <strong>read_imagef</strong>(<em>aQual</em> image2d_array_depth_t <em>image</em>, int4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D depth image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
+ <em>coord.z</em> in the 2D depth image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value in the range [0.0, 1.0]
for depth image objects created with <em>image_channel_data_type</em> set to
- <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.</p>
-<p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
- 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
+ <code>CL_UNORM_INT16</code> or <code>CL_UNORM_INT24</code>.
+</p><p class="tableblock"> <strong>read_imagef</strong> returns a floating-point value for depth image objects
+ 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>
</tr>
@@ -10698,25 +10725,25 @@
done before writing the color value.
<em>coord.x</em> and <em>coord.y</em> are considered to be unnormalized coordinates,
and must be in the range [0, image width-1] and [0, image height-1]
- respectively.</p>
-<p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
+ respectively.
+</p><p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats
or set to <code>CL_SNORM_INT8</code>, <code>CL_UNORM_INT8</code>, <code>CL_SNORM_INT16</code>,
<code>CL_UNORM_INT16</code>, <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
Appropriate data format conversion will be done to convert channel
data from a floating-point value to actual data format in which the
- channels are stored.</p>
-<p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ channels are stored.
+</p><p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
+ <code>CL_UNSIGNED_INT32</code>.
+</p><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 <em>x</em> and <em>y</em> coordinate
values that are not in the range [0, image width-1] and [0, image
@@ -10740,25 +10767,25 @@
done before writing the color value.
<em>coord.x</em>, <em>coord.y</em> and <em>coord.z</em> are considered to be unnormalized
coordinates, and must be in the range [0, image width-1] and [0, image
- height-1], and [0, image number of layers-1], respectively.</p>
-<p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
+ height-1], and [0, image number of layers-1], respectively.
+</p><p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats
or set to <code>CL_SNORM_INT8</code>, <code>CL_UNORM_INT8</code>, <code>CL_SNORM_INT16</code>,
<code>CL_UNORM_INT16</code>, <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
Appropriate data format conversion will be done to convert channel
data from a floating-point value to actual data format in which the
- channels are stored.</p>
-<p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ channels are stored.
+</p><p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
+ <code>CL_UNSIGNED_INT32</code>.
+</p><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 (<em>x</em>, <em>y</em>, <em>z</em>) coordinate
values that are not in the range [0, image width-1], [0, image
@@ -10787,25 +10814,25 @@
Appropriate data format conversion to the specified image format is
done before writing the color value.
<em>coord</em> is considered to be an unnormalized coordinate, and must be in
- the range [0, image width-1].</p>
-<p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
+ the range [0, image width-1].
+</p><p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats
or set to <code>CL_SNORM_INT8</code>, <code>CL_UNORM_INT8</code>, <code>CL_SNORM_INT16</code>,
<code>CL_UNORM_INT16</code>, <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
Appropriate data format conversion will be done to convert channel
data from a floating-point value to actual data format in which the
- channels are stored.</p>
-<p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ channels are stored.
+</p><p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
+ <code>CL_UNSIGNED_INT32</code>.
+</p><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>
@@ -10827,25 +10854,25 @@
done before writing the color value.
<em>coord.x</em> and <em>coord.y</em> are considered to be unnormalized coordinates
and must be in the range [0, image width-1] and [0, image number of
- layers-1], respectively.</p>
-<p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
+ layers-1], respectively.
+</p><p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats
or set to <code>CL_SNORM_INT8</code>, <code>CL_UNORM_INT8</code>, <code>CL_SNORM_INT16</code>,
<code>CL_UNORM_INT16</code>, <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
Appropriate data format conversion will be done to convert channel
data from a floating-point value to actual data format in which the
- channels are stored.</p>
-<p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ channels are stored.
+</p><p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
- <em>image_channel_data_type</em> set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
+ <em>image_channel_data_type</em> set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
+ <code>CL_UNSIGNED_INT32</code>.
+</p><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 (<em>x</em>, <em>y</em>) coordinate
values that are not in the range [0, image width-1] and [0, image
@@ -10864,14 +10891,14 @@
done before writing the depth value.
<em>coord.x</em> and <em>coord.y</em> are considered to be unnormalized coordinates,
and must be in the range [0, image width-1], and [0, image height-1],
- respectively.</p>
-<p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
+ respectively.
+</p><p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to <code>CL_UNORM_INT16</code>, <code>CL_UNORM_INT24</code> or
<code>CL_FLOAT</code>.
Appropriate data format conversion will be done to convert depth valye
from a floating-point value to actual data format associated with the
- image.</p>
-<p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
+ image.
+</p><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 (<em>x</em>, <em>y</em>) coordinate
values that are not in the range [0, image width-1] and [0, image
@@ -10891,14 +10918,14 @@
done before writing the depth value.
<em>coord.x</em>, <em>coord.y</em> and <em>coord.z</em> are considered to be unnormalized
coordinates, and must be in the range [0, image width-1], [0, image
- height-1], and [0, image number of layers-1], respectively.</p>
-<p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
+ height-1], and [0, image number of layers-1], respectively.
+</p><p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to <code>CL_UNORM_INT16</code>, <code>CL_UNORM_INT24</code> or
<code>CL_FLOAT</code>.
Appropriate data format conversion will be done to convert depth valye
from a floating-point value to actual data format associated with the
- image.</p>
-<p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
+ image.
+</p><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 (<em>x</em>, <em>y</em>, <em>z</em>) coordinate
values that are not in the range [0, image width-1], [0, image
@@ -10921,25 +10948,25 @@
done before writing the color value.
<em>coord.x</em>, <em>coord.y</em> and <em>coord.z</em> are considered to be unnormalized
coordinates, and must be in the range [0, image width-1], [0, image
- height-1], and [0, image depth-1], respectively.</p>
-<p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
+ height-1], and [0, image depth-1], respectively.
+</p><p class="tableblock"> <strong>write_imagef</strong> can only be used with image objects created with
image_channel_data_type set to one of the pre-defined packed formats
or set to <code>CL_SNORM_INT8</code>, <code>CL_UNORM_INT8</code>, <code>CL_SNORM_INT16</code>,
<code>CL_UNORM_INT16</code>, <code>CL_HALF_FLOAT</code> or <code>CL_FLOAT</code>.
Appropriate data format conversion will be done to convert channel
data from a floating-point value to actual data format in which the
- channels are stored.</p>
-<p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
- image_channel_data_type set to one of the following values:</p>
-<p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
+ channels are stored.
+</p><p class="tableblock"> <strong>write_imagei</strong> can only be used with image objects created with
+ image_channel_data_type set to one of the following values:
+</p><p class="tableblock"> <code>CL_SIGNED_INT8</code>,<br>
<code>CL_SIGNED_INT16</code> and<br>
- <code>CL_SIGNED_INT32</code>.</p>
-<p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
- image_channel_data_type set to one of the following values:</p>
-<p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
+ <code>CL_SIGNED_INT32</code>.
+</p><p class="tableblock"> <strong>write_imageui</strong> can only be used with image objects created with
+ image_channel_data_type set to one of the following values:
+</p><p class="tableblock"> <code>CL_UNSIGNED_INT8</code>,<br>
<code>CL_UNSIGNED_INT16</code> and<br>
- <code>CL_UNSIGNED_INT32</code>.</p>
-<p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
+ <code>CL_UNSIGNED_INT32</code>.
+</p><p class="tableblock"> The behavior of <strong>write_imagef</strong>, <strong>write_imagei</strong> and <strong>write_imageui</strong> for
image objects 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], and [0,
@@ -11005,8 +11032,8 @@
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_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>
+<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>
<code>CLK_SNORM_INT16</code><br>
<code>CLK_UNORM_INT8</code><br>
<code>CLK_UNORM_INT16</code><br>
@@ -11031,8 +11058,8 @@
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_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>
+<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>
@@ -11225,7 +11252,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="work-group-functions">1.13.15. Work-group Functions</h4>
+<h4 id="work-group-functions">6.13.15. Work-group Functions</h4>
<div class="paragraph">
<p>The OpenCL C programming language implements the following built-in
functions that operate on a work-group level.
@@ -11271,8 +11298,8 @@
gentype <strong>work_group_broadcast</strong>(gentype <em>a</em>, size_t <em>local_id</em>x,
size_t _local_id__y, size_t _local_id_z</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Broadcast the value of <em>x</em> for work-item identified by <em>local_id</em> to
- all work-items in the work-group.</p>
-<p class="tableblock"> <em>local_id</em> must be the same value for all work-items in the
+ all work-items in the work-group.
+</p><p class="tableblock"> <em>local_id</em> must be the same value for all work-items in the
work-group.</p></td>
</tr>
<tr>
@@ -11284,16 +11311,16 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>work_group_scan_exclusive_<op></strong>(gentype <em>x</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Do an exclusive scan operation specified by <strong><op></strong> of all values
specified by work-items in the work-group. The scan results are
- returned for each work-item.</p>
-<p class="tableblock"> The scan order is defined by increasing 1D linear global ID within the
+ returned for each work-item.
+</p><p class="tableblock"> The scan order is defined by increasing 1D linear global ID within the
work-group.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>work_group_scan_inclusive_<op></strong>(gentype <em>x</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Do an inclusive scan operation specified by <strong><op></strong> of all values
specified by work-items in the work-group. The scan results are
- returned for each work-item.</p>
-<p class="tableblock"> The scan order is defined by increasing 1D linear global ID within the
+ returned for each work-item.
+</p><p class="tableblock"> The scan order is defined by increasing 1D linear global ID within the
work-group.</p></td>
</tr>
</tbody>
@@ -11365,7 +11392,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="pipe-functions">1.13.16. Pipe Functions</h4>
+<h4 id="pipe-functions">6.13.16. Pipe Functions</h4>
<div class="paragraph">
<p>A pipe is identified by specifying the <code>pipe</code> keyword with a type.
The data type specifies the size of each packet in the pipe.
@@ -11482,19 +11509,19 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>read_pipe</strong>(read_only pipe gentype <em>p</em>, reserve_id_t <em>reserve_id</em>,
uint <em>index</em>, gentype *<em>ptr</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read packet from the reserved area of the pipe referred to by
- <em>reserve_id</em> and <em>index</em> into <em>ptr</em>.</p>
-<p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0
- …​ <em>num_packets</em> - 1.</p>
-<p class="tableblock"> Returns 0 if <strong>read_pipe</strong> is successful and a negative value otherwise.</p></td>
+ <em>reserve_id</em> and <em>index</em> into <em>ptr</em>.
+</p><p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0
+ …​ <em>num_packets</em> - 1.
+</p><p class="tableblock"> Returns 0 if <strong>read_pipe</strong> is successful and a negative value otherwise.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>write_pipe</strong>(write_only pipe gentype <em>p</em>, reserve_id_t
<em>reserve_id</em>, uint <em>index</em>, const gentype *<em>ptr</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Write packet specified by <em>ptr</em> to the reserved area of the pipe
- referred to by <em>reserve_id</em> and <em>index</em>.</p>
-<p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0
- …​ <em>num_packets</em> - 1.</p>
-<p class="tableblock"> Returns 0 if <strong>write_pipe</strong> is successful and a negative value
+ referred to by <em>reserve_id</em> and <em>index</em>.
+</p><p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0
+ …​ <em>num_packets</em> - 1.
+</p><p class="tableblock"> Returns 0 if <strong>write_pipe</strong> is successful and a negative value
otherwise.</p></td>
</tr>
<tr>
@@ -11561,8 +11588,8 @@
reserve_id_t <strong>work_group_reserve_write_pipe</strong>(write_only pipe gentype <em>p</em>,
uint <em>num_packets</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Reserve <em>num_packets</em> entries for reading from or writing to pipe <em>p</em>.
- Returns a valid reservation ID if the reservation is successful.</p>
-<p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0
+ Returns a valid reservation ID if the reservation is successful.
+</p><p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0
…​ <em>num_packets</em> - 1.</p></td>
</tr>
<tr>
@@ -11716,7 +11743,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="enqueuing-kernels">1.13.17. Enqueuing Kernels</h4>
+<h4 id="enqueuing-kernels">6.13.17. Enqueuing Kernels</h4>
<div class="paragraph">
<p>OpenCL 2.0 allows a kernel to independently enqueue to the same device,
without host interaction.
@@ -11763,8 +11790,8 @@
const ndrange_t <em>ndrange</em>, uint <em>num_events_in_wait_list</em>,
const clk_event_t *<em>event_wait_list</em>, clk_event_t *<em>event_ret</em>,
void (^<em>block</em>)(local void *, …​), uint size0, …​)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Enqueue the block for execution to <em>queue</em>.</p>
-<p class="tableblock"> If an event is returned, <strong>enqueue_kernel</strong> performs an implicit retain
+<td class="tableblock halign-left valign-top"><p class="tableblock">Enqueue the block for execution to <em>queue</em>.
+</p><p class="tableblock"> If an event is returned, <strong>enqueue_kernel</strong> performs an implicit retain
on the returned event.</p></td>
</tr>
</tbody>
@@ -12181,8 +12208,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">uint <strong>get_kernel_work_group_size</strong>(void (^block)(void))<br>
uint <strong>get_kernel_work_group_size</strong>(void (^block)(local void *, …​))</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This provides a mechanism to query the maximum work-group size that
- can be used to execute a block on a specific device given by <em>device</em>.</p>
-<p class="tableblock"> <em>block</em> specifies the block to be enqueued.</p></td>
+ can be used to execute a block on a specific device given by <em>device</em>.
+</p><p class="tableblock"> <em>block</em> specifies the block to be enqueued.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">uint <strong>get_kernel_preferred_</strong> <strong>work_group_size_multiple</strong>(
@@ -12219,11 +12246,11 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">int <strong>enqueue_marker</strong>(queue_t <em>queue</em>, uint <em>num_events_in_wait_list</em>,
const clk_event_t *<em>event_wait_list</em>, clk_event_t *<em>event_ret</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Enqueue a marker command to <em>queue</em>.</p>
-<p class="tableblock"> The marker command waits for a list of events specified by
- <em>event_wait_list</em> to complete before the marker completes.</p>
-<p class="tableblock"> <em>event_ret</em> must not be <code>NULL</code> as otherwise this is a no-op.</p>
-<p class="tableblock"> If an event is returned, <strong>enqueue_marker</strong> performs an implicit retain
+<td class="tableblock halign-left valign-top"><p class="tableblock">Enqueue a marker command to <em>queue</em>.
+</p><p class="tableblock"> The marker command waits for a list of events specified by
+ <em>event_wait_list</em> to complete before the marker completes.
+</p><p class="tableblock"> <em>event_ret</em> must not be <code>NULL</code> as otherwise this is a no-op.
+</p><p class="tableblock"> If an event is returned, <strong>enqueue_marker</strong> performs an implicit retain
on the returned event.</p></td>
</tr>
</tbody>
@@ -12291,8 +12318,8 @@
The event object is deleted once the event reference count is zero,
the specific command identified by this event has completed (or
terminated) and there are no commands in any device command queue that
- require a wait for this event to complete.</p>
-<p class="tableblock"> <em>event</em> must be an event returned by enqueue_kernel, enqueue_marker or
+ require a wait for this event to complete.
+</p><p class="tableblock"> <em>event</em> must be an event returned by enqueue_kernel, enqueue_marker or
a user event.</p></td>
</tr>
<tr>
@@ -12330,17 +12357,17 @@
The specific function being referred to is: enqueue_kernel.
These enqueued commands are identified by unique event objects.
The profiling information will be available in <em>value</em> once the
- command identified by <em>event</em> has completed. — <em>event</em> must be an event returned by enqueue_kernel.</p>
-<p class="tableblock"><em>name</em> identifies which profiling information is to be queried and can be:</p>
-<p class="tableblock"> <code>CLK_PROFILING_COMMAND_EXEC_TIME</code></p>
-<p class="tableblock"><em>value</em> is a pointer to two 64-bit values.</p>
-<p class="tableblock">The first 64-bit value describes the elapsed time <code>CL_PROFILING_COMMAND_END</code>
+ command identified by <em>event</em> has completed. — <em>event</em> must be an event returned by enqueue_kernel.
+</p><p class="tableblock"><em>name</em> identifies which profiling information is to be queried and can be:
+</p><p class="tableblock"> <code>CLK_PROFILING_COMMAND_EXEC_TIME</code>
+</p><p class="tableblock"><em>value</em> is a pointer to two 64-bit values.
+</p><p class="tableblock">The first 64-bit value describes the elapsed time <code>CL_PROFILING_COMMAND_END</code>
- <code>CL_PROFLING_COMMAND_START</code> for the command identified by <em>event</em> in
-nanoseconds.</p>
-<p class="tableblock">The second 64-bit value describes the elapsed time
+nanoseconds.
+</p><p class="tableblock">The second 64-bit value describes the elapsed time
<code>CL_PROFILING_COMMAND_COMPLETE</code> - <code>CL_PROFILING_COMAMND_START</code> for the
-command identified by <em>event</em> in nanoseconds.</p>
-<p class="tableblock">[NOTE]
+command identified by <em>event</em> in nanoseconds.
+</p><p class="tableblock">[NOTE]
====
The behavior of capture_event_profiling_info when called multiple times for
the same <em>event</em> is undefined.
@@ -12509,7 +12536,7 @@
</div>
</div>
<div class="sect1">
-<h2 id="opencl-numerical-compliance">2. OpenCL Numerical Compliance</h2>
+<h2 id="opencl-numerical-compliance">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
@@ -12522,7 +12549,7 @@
Double precision floating-point is an optional feature.</p>
</div>
<div class="sect2">
-<h3 id="rounding-modes-1">2.1. Rounding Modes</h3>
+<h3 id="rounding-modes-1">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.
@@ -12558,7 +12585,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="inf-nan-and-denormalized-numbers">2.2. INF, NaN and Denormalized Numbers</h3>
+<h3 id="inf-nan-and-denormalized-numbers">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>
@@ -12574,7 +12601,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="floating-point-exceptions">2.3. Floating-Point Exceptions</h3>
+<h3 id="floating-point-exceptions">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
@@ -12612,7 +12639,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="relative-error-as-ulps">2.4. Relative Error as ULPs</h3>
+<h3 id="relative-error-as-ulps">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).
@@ -14045,14 +14072,14 @@
</div>
</div>
<div class="sect2">
-<h3 id="edge-case-behavior">2.5. Edge Case Behavior</h3>
+<h3 id="edge-case-behavior">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">2.5.1. Additional Requirements Beyond C99 TC2</h4>
+<h4 id="additional-requirements-beyond-c99-tc2">7.5.1. Additional Requirements Beyond C99 TC2</h4>
<div class="paragraph">
<p>Functions that return a NaN with more than one NaN operand shall return one
of the NaN operands.
@@ -14432,7 +14459,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="changes-to-c99-tc2-behavior">2.5.2. Changes to C99 TC2 Behavior</h4>
+<h4 id="changes-to-c99-tc2-behavior">7.5.2. Changes to C99 TC2 Behavior</h4>
<div class="paragraph">
<p><strong>modf</strong> behaves as though implemented by:</p>
</div>
@@ -14451,7 +14478,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="edge-case-behavior-in-flush-to-zero-mode">2.5.3. Edge Case Behavior in Flush To Zero Mode</h4>
+<h4 id="edge-case-behavior-in-flush-to-zero-mode">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>
@@ -14522,7 +14549,7 @@
</div>
</div>
<div class="sect1">
-<h2 id="image-addressing-and-filtering">3. Image Addressing and Filtering</h2>
+<h2 id="image-addressing-and-filtering">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
@@ -14534,7 +14561,7 @@
sample the image and return an appropriate color.</p>
</div>
<div class="sect2">
-<h3 id="image-coordinates">3.1. Image Coordinates</h3>
+<h3 id="image-coordinates">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
@@ -14550,7 +14577,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="addressing-and-filter-modes">3.2. Addressing and Filter Modes</h3>
+<h3 id="addressing-and-filter-modes">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
@@ -15008,13 +15035,13 @@
</div>
</div>
<div class="sect2">
-<h3 id="conversion-rules">3.3. Conversion Rules</h3>
+<h3 id="conversion-rules">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">3.3.1. Conversion rules for normalized integer channel data types</h4>
+<h4 id="conversion-rules-for-normalized-integer-channel-data-types">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>
@@ -15363,11 +15390,11 @@
</div>
</div>
<div class="sect3">
-<h4 id="conversion-rules-for-half-precision-floating-point-channel-data-type">3.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">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
-<a href="#the-half-data-type">"The half data type"</a>).
+<a href="#the-half-data-type">The half data type</a>).
Conversions from <code>float</code> to <code>half</code> round the mantissa using the round to
nearest even or round to zero rounding mode.
Denormalized numbers for the <code>half</code> data type which may be generated when
@@ -15378,7 +15405,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="conversion-rules-for-floating-point-channel-data-type">3.3.3. Conversion rules for floating-point channel data type</h4>
+<h4 id="conversion-rules-for-floating-point-channel-data-type">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>
@@ -15398,7 +15425,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">3.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">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
@@ -15486,7 +15513,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="conversion-rules-for-srgba-and-sbgra-images">3.3.5. Conversion rules for sRGBA and sBGRA images</h4>
+<h4 id="conversion-rules-for-srgba-and-sbgra-images">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
@@ -15576,7 +15603,7 @@
</div>
</div>
<div class="sect2">
-<h3 id="selecting-an-image-from-an-image-array">3.4. Selecting an Image from an Image Array</h3>
+<h3 id="selecting-an-image-from-an-image-array">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>
@@ -15641,7 +15668,7 @@
</div>
</div>
<div class="sect1">
-<h2 id="references">4. Normative References</h2>
+<h2 id="references">9. Normative References</h2>
<div class="sectionbody">
<div class="olist arabic">
<ol class="arabic">
@@ -15703,8 +15730,8 @@
</div>
<div id="footer">
<div id="footer-text">
-Version 2.2-7<br>
-Last updated 2018-05-12 14:11:33 BST
+Version 2.2-8<br>
+Last updated 2018-10-08 09:49:15 PDT
</div>
</div>
diff --git a/specs/2.2/html/OpenCL_Cxx.html b/specs/2.2/html/OpenCL_Cxx.html
index f948bde..171fd59 100644
--- a/specs/2.2/html/OpenCL_Cxx.html
+++ b/specs/2.2/html/OpenCL_Cxx.html
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.6.1">
+<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="Khronos OpenCL Working Group">
<title>The OpenCL™ C++ 1.0 Specification</title>
<style>
@@ -841,9 +841,9 @@
<h1>The OpenCL<sup>™</sup> C++ 1.0 Specification</h1>
<div class="details">
<span id="author" class="author">Khronos OpenCL Working Group</span><br>
-<span id="revnumber">version 2.2-7,</span>
-<span id="revdate">Sat, 12 May 2018 13:21:28 +0000</span>
-<br><span id="revremark">from git branch: master commit: ab6da3001e9eeafaa36c18888ca7eb4ebb9768af</span>
+<span id="revnumber">version 2.2-8,</span>
+<span id="revdate">Mon, 08 Oct 2018 16:50:47 +0000</span>
+<br><span id="revremark">from git branch: master commit: b3cab22fcff5d8c17869907c983e259ddd7ce788</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@@ -3094,15 +3094,15 @@
<tr>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">uninitialized (no constructor or trivial default constructor)</p>
-<p class="tableblock"> <strong>AND</strong></p>
-<p class="tableblock"> trivial destructor</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">initialized by constant expression</p>
-<p class="tableblock"> <strong>AND</strong></p>
-<p class="tableblock"> trivial destructor</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">custom initializer</p>
-<p class="tableblock"> <strong>OR</strong></p>
-<p class="tableblock"> custom destructor</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uninitialized (no constructor or trivial default constructor)
+</p><p class="tableblock"> <strong>AND</strong>
+</p><p class="tableblock"> trivial destructor</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">initialized by constant expression
+</p><p class="tableblock"> <strong>AND</strong>
+</p><p class="tableblock"> trivial destructor</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">custom initializer
+</p><p class="tableblock"> <strong>OR</strong>
+</p><p class="tableblock"> custom destructor</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" rowspan="4"><p class="tableblock">local</p></td>
@@ -3113,17 +3113,17 @@
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">kernel</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are not zero-pre-initialized.</p>
-<p class="tableblock"> Optional zero-pre-initialization possible using switch: -cl-zero-init-local-mem-vars</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are not zero-pre-initialized.</p>
-<p class="tableblock"> Materialize temporary expressions are not supported.</p>
-<p class="tableblock"> Optional zero-pre-initialization possible using switch: -cl-zero-init-local-mem-vars</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are not zero-pre-initialized.</p>
-<p class="tableblock"> Materialize temporary expressions are not supported.</p>
-<p class="tableblock"> Optional zero-pre-initialization possible using switch: -cl-zero-init-local-mem-vars</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are not zero-pre-initialized.
+</p><p class="tableblock"> Optional zero-pre-initialization possible using switch: -cl-zero-init-local-mem-vars</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are not zero-pre-initialized.
+</p><p class="tableblock"> Materialize temporary expressions are not supported.
+</p><p class="tableblock"> Optional zero-pre-initialization possible using switch: -cl-zero-init-local-mem-vars</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are not zero-pre-initialized.
+</p><p class="tableblock"> Materialize temporary expressions are not supported.
+</p><p class="tableblock"> Optional zero-pre-initialization possible using switch: -cl-zero-init-local-mem-vars</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">local (non-kernel)</p></td>
@@ -3133,43 +3133,43 @@
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">class (static data member)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are not zero-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are not zero-pre-initialized.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">not supported</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">not supported</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" rowspan="3"><p class="tableblock">global</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">program</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero-pre-initialized.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">kernel / local</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero-pre-initialized.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">not supported</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">class (static data member)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero-pre-initialized.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">not supported</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">constant</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(any)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero-pre-initialized.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">supported</p>
-<p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero-pre-initialized.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supported
+</p><p class="tableblock"> Variables are zero or constexpr-pre-initialized.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">not supported</p></td>
</tr>
<tr>
@@ -3835,9 +3835,6 @@
<p>non-placement <code>new</code> and <code>delete</code> operators (<em>ISO C++ Sections 5.3.4 and 5.3.5</em>)</p>
</li>
<li>
-<p><code>goto</code> statement (<em>ISO C++ Section 6.6</em>)</p>
-</li>
-<li>
<p><code>register</code> and <code>thread_local</code> storage qualifiers (<em>ISO C++ Section 7.1.1</em>)</p>
</li>
<li>
@@ -3856,16 +3853,16 @@
<p>the C++ standard library (<em>ISO C++ Sections 17 …​ 30</em>)</p>
</li>
<li>
-<p><code>asm</code> declaration (<em>ISO C++ Section 7.4</em>)</p>
-</li>
-<li>
<p>no implicit lambda to function pointer conversion (<em>ISO C++ Section 5.1.2, item 6</em>)</p>
</li>
<li>
<p>variadic functions (<em>ISO C99 Section 7.15, Variable arguments <stdarg.h></em>)</p>
</li>
<li>
-<p>and, like C++, OpenCL C++ does not support variable length arrays (<em>ISO C99, Section 6.7.5</em>).</p>
+<p>and, like C++, OpenCL C++ does not support variable length arrays (<em>ISO C99, Section 6.7.5</em>)</p>
+</li>
+<li>
+<p>whether irreducible control flow is legal is implementation defined.</p>
</li>
</ul>
</div>
@@ -3877,6 +3874,9 @@
<li>
<p>All variadic templates (<em>ISO C++ Section 14.5.3</em>) including variadic function templates are supported.</p>
</li>
+<li>
+<p>Virtual inheritance (<em>ISO C++ Section 10.1, item 4</em>) is supported.</p>
+</li>
</ul>
</div>
<div class="admonitionblock note">
@@ -10480,9 +10480,9 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>exec_time</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Identifies profiling information to be queried.
- If specified, the two 64-bit values are returned</p>
-<p class="tableblock"> The first 64-bit value describes the elapsed time: <code>CL_PROFILING_COMMAND_END - CL_PROFILING_COMMAND_START</code> for the command identified by event in nanoseconds.</p>
-<p class="tableblock"> The second 64-bit value describes the elapsed time <code>CL_PROFILING_COMMAND_COMPLETE - CL_PROFILING_COMMAND_START</code> for the command identified by event in nanoseconds.</p></td>
+ If specified, the two 64-bit values are returned
+</p><p class="tableblock"> The first 64-bit value describes the elapsed time: <code>CL_PROFILING_COMMAND_END - CL_PROFILING_COMMAND_START</code> for the command identified by event in nanoseconds.
+</p><p class="tableblock"> The second 64-bit value describes the elapsed time <code>CL_PROFILING_COMMAND_COMPLETE - CL_PROFILING_COMMAND_START</code> for the command identified by event in nanoseconds.</p></td>
</tr>
</tbody>
</table>
@@ -20916,8 +20916,8 @@
</div>
<div id="footer">
<div id="footer-text">
-Version 2.2-7<br>
-Last updated 2018-05-07 12:41:34 BST
+Version 2.2-8<br>
+Last updated 2018-09-24 21:35:08 PDT
</div>
</div>
diff --git a/specs/2.2/html/OpenCL_Env.html b/specs/2.2/html/OpenCL_Env.html
index b610b8e..e3f3305 100644
--- a/specs/2.2/html/OpenCL_Env.html
+++ b/specs/2.2/html/OpenCL_Env.html
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.6.1">
+<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="Khronos OpenCL Working Group">
<title>The OpenCL™ SPIR-V Environment Specification</title>
<style>
@@ -841,9 +841,9 @@
<h1>The OpenCL<sup>™</sup> SPIR-V Environment Specification</h1>
<div class="details">
<span id="author" class="author">Khronos OpenCL Working Group</span><br>
-<span id="revnumber">version 2.2-7,</span>
-<span id="revdate">Sat, 12 May 2018 13:21:27 +0000</span>
-<br><span id="revremark">from git branch: master commit: ab6da3001e9eeafaa36c18888ca7eb4ebb9768af</span>
+<span id="revnumber">version 2.2-8,</span>
+<span id="revdate">Mon, 08 Oct 2018 16:50:05 +0000</span>
+<br><span id="revremark">from git branch: master commit: b3cab22fcff5d8c17869907c983e259ddd7ce788</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@@ -1091,9 +1091,8 @@
<em>Image Operands</em>.</p>
</li>
<li>
-<p>The image read instructions <strong>OpImageRead</strong>, <strong>OpImageFetch</strong>, and
-<strong>OpImageSampleExplicitLod</strong> must not include the optional <em>Image Operand</em>
-<strong>ConstOffset</strong>.</p>
+<p>The image read instructions <strong>OpImageRead</strong> and <strong>OpImageSampleExplicitLod</strong>
+must not include the optional <em>Image Operand</em> <strong>ConstOffset</strong>.</p>
</li>
<li>
<p>For all <strong>Atomic Instructions</strong>:</p>
@@ -1117,6 +1116,9 @@
The static function call graph for an entry point must not contain
cycles.</p>
</li>
+<li>
+<p>Whether irreducible control flow is legal is implementation defined.</p>
+</li>
</ul>
</div>
</div>
@@ -2592,7 +2594,7 @@
<div class="sect2">
<h3 id="_full_and_embedded_profile_extensions">7.2. Full and Embedded Profile Extensions</h3>
<div class="sect3">
-<h4 id="_code_cl_khr_3d_image_writes_code">7.2.1. <code>cl_khr_3d_image_writes</code></h4>
+<h4 id="__code_cl_khr_3d_image_writes_code">7.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
@@ -2600,7 +2602,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_depth_images_code">7.2.2. <code>cl_khr_depth_images</code></h4>
+<h4 id="__code_cl_khr_depth_images_code">7.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
@@ -2621,7 +2623,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_device_enqueue_local_arg_types_code">7.2.3. <code>cl_khr_device_enqueue_local_arg_types</code></h4>
+<h4 id="__code_cl_khr_device_enqueue_local_arg_types_code">7.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
@@ -2630,7 +2632,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_fp16_code">7.2.4. <code>cl_khr_fp16</code></h4>
+<h4 id="__code_cl_khr_fp16_code">7.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
@@ -2645,7 +2647,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_fp64_code">7.2.5. <code>cl_khr_fp64</code></h4>
+<h4 id="__code_cl_khr_fp64_code">7.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
@@ -2660,7 +2662,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_gl_depth_images_code">7.2.6. <code>cl_khr_gl_depth_images</code></h4>
+<h4 id="__code_cl_khr_gl_depth_images_code">7.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
@@ -2686,7 +2688,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_gl_msaa_sharing_code">7.2.7. <code>cl_khr_gl_msaa_sharing</code></h4>
+<h4 id="__code_cl_khr_gl_msaa_sharing_code">7.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
@@ -2718,7 +2720,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_int64_base_atomics_code_and_code_cl_khr_int64_extended_atomics_code">7.2.8. <code>cl_khr_int64_base_atomics</code> and <code>cl_khr_int64_extended_atomics</code></h4>
+<h4 id="__code_cl_khr_int64_base_atomics_code_and_code_cl_khr_int64_extended_atomics_code">7.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 support 64-bit
@@ -2735,7 +2737,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_mipmap_image_code">7.2.9. <code>cl_khr_mipmap_image</code></h4>
+<h4 id="__code_cl_khr_mipmap_image_code">7.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>
@@ -2747,9 +2749,6 @@
<p><strong>OpImageSampleExplicitLod</strong></p>
</li>
<li>
-<p><strong>OpImageFetch</strong></p>
-</li>
-<li>
<p><strong>OpImageRead</strong></p>
</li>
<li>
@@ -2764,7 +2763,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_mipmap_image_writes_code">7.2.10. <code>cl_khr_mipmap_image_writes</code></h4>
+<h4 id="__code_cl_khr_mipmap_image_writes_code">7.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>
@@ -2784,7 +2783,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_subgroups_code">7.2.11. <code>cl_khr_subgroups</code></h4>
+<h4 id="__code_cl_khr_subgroups_code">7.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
the environment will generally allows the scope for <em>Execution</em> to include:</p>
@@ -2809,7 +2808,7 @@
</div>
</div>
<div class="sect3">
-<h4 id="_code_cl_khr_subgroup_named_barrier_code">7.2.12. <code>cl_khr_subgroup_named_barrier</code></h4>
+<h4 id="__code_cl_khr_subgroup_named_barrier_code">7.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
@@ -2827,7 +2826,7 @@
<div class="sect2">
<h3 id="_embedded_profile_extensions">7.3. Embedded Profile Extensions</h3>
<div class="sect3">
-<h4 id="_code_cles_khr_int64_code">7.3.1. <code>cles_khr_int64</code></h4>
+<h4 id="__code_cles_khr_int64_code">7.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
@@ -4481,8 +4480,8 @@
For x < 0 and odd y, derived implementations implement this as -exp2( y *
log2(fabs(x) ).
For x == 0 and nonzero y, derived implementations return zero.
- For non-derived implementations, the error is <= 8192 ULP.</p>
-<p class="tableblock"> On some implementations, powr() or pown() may perform faster
+ For non-derived implementations, the error is <= 8192 ULP.
+</p><p class="tableblock"> On some implementations, powr() or pown() may perform faster
than pow().
If x is known to be >= 0, consider using powr() in place of pow(),
or if y is known to be an integer, consider using pown() in place of
@@ -6556,8 +6555,8 @@
</div>
<div id="footer">
<div id="footer-text">
-Version 2.2-7<br>
-Last updated 2018-05-07 12:41:34 BST
+Version 2.2-8<br>
+Last updated 2018-09-24 21:35:08 PDT
</div>
</div>
diff --git a/specs/2.2/html/OpenCL_Ext.html b/specs/2.2/html/OpenCL_Ext.html
index 062d769..7ab81e4 100644
--- a/specs/2.2/html/OpenCL_Ext.html
+++ b/specs/2.2/html/OpenCL_Ext.html
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.6.1">
+<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="Khronos OpenCL Working Group">
<title>The OpenCL Extension Specification</title>
<style>
@@ -841,9 +841,9 @@
<h1>The OpenCL Extension Specification</h1>
<div class="details">
<span id="author" class="author">Khronos OpenCL Working Group</span><br>
-<span id="revnumber">version 2.2-7,</span>
-<span id="revdate">Sat, 12 May 2018 13:21:27 +0000</span>
-<br><span id="revremark">from git branch: master commit: ab6da3001e9eeafaa36c18888ca7eb4ebb9768af</span>
+<span id="revnumber">version 2.2-8,</span>
+<span id="revdate">Mon, 08 Oct 2018 16:50:25 +0000</span>
+<br><span id="revremark">from git branch: master commit: b3cab22fcff5d8c17869907c983e259ddd7ce788</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@@ -1028,17 +1028,17 @@
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>enable</strong></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Behave as specified by the extension <em>extension_name</em>.</p>
-<p class="tableblock"> Report an error on the <strong><code>#pragma OPENCL EXTENSION</code></strong> if the
+<td class="tableblock halign-left valign-top"><p class="tableblock">Behave as specified by the extension <em>extension_name</em>.
+</p><p class="tableblock"> Report an error on the <strong><code>#pragma OPENCL EXTENSION</code></strong> if the
<em>extension_name</em> is not supported, or if <strong>all</strong> is specified.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>disable</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Behave (including issuing errors and warnings) as if the extension
- <em>extension_name</em> is not part of the language definition.</p>
-<p class="tableblock"> If <strong>all</strong> is specified, then behavior must revert back to that of the
- non-extended core version of the language being compiled to.</p>
-<p class="tableblock"> Warn on the <strong><code>#pragma OPENCL EXTENSION</code></strong> if the extension <em>extension_name</em>
+ <em>extension_name</em> is not part of the language definition.
+</p><p class="tableblock"> If <strong>all</strong> is specified, then behavior must revert back to that of the
+ non-extended core version of the language being compiled to.
+</p><p class="tableblock"> Warn on the <strong><code>#pragma OPENCL EXTENSION</code></strong> if the extension <em>extension_name</em>
is not supported.</p></td>
</tr>
</tbody>
@@ -1099,8 +1099,8 @@
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay highlight"><code>void clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
- const char *funcname)</code></pre>
+<pre class="CodeRay highlight"><code>void* clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
+ const char *funcname)</code></pre>
</div>
</div>
<div class="paragraph">
@@ -1482,8 +1482,8 @@
</tr>
<tr>
<td class="tableblock halign-left valign-top"><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>), 0x1.ffcp-1f ).</p>
-<p class="tableblock"> <strong>floor</strong>(x) is returned in <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.ffcp-1f ).
+</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">half<em>n</em> <strong>frexp</strong> (half<em>n</em> <em>x</em>, int<em>n</em> *exp)<br>
@@ -1545,8 +1545,8 @@
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
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
+ 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
definition of <strong>mad</strong>() is loose enough that almost any result is allowed
from <strong>mad</strong>() for some values of a and b.</p></td>
</tr>
@@ -1859,11 +1859,11 @@
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>clamp</strong> (<br>
- gentype <em>x</em>, gentype <em>minval</em>, gentype <em>maxval</em>)</p>
-<p class="tableblock"> gentype <strong>clamp</strong> (<br>
+ gentype <em>x</em>, gentype <em>minval</em>, gentype <em>maxval</em>)
+</p><p class="tableblock"> gentype <strong>clamp</strong> (<br>
gentype <em>x</em>, half <em>minval</em>, half <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>).</p>
-<p class="tableblock"> Results are undefined if <em>minval</em> > <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>).
+</p><p class="tableblock"> Results are undefined if <em>minval</em> > <em>maxval</em>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>degrees</strong> (gentype <em>radians</em>)</p></td>
@@ -1885,11 +1885,11 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>mix</strong> (gentype <em>x</em>, gentype <em>y</em>, gentype <em>a</em>)<br>
gentype <strong>mix</strong> (gentype <em>x</em>, gentype <em>y</em>, half <em>a</em>)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the linear blend of <em>x</em> and <em>y</em> implemented as:</p>
-<p class="tableblock"> <em>x</em> + (<em>y</em> - <em>x)</em> * <em>a</em></p>
-<p class="tableblock"> <em>a</em> must be a value in the range 0.0 …​ 1.0.
- If <em>a</em> is not in the range 0.0 …​ 1.0, the return values are undefined.</p>
-<p class="tableblock"> Note: The half precision <strong>mix</strong> function can be implemented using contractions such as <strong>mad</strong> or <strong>fma</strong>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the linear blend of <em>x</em> and <em>y</em> implemented as:
+</p><p class="tableblock"> <em>x</em> + (<em>y</em> - <em>x)</em> * <em>a</em>
+</p><p class="tableblock"> <em>a</em> must be a value in the range 0.0 …​ 1.0.
+ If <em>a</em> is not in the range 0.0 …​ 1.0, the return values are undefined.
+</p><p class="tableblock"> Note: The half precision <strong>mix</strong> function can be implemented using contractions such as <strong>mad</strong> or <strong>fma</strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>radians</strong> (gentype <em>degrees</em>)</p></td>
@@ -1902,19 +1902,19 @@
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>smoothstep</strong> (<br>
- gentype <em>edge0</em>, gentype <em>edge1</em>, gentype <em>x</em>)</p>
-<p class="tableblock"> gentype <strong>smoothstep</strong> (<br>
+ gentype <em>edge0</em>, gentype <em>edge1</em>, gentype <em>x</em>)
+</p><p class="tableblock"> gentype <strong>smoothstep</strong> (<br>
half <em>edge0</em>, half <em>edge1</em>, gentype <em>x</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns 0.0 if <em>x</em> <= <em>edge0</em> and 1.0 if <em>x</em> >= <em>edge1</em> and performs
smooth Hermite interpolation between 0 and 1 when <em>edge0</em> < <em>x</em> < <em>edge1</em>.
This is useful in cases where you would want a threshold function with a
- smooth transition.</p>
-<p class="tableblock"> This is equivalent to:</p>
-<p class="tableblock"> gentype <em>t</em>;<br>
+ smooth transition.
+</p><p class="tableblock"> This is equivalent to:
+</p><p class="tableblock"> gentype <em>t</em>;<br>
<em>t</em> = clamp ((<em>x</em> - <em>edge0</em>) / (<em>edge1</em> - <em>edge0</em>), 0, 1);<br>
- return <em>t</em> * <em>t</em> * (3 - 2 * <em>t</em>);<br></p>
-<p class="tableblock"> Results are undefined if <em>edge0</em> >= <em>edge1</em>.</p>
-<p class="tableblock"> Note: The half precision <strong>smoothstep</strong> function can be implemented using contractions such as <strong>mad</strong> or <strong>fma</strong>.</p></td>
+ return <em>t</em> * <em>t</em> * (3 - 2 * <em>t</em>);<br>
+</p><p class="tableblock"> Results are undefined if <em>edge0</em> >= <em>edge1</em>.
+</p><p class="tableblock"> Note: The half precision <strong>smoothstep</strong> function can be implemented using contractions such as <strong>mad</strong> or <strong>fma</strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype <strong>sign</strong> (gentype <em>x</em>)</p></td>
@@ -2157,8 +2157,8 @@
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">gentype<em>n</em> <strong>vload<em>n</em></strong><br>
- (size_t <em>offset</em>, const gentype *<em>p</em>)</p>
-<p class="tableblock"> gentype<em>n</em> <strong>vload<em>n</em></strong><br>
+ (size_t <em>offset</em>, const gentype *<em>p</em>)
+</p><p class="tableblock"> gentype<em>n</em> <strong>vload<em>n</em></strong><br>
(size_t <em>offset</em>, const __constant 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>)).
@@ -2204,8 +2204,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">event_t <strong>async_work_group_copy</strong> (<br>
__local gentype *<em>dst</em>,<br>
const __global gentype *<em>src</em>,<br>
- size_t <em>num_gentypes</em>, event_t <em>event</em>)</p>
-<p class="tableblock"> event_t <strong>async_work_group_copy</strong> (<br>
+ size_t <em>num_gentypes</em>, event_t <em>event</em>)
+</p><p class="tableblock"> event_t <strong>async_work_group_copy</strong> (<br>
__global gentype <em>*dst</em>,<br>
const __local gentype *<em>src</em>,<br>
size_t <em>num_gentypes</em>, event_t <em>event</em>)</p></td>
@@ -2214,15 +2214,15 @@
The async copy is performed by all work-items in a work-group and this
built-in function must therefore be encountered by all work-items in a
work-group executing the kernel with the same argument values; otherwise
- the results are undefined.</p>
-<p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to wait
+ the results are undefined.
+</p><p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to wait
for the async copy to finish.
The <em>event</em> argument can also be used to associate the
<strong>async_work_group_copy</strong> with a previous async copy allowing an event to be
- shared by multiple async copies; otherwise <em>event</em> should be zero.</p>
-<p class="tableblock"> If <em>event</em> argument is not zero, the event object supplied in <em>event</em>
- argument will be returned.</p>
-<p class="tableblock"> This function does not perform any implicit synchronization of source data
+ shared by multiple async copies; otherwise <em>event</em> should be zero.
+</p><p class="tableblock"> If <em>event</em> argument is not zero, the event object supplied in <em>event</em>
+ argument will be returned.
+</p><p class="tableblock"> This function does not perform any implicit synchronization of source data
such as using a <strong>barrier</strong> before performing the copy.</p></td>
</tr>
<tr>
@@ -2234,8 +2234,8 @@
__local gentype <em>*dst</em>,<br>
const __global gentype *<em>src</em>,<br>
size_t <em>num_gentypes</em>,<br>
- size_t <em>src_stride</em>, event_t <em>event</em>)</p>
-<p class="tableblock"> event_t <strong>async_work_group_strided_copy</strong> (<br>
+ size_t <em>src_stride</em>, event_t <em>event</em>)
+</p><p class="tableblock"> event_t <strong>async_work_group_strided_copy</strong> (<br>
__global gentype <em>*dst</em>,<br>
const __local gentype *<em>src</em>,<br>
size_t <em>num_gentypes</em>,<br>
@@ -2247,18 +2247,18 @@
The async gather is performed by all work-items in a work-group and this
built-in function must therefore be encountered by all work-items in a
work-group executing the kernel with the same argument values; otherwise
- the results are undefined.</p>
-<p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to wait
+ the results are undefined.
+</p><p class="tableblock"> Returns an event object that can be used by <strong>wait_group_events</strong> to wait
for the async copy to finish.
The <em>event</em> argument can also be used to associate the
<strong>async_work_group_strided_copy</strong> with a previous async copy allowing an
event to be shared by multiple async copies; otherwise <em>event</em> should be
- zero.</p>
-<p class="tableblock"> If <em>event</em> argument is not zero, the event object supplied in <em>event</em>
- argument will be returned.</p>
-<p class="tableblock"> This function does not perform any implicit synchronization of source data
- such as using a <strong>barrier</strong> before performing the copy.</p>
-<p class="tableblock"> The behavior of <strong>async_work_group_strided_copy</strong> is undefined if
+ zero.
+</p><p class="tableblock"> If <em>event</em> argument is not zero, the event object supplied in <em>event</em>
+ argument will be returned.
+</p><p class="tableblock"> This function does not perform any implicit synchronization of source data
+ such as using a <strong>barrier</strong> before performing the copy.
+</p><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>
@@ -2273,8 +2273,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">Wait for events that identify the <strong>async_work_group_copy</strong> operations to
complete.
The event objects specified in <em>event_list</em> will be released after the
- wait is performed.</p>
-<p class="tableblock"> This function must be encountered by all work-items in a work-group
+ wait is performed.
+</p><p class="tableblock"> This function must be encountered by all work-items in a work-group
executing the kernel with the same <em>num_events</em> and event objects
specified in <em>event_list</em>; otherwise the results are undefined.</p></td>
</tr>
@@ -2314,28 +2314,28 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">half4 <strong>read_imageh</strong> (<br>
read_only image2d_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
- int2 <em>coord</em>)</p>
-<p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
+ int2 <em>coord</em>)
+</p><p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
read_only image2d_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
float2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate <em>(coord.x, coord.y)</em> to do an element lookup in the 2D
- image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats, CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
with filter mode set to CLK_FILTER_NEAREST, normalized coordinates set to
CLK_NORMALIZED_COORDS_FALSE and addressing mode set to
CLK_ADDRESS_CLAMP_TO_EDGE, CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE;
- otherwise the values returned are undefined.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ otherwise the values returned are undefined.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description above
are undefined.</p></td>
</tr>
@@ -2347,29 +2347,29 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">half4 <strong>read_imageh</strong> (<br>
read_only image3d_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
- int4 <em>coord</em> )</p>
-<p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
+ int4 <em>coord</em> )
+</p><p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
read_only image3d_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
float4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate <em>(coord.x</em>, <em>coord.y</em>, <em>coord.z)</em> to do an
elementlookup in the 3D image object specified by <em>image</em>. <em>coord.w</em> is
- ignored.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ ignored.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong>returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong>returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
with filter mode set to CLK_FILTER_NEAREST, normalized coordinates set to
CLK_NORMALIZED_COORDS_FALSE and addressing mode set to
CLK_ADDRESS_CLAMP_TO_EDGE, CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE;
- otherwise the values returned are undefined.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ otherwise the values returned are undefined.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description are
undefined.</p></td>
</tr>
@@ -2381,28 +2381,28 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">half4 <strong>read_imageh</strong> (<br>
read_only image2d_array_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
- int4 <em>coord</em>)</p>
-<p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
+ int4 <em>coord</em>)
+</p><p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
read_only image2d_array_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
float4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ <em>coord.z</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with image_channel_data_type set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with image_channel_data_type set
- to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with image_channel_data_type set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
+ to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with image_channel_data_type set to CL_HALF_FLOAT.
+</p><p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
with filter mode set to CLK_FILTER_NEAREST, normalized coordinates set to
CLK_NORMALIZED_COORDS_FALSE and addressing mode set to
CLK_ADDRESS_CLAMP_TO_EDGE, CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE;
- otherwise the values returned are undefined.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ otherwise the values returned are undefined.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
image_channel_data_type values not specified in the description above are
undefined.</p></td>
</tr>
@@ -2414,28 +2414,28 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">half4 <strong>read_imageh</strong> (<br>
read_only image1d_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
- int <em>coord</em>)</p>
-<p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
+ int <em>coord</em>)
+</p><p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
read_only image1d_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
float <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord</em> to do an element lookup in the 1D image object specified by
- <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
with filter mode set to CLK_FILTER_NEAREST, normalized coordinates set to
CLK_NORMALIZED_COORDS_FALSE and addressing mode set to
CLK_ADDRESS_CLAMP_TO_EDGE, CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE;
- otherwise the values returned are undefined.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ otherwise the values returned are undefined.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description above
are undefined.</p></td>
</tr>
@@ -2447,28 +2447,28 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">half4 <strong>read_imageh</strong> (<br>
read_only image1d_array_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
- int2 <em>coord</em>)</p>
-<p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
+ int2 <em>coord</em>)
+</p><p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
read_only image1d_array_t <em>image</em>,<br>
sampler_t <em>sampler</em>,<br>
float2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.x</em> to do an element lookup in the 1D image identified by
- <em>coord.y</em> in the 1D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ <em>coord.y</em> in the 1D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with image_channel_data_type set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with image_channel_data_type set
- to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with image_channel_data_type set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
+ to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with image_channel_data_type set to CL_HALF_FLOAT.
+</p><p class="tableblock"> The <strong>read_imageh</strong> calls that take integer coordinates must use a sampler
with filter mode set to CLK_FILTER_NEAREST, normalized coordinates set to
CLK_NORMALIZED_COORDS_FALSE and addressing mode set to
CLK_ADDRESS_CLAMP_TO_EDGE, CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE;
- otherwise the values returned are undefined.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ otherwise the values returned are undefined.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
image_channel_data_type values not specified in the description above are
undefined.</p></td>
</tr>
@@ -2499,17 +2499,17 @@
<em>aQual</em> image2d_t <em>image</em>,<br>
int2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate <em>(coord.x, coord.y)</em> to do an element lookup in the 2D
- image object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ image object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description above
are undefined.</p></td>
</tr>
@@ -2518,17 +2518,17 @@
<em>aQual</em> image3d_t <em>image</em>,<br>
int4 <em>coord</em> )</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the coordinate <em>(coord.x</em>, <em>coord.y</em>, <em>coord.z)</em> to do an element
- lookup in the 3D image object specified by <em>image</em>. <em>coord.w</em> is ignored.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ lookup in the 3D image object specified by <em>image</em>. <em>coord.w</em> is ignored.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description are
undefined.</p></td>
</tr>
@@ -2537,39 +2537,39 @@
<em>aQual</em> image2d_array_t <em>image</em>,<br>
int4 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.xy</em> to do an element lookup in the 2D image identified by
- <em>coord.z</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ <em>coord.z</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description above
are undefined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">half4 <strong>read_imageh</strong> (<br>
<em>aQual</em> image1d_t <em>image</em>,<br>
- int <em>coord</em>)</p>
-<p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
+ int <em>coord</em>)
+</p><p class="tableblock"> half4 <strong>read_imageh</strong> (<br>
<em>aQual</em> image1d_buffer_t <em>image</em>,<br>
int <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord</em> to do an element lookup in the 1D image or 1D image buffer
- object specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ object specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description above
are undefined.</p></td>
</tr>
@@ -2578,17 +2578,17 @@
<em>aQual</em> image1d_array_t <em>image</em>,<br>
int2 <em>coord</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use <em>coord.x</em> to do an element lookup in the 2D image identified by
- <em>coord.y</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ <em>coord.y</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[0.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em> set
to one of the pre-defined packed formats or CL_UNORM_INT8, or
- CL_UNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
+ CL_UNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values in the range
[-1.0 …​ 1.0] for image objects created with <em>image_channel_data_type</em>
- set to CL_SNORM_INT8, or CL_SNORM_INT16.</p>
-<p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
- objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.</p>
-<p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
+ set to CL_SNORM_INT8, or CL_SNORM_INT16.
+</p><p class="tableblock"> <strong>read_imageh</strong> returns half precision floating-point values for image
+ objects created with <em>image_channel_data_type</em> set to CL_HALF_FLOAT.
+</p><p class="tableblock"> Values returned by <strong>read_imageh</strong> for image objects with
<em>image_channel_data_type</em> values not specified in the description above
are undefined.</p></td>
</tr>
@@ -2620,16 +2620,16 @@
int2 <em>coord</em>,<br>
half4 <em>color</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Write <em>color</em> value to location specified by <em>coord.xy</em> in the 2D image
- specified by <em>image</em>.</p>
-<p class="tableblock"> Appropriate data format conversion to the specified image format is done
+ specified by <em>image</em>.
+</p><p class="tableblock"> Appropriate data format conversion to the specified image format is done
before writing the color value. <em>x</em> & <em>y</em> are considered to be
unnormalized coordinates and must be in the range 0 …​ width - 1, and 0
- …​ height - 1.</p>
-<p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
+ …​ height - 1.
+</p><p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats or
set to CL_SNORM_INT8, CL_UNORM_INT8, CL_SNORM_INT16, CL_UNORM_INT16 or
- CL_HALF_FLOAT.</p>
-<p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
+ CL_HALF_FLOAT.
+</p><p class="tableblock"> The behavior of <strong>write_imageh</strong> for 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 …​ width -
1, 0 …​ height - 1) respectively, is undefined.</p></td>
@@ -2640,17 +2640,17 @@
int4 <em>coord</em>,<br>
half4 <em>color</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Write <em>color</em> value to location specified by <em>coord.xy</em> in the 2D image
- identified by <em>coord.z</em> in the 2D image array specified by <em>image</em>.</p>
-<p class="tableblock"> Appropriate data format conversion to the specified image format is done
+ identified by <em>coord.z</em> in the 2D image array specified by <em>image</em>.
+</p><p class="tableblock"> Appropriate data format conversion to the specified image format is done
before writing the color value. <em>coord.x</em>, <em>coord.y</em> and <em>coord.z</em> are
considered to be unnormalized coordinates and must be in the range 0 …​
image width - 1, 0 …​ image height - 1 and 0 …​ image number of layers -
- 1.</p>
-<p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
+ 1.
+</p><p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats or
set to CL_SNORM_INT8, CL_UNORM_INT8, CL_SNORM_INT16, CL_UNORM_INT16 or
- CL_HALF_FLOAT.</p>
-<p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
+ CL_HALF_FLOAT.
+</p><p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
<em>image_channel_data_type</em> values not specified in the description above or
with (<em>x</em>, <em>y, z</em>) coordinate values that are not in the range (0 …​
image width - 1, 0 …​ image height - 1, 0 …​ image number of layers -
@@ -2660,8 +2660,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>write_imageh</strong> (<br>
<em>aQual</em> image1d_t <em>image</em>,<br>
int <em>coord</em>,<br>
- half4 <em>color</em>)</p>
-<p class="tableblock"> void <strong>write_imageh</strong> (<br>
+ half4 <em>color</em>)
+</p><p class="tableblock"> void <strong>write_imageh</strong> (<br>
<em>aQual</em> image1d_buffer_t <em>image</em>,<br>
int <em>coord</em>,<br>
half4 <em>color</em>)</p></td>
@@ -2670,15 +2670,15 @@
Appropriate data format conversion to the specified image format is done
before writing the color value.
<em>coord</em> is considered to be unnormalized coordinates and must be in the
- range 0 …​ image width - 1.</p>
-<p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
+ range 0 …​ image width - 1.
+</p><p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats or
set to CL_SNORM_INT8, CL_UNORM_INT8, CL_SNORM_INT16, CL_UNORM_INT16 or
CL_HALF_FLOAT.
Appropriate data format conversion will be done to convert channel data
from a floating-point value to actual data format in which the channels
- are stored.</p>
-<p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
+ are stored.
+</p><p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
<em>image_channel_data_type</em> values not specified in the description above or
with coordinate values that is not in the range (0 …​ image width - 1),
is undefined.</p></td>
@@ -2693,15 +2693,15 @@
Appropriate data format conversion to the specified image format is done
before writing the color value. <em>coord.x</em> and <em>coord.y</em> are considered to
be unnormalized coordinates and must be in the range 0 …​ image width - 1
- and 0 …​ image number of layers - 1.</p>
-<p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
+ and 0 …​ image number of layers - 1.
+</p><p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
<em>image_channel_data_type</em> set to one of the pre-defined packed formats or
set to CL_SNORM_INT8, CL_UNORM_INT8, CL_SNORM_INT16, CL_UNORM_INT16 or
CL_HALF_FLOAT.
Appropriate data format conversion will be done to convert channel data
from a floating-point value to actual data format in which the channels
- are stored.</p>
-<p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
+ are stored.
+</p><p class="tableblock"> The behavior of <strong>write_imageh</strong> for 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, 0 …​ image number of layers - 1), respectively, is undefined.</p></td>
@@ -2712,22 +2712,22 @@
int4 <em>coord</em>,<br>
half4 <em>color</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Write color value to location specified by coord.xyz in the 3D image
- object specified by <em>image</em>.</p>
-<p class="tableblock"> Appropriate data format conversion to the specified image format is done
+ object specified by <em>image</em>.
+</p><p class="tableblock"> Appropriate data format conversion to the specified image format is done
before writing the color value.
coord.x, coord.y and coord.z are considered to be unnormalized coordinates
and must be in the range 0 …​ image width - 1, 0 …​ image height - 1 and
- 0 …​ image depth - 1.</p>
-<p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
+ 0 …​ image depth - 1.
+</p><p class="tableblock"> <strong>write_imageh</strong> can only be used with image objects created with
image_channel_data_type set to one of the pre-defined packed formats or
set to CL_SNORM_INT8, CL_UNORM_INT8, CL_SNORM_INT16, CL_UNORM_INT16 or
- CL_HALF_FLOAT.</p>
-<p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
+ CL_HALF_FLOAT.
+</p><p class="tableblock"> The behavior of <strong>write_imageh</strong> for image objects created with
image_channel_data_type values not specified in the description above or
with (x, y, z) coordinate values that are not in the range (0 …​ image
width - 1, 0 …​ image height - 1, 0 …​ image depth - 1), respectively,
- is undefined.</p>
-<p class="tableblock"> Note: This built-in function is only available if the
+ is undefined.
+</p><p class="tableblock"> Note: This built-in function is only available if the
cl_khr_3d_image_writes extension is also supported by the device.</p></td>
</tr>
</tbody>
@@ -2759,19 +2759,19 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_HALF_FP_CONFIG</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">Describes half 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"> CL_FP_DENORM — denorms are supported</p>
-<p class="tableblock"> CL_FP_INF_NAN — INF and NaNs are supported</p>
-<p class="tableblock"> CL_FP_ROUND_TO_NEAREST — round to nearest even rounding mode supported</p>
-<p class="tableblock"> CL_FP_ROUND_TO_ZERO — round to zero rounding mode supported</p>
-<p class="tableblock"> CL_FP_ROUND_TO_INF — round to positive and negative infinity rounding
- modes supported</p>
-<p class="tableblock"> CP_FP_FMA — IEEE754-2008 fused multiply-add is supported</p>
-<p class="tableblock"> CL_FP_SOFT_FLOAT — Basic floating-point operations (such as addition,
- subtraction, multiplication) are implemented in software.</p>
-<p class="tableblock"> The required minimum half precision floating-point capability as
- implemented by this extension is:</p>
-<p class="tableblock"> CL_FP_ROUND_TO_ZERO, or CL_FP_ROUND_TO_NEAREST | CL_FP_INF_NAN.</p></td>
+ This is a bit-field that describes one or more of the following values:
+</p><p class="tableblock"> CL_FP_DENORM — denorms are supported
+</p><p class="tableblock"> CL_FP_INF_NAN — INF and NaNs are supported
+</p><p class="tableblock"> CL_FP_ROUND_TO_NEAREST — round to nearest even rounding mode supported
+</p><p class="tableblock"> CL_FP_ROUND_TO_ZERO — round to zero rounding mode supported
+</p><p class="tableblock"> CL_FP_ROUND_TO_INF — round to positive and negative infinity rounding
+ modes supported
+</p><p class="tableblock"> CL_FP_FMA — IEEE754-2008 fused multiply-add is supported
+</p><p class="tableblock"> CL_FP_SOFT_FLOAT — Basic floating-point operations (such as addition,
+ subtraction, multiplication) are implemented in software.
+</p><p class="tableblock"> The required minimum half precision floating-point capability as
+ implemented by this extension is:
+</p><p class="tableblock"> CL_FP_ROUND_TO_ZERO, or CL_FP_ROUND_TO_NEAREST | CL_FP_INF_NAN.</p></td>
</tr>
</tbody>
</table>
@@ -4151,8 +4151,8 @@
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GL_RGBA8</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">CL_RGBA, CL_UNORM_INT8 or</p>
-<p class="tableblock">CL_BGRA, CL_UNORM_INT8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CL_RGBA, CL_UNORM_INT8 or
+</p><p class="tableblock">CL_BGRA, CL_UNORM_INT8</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GL_SRGB8_ALPHA8</p></td>
@@ -7796,8 +7796,8 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_CONTEXT_D3D11_DEVICE_KHR</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ID3D11Device *</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the ID3D11Device * to use for Direct3D 11 interoperability.</p>
-<p class="tableblock"> The default value is <code>NULL</code>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the ID3D11Device * to use for Direct3D 11 interoperability.
+</p><p class="tableblock"> The default value is <code>NULL</code>.</p></td>
</tr>
</tbody>
</table>
@@ -9041,8 +9041,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_GL_NUM_SAMPLES</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GLsizei</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The <em>samples</em> argument passed to <strong>glTexImage2DMultisample</strong> or
- <strong>glTexImage3DMultisample</strong>.</p>
-<p class="tableblock"> If <em>image</em> is not a MSAA texture, 1 is returned.</p></td>
+ <strong>glTexImage3DMultisample</strong>.
+</p><p class="tableblock"> If <em>image</em> is not a MSAA texture, 1 is returned.</p></td>
</tr>
</tbody>
</table>
@@ -9528,10 +9528,10 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_CONTEXT_MEMORY_INITIALIZE_KHR</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cl_context_memory_initialize_khr</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describes which memory types for the context must be initialized.
- This is a bit-field, where the following values are currently supported:</p>
-<p class="tableblock"> CL_CONTEXT_MEMORY_INITIALIZE_LOCAL_KHR — Initialize local memory to
- zeros.</p>
-<p class="tableblock"> CL_CONTEXT_MEMORY_INITIALIZE_PRIVATE_KHR — Initialize private memory to
+ This is a bit-field, where the following values are currently supported:
+</p><p class="tableblock"> CL_CONTEXT_MEMORY_INITIALIZE_LOCAL_KHR — Initialize local memory to
+ zeros.
+</p><p class="tableblock"> CL_CONTEXT_MEMORY_INITIALIZE_PRIVATE_KHR — Initialize private memory to
zeros.</p></td>
</tr>
</tbody>
@@ -9607,8 +9607,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_TERMINATE_CAPABILITY_KHR</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>cl_device_terminate_capability_khr</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describes the termination capability of the OpenCL device.
- This is a bit-field, where the following values are currently supported:</p>
-<p class="tableblock"> CL_DEVICE_TERMINATE_CAPABILITY_CONTEXT_KHR - Indicates that context
+ This is a bit-field, where the following values are currently supported:
+</p><p class="tableblock"> CL_DEVICE_TERMINATE_CAPABILITY_CONTEXT_KHR - Indicates that context
termination is supported.</p></td>
</tr>
</tbody>
@@ -9779,8 +9779,8 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>CL_DEVICE_SPIR_VERSIONS</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">A space separated list of SPIR versions supported by the device.</p>
-<p class="tableblock"> For example, returning <code>"1.2"</code> in this query implies that SPIR version 1.2
+<td class="tableblock halign-left valign-top"><p class="tableblock">A space separated list of SPIR versions supported by the device.
+</p><p class="tableblock"> For example, returning <code>"1.2"</code> in this query implies that SPIR version 1.2
is supported by the implementation.</p></td>
</tr>
</tbody>
@@ -9822,8 +9822,8 @@
<td class="tableblock halign-left valign-top"><p class="tableblock">CL_PROGRAM_BINARY_TYPE_INTERMEDIATE — An intermediate (non-source)
representation for the program is loaded as a binary.
The program must be further processed with <strong>clCompileProgram</strong> or
- <strong>clBuildProgram</strong>.</p>
-<p class="tableblock"> If processed with <strong>clCompileProgram</strong>, the result will be a binary of type
+ <strong>clBuildProgram</strong>.
+</p><p class="tableblock"> If processed with <strong>clCompileProgram</strong>, the result will be a binary of type
CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT or CL_PROGRAM_BINARY_TYPE_LIBRARY.
If processed with <strong>clBuildProgram</strong>, the result will be a binary of type
CL_PROGRAM_BINARY_TYPE_EXECUTABLE.</p></td>
@@ -10381,8 +10381,8 @@
<p>uint <strong>get_num_sub_groups</strong> ()</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of subgroups that the current work group is divided
- into.</p>
-<p class="tableblock"> This number will be constant for the duration of a work group’s execution.
+ into.
+</p><p class="tableblock"> This number will be constant for the duration of a work group’s execution.
If the kernel is executed with a non-uniform work group size
(i.e. the global_work_size values specified to <strong>clEnqueueNDRangeKernel</strong>
are not evenly divisible by the local_work_size values for any dimension,
@@ -10394,8 +10394,8 @@
<p>uint <strong>get_enqueued_num_sub_groups</strong> ()</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the same value as that returned by <strong>get_num_sub_groups</strong> if the
- kernel is executed with a uniform work group size.</p>
-<p class="tableblock"> If the kernel is executed with a non-uniform work group size, returns the
+ kernel is executed with a uniform work group size.
+</p><p class="tableblock"> If the kernel is executed with a non-uniform work group size, returns the
number of subgroups in each of the work groups that make up the uniform
region of the global range.</p></td>
</tr>
@@ -10404,8 +10404,8 @@
<p>uint <strong>get_sub_group_id</strong> ()</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>get_sub_group_id</strong> returns the subgroup ID which is a number from 0 ..
- <strong>get_num_sub_groups</strong>() - 1.</p>
-<p class="tableblock"> For <strong>clEnqueueTask</strong>, this returns 0.</p></td>
+ <strong>get_num_sub_groups</strong>() - 1.
+</p><p class="tableblock"> For <strong>clEnqueueTask</strong>, this returns 0.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
@@ -10434,8 +10434,8 @@
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>sub_group_barrier</strong> (<br>
- cl_mem_fence_flags <em>flags</em>)</p>
-<p class="tableblock"> void <strong>sub_group_barrier</strong> (<br>
+ cl_mem_fence_flags <em>flags</em>)
+</p><p class="tableblock"> void <strong>sub_group_barrier</strong> (<br>
cl_mem_fence_flags <em>flags</em>, memory_scope <em>scope</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All work items in a subgroup executing the kernel on a processor must
execute this function before any are allowed to continue execution beyond
@@ -10443,28 +10443,28 @@
This function must be encountered by all work items in a subgroup
executing the kernel.
These rules apply to ND-ranges implemented with uniform and non-uniform
- work groups.</p>
-<p class="tableblock"> If <strong>subgroup_barrier</strong> is inside a conditional statement, then all work
+ work groups.
+</p><p class="tableblock"> If <strong>subgroup_barrier</strong> is inside a conditional statement, then all work
items within the subgroup must enter the conditional if any work item in
the subgroup enters the conditional statement and executes the
- subgroup_barrier.</p>
-<p class="tableblock"> If <strong>subgroup_barrier</strong> is inside a loop, all work items within the subgroup
+ subgroup_barrier.
+</p><p class="tableblock"> If <strong>subgroup_barrier</strong> is inside a loop, all work items within the subgroup
must execute the subgroup_barrier for each iteration of the loop before
- any are allowed to continue execution beyond the subgroup_barrier.</p>
-<p class="tableblock"> The <strong>subgroup_barrier</strong> function also queues a memory fence (reads and
+ any are allowed to continue execution beyond the subgroup_barrier.
+</p><p class="tableblock"> The <strong>subgroup_barrier</strong> function also queues a memory fence (reads and
writes) to ensure correct ordering of memory operations to local or global
- memory.</p>
-<p class="tableblock"> The flags argument specifies the memory address space and can be set to a
- combination of the following values:</p>
-<p class="tableblock"> CLK_LOCAL_MEM_FENCE - The <strong>subgroup_barrier</strong> function will either flush
+ memory.
+</p><p class="tableblock"> The flags argument specifies the memory address space and can be set to a
+ combination of the following values:
+</p><p class="tableblock"> CLK_LOCAL_MEM_FENCE - The <strong>subgroup_barrier</strong> function will either flush
any variables stored in local memory or queue a memory fence to ensure
- correct ordering of memory operations to local memory.</p>
-<p class="tableblock"> CLK_GLOBAL_MEM_FENCE — The <strong>subgroup_barrier</strong> function will queue a
+ correct ordering of memory operations to local memory.
+</p><p class="tableblock"> CLK_GLOBAL_MEM_FENCE — The <strong>subgroup_barrier</strong> function will queue a
memory fence to ensure correct ordering of memory operations to global
memory.
This can be useful when work items, for example, write to buffer objects
- and then want to read the updated data from these buffer objects.</p>
-<p class="tableblock"> CLK_IMAGE_MEM_FENCE — The <strong>subgroup_barrier</strong> function will queue a memory
+ and then want to read the updated data from these buffer objects.
+</p><p class="tableblock"> CLK_IMAGE_MEM_FENCE — The <strong>subgroup_barrier</strong> function will queue a memory
fence to ensure correct ordering of memory operations to image objects.
This can be useful when work items, for example, write to image objects
and then want to read the updated data from these image objects.</p></td>
@@ -10531,8 +10531,8 @@
gentype <em>x</em>, uint <em>sub_group_local_id</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Broadcast the value of <em>x</em> for work item identified by
<em>sub_group_local_id</em> (value returned by <strong>get_sub_group_local_id</strong>) to all
- work items in the subgroup.</p>
-<p class="tableblock"> <em>sub_group_local_id</em> must be the same value for all work items in the
+ work items in the subgroup.
+</p><p class="tableblock"> <em>sub_group_local_id</em> must be the same value for all work items in the
subgroup.</p></td>
</tr>
<tr>
@@ -10546,8 +10546,8 @@
gentype <em>x</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Do an exclusive scan operation specified by <strong><op></strong> of all values specified
by work items in a subgroup.
- The scan results are returned for each work item.</p>
-<p class="tableblock"> The scan order is defined by increasing 1D linear global ID within the
+ The scan results are returned for each work item.
+</p><p class="tableblock"> The scan order is defined by increasing subgroup local ID within the
subgroup.</p></td>
</tr>
<tr>
@@ -10555,8 +10555,8 @@
gentype <em>x</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Do an inclusive scan operation specified by <strong><op></strong> of all values specified
by work items in a subgroup.
- The scan results are returned for each work item.</p>
-<p class="tableblock"> The scan order is defined by increasing 1D linear global ID within the
+ The scan results are returned for each work item.
+</p><p class="tableblock"> The scan order is defined by increasing subgroup local ID within the
subgroup.</p></td>
</tr>
</tbody>
@@ -10590,21 +10590,21 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">reserve_id_t <strong>sub_group_reserve_read_pipe</strong> (<br>
read_only pipe gentype <em>pipe</em>,<br>
- uint <em>num_packets</em>)</p>
-<p class="tableblock"> reserve_id_t <strong>sub_group_reserve_write_pipe</strong> (<br>
+ uint <em>num_packets</em>)
+</p><p class="tableblock"> reserve_id_t <strong>sub_group_reserve_write_pipe</strong> (<br>
write_only pipe gentype <em>pipe</em>,<br>
uint <em>num_packets</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Reserve <em>num_packets</em> entries for reading from or writing to <em>pipe</em>.
Returns a valid non-zero reservation ID if the reservation is successful
- and 0 otherwise.</p>
-<p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0 …​
+ and 0 otherwise.
+</p><p class="tableblock"> The reserved pipe entries are referred to by indices that go from 0 …​
<em>num_packets</em> - 1.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">void <strong>sub_group_commit_read_pipe</strong> (<br>
read_only pipe gentype <em>pipe</em>,<br>
- reserve_id_t <em>reserve_id</em>)</p>
-<p class="tableblock"> void <strong>sub_group_commit_write_pipe</strong> (<br>
+ reserve_id_t <em>reserve_id</em>)
+</p><p class="tableblock"> void <strong>sub_group_commit_write_pipe</strong> (<br>
write_only pipe gentype <em>pipe</em>,<br>
reserve_id_t <em>reserve_id</em>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that all reads and writes to <em>num_packets</em> associated with
@@ -10638,20 +10638,20 @@
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">uint <strong>get_kernel_sub_group_count_for_ndrange</strong> (<br>
const ndrange_t <em>ndrange</em>,<br>
- void (^block)(void));</p>
-<p class="tableblock"> uint <strong>get_kernel_sub_group_count_for_ndrange</strong> (<br>
+ void (^block)(void));
+</p><p class="tableblock"> uint <strong>get_kernel_sub_group_count_for_ndrange</strong> (<br>
const ndrange_t <em>ndrange</em>,<br>
void (^block)(local void *, …​));</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the number of subgroups in each work group of the dispatch (except
for the last in cases where the global size does not divide cleanly into
- work groups) given the combination of the passed ndrange and block.</p>
-<p class="tableblock"> <em>block</em> specifies the block to be enqueued.</p></td>
+ work groups) given the combination of the passed ndrange and block.
+</p><p class="tableblock"> <em>block</em> specifies the block to be enqueued.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">uint <strong>get_kernel_max_sub_group_size_for_ndrange</strong> (<br>
const ndrange_t <em>ndrange</em>,<br>
- void (^block)(void));<br></p>
-<p class="tableblock"> uint <strong>get_kernel_max_sub_group_size_for_ndrange</strong> (<br>
+ void (^block)(void));<br>
+</p><p class="tableblock"> uint <strong>get_kernel_max_sub_group_size_for_ndrange</strong> (<br>
const ndrange_t <em>ndrange</em>,<br>
void (^block)(local void *, …​));</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the maximum subgroup size for a block.</p></td>
@@ -11804,8 +11804,8 @@
</div>
<div id="footer">
<div id="footer-text">
-Version 2.2-7<br>
-Last updated 2018-05-12 14:11:33 BST
+Version 2.2-8<br>
+Last updated 2018-09-24 21:35:08 PDT
</div>
</div>
diff --git a/specs/2.2/html/OpenCL_ICD_Installation.html b/specs/2.2/html/OpenCL_ICD_Installation.html
index 676da61..e16989d 100644
--- a/specs/2.2/html/OpenCL_ICD_Installation.html
+++ b/specs/2.2/html/OpenCL_ICD_Installation.html
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.6.1">
+<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="Khronos OpenCL Working Group">
<title>OpenCL ICD Installation Guidelines</title>
<style>
@@ -841,9 +841,9 @@
<h1>OpenCL ICD Installation Guidelines</h1>
<div class="details">
<span id="author" class="author">Khronos OpenCL Working Group</span><br>
-<span id="revnumber">version 2.2-7,</span>
-<span id="revdate">Sat, 12 May 2018 13:21:29 +0000</span>
-<br><span id="revremark">from git branch: master commit: ab6da3001e9eeafaa36c18888ca7eb4ebb9768af</span>
+<span id="revnumber">version 2.2-8,</span>
+<span id="revdate">Mon, 08 Oct 2018 16:52:16 +0000</span>
+<br><span id="revremark">from git branch: master commit: b3cab22fcff5d8c17869907c983e259ddd7ce788</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@@ -1120,8 +1120,8 @@
</div>
<div id="footer">
<div id="footer-text">
-Version 2.2-7<br>
-Last updated 2018-05-03 23:50:18 BST
+Version 2.2-8<br>
+Last updated 2018-09-24 21:35:08 PDT
</div>
</div>
diff --git a/specs/2.2/pdf/OpenCL_API.pdf b/specs/2.2/pdf/OpenCL_API.pdf
index c3fab86..24aed24 100644
--- a/specs/2.2/pdf/OpenCL_API.pdf
+++ b/specs/2.2/pdf/OpenCL_API.pdf
Binary files differ
diff --git a/specs/2.2/pdf/OpenCL_C.pdf b/specs/2.2/pdf/OpenCL_C.pdf
index f9956f4..0e24429 100644
--- a/specs/2.2/pdf/OpenCL_C.pdf
+++ b/specs/2.2/pdf/OpenCL_C.pdf
Binary files differ
diff --git a/specs/2.2/pdf/OpenCL_Cxx.pdf b/specs/2.2/pdf/OpenCL_Cxx.pdf
index 4f29345..0143df9 100644
--- a/specs/2.2/pdf/OpenCL_Cxx.pdf
+++ b/specs/2.2/pdf/OpenCL_Cxx.pdf
Binary files differ
diff --git a/specs/2.2/pdf/OpenCL_Env.pdf b/specs/2.2/pdf/OpenCL_Env.pdf
index 687bfb1..862a2b4 100644
--- a/specs/2.2/pdf/OpenCL_Env.pdf
+++ b/specs/2.2/pdf/OpenCL_Env.pdf
Binary files differ
diff --git a/specs/2.2/pdf/OpenCL_Ext.pdf b/specs/2.2/pdf/OpenCL_Ext.pdf
index e7acd68..e428245 100644
--- a/specs/2.2/pdf/OpenCL_Ext.pdf
+++ b/specs/2.2/pdf/OpenCL_Ext.pdf
Binary files differ
diff --git a/specs/2.2/pdf/OpenCL_ICD_Installation.pdf b/specs/2.2/pdf/OpenCL_ICD_Installation.pdf
index bb85de4..98f495a 100644
--- a/specs/2.2/pdf/OpenCL_ICD_Installation.pdf
+++ b/specs/2.2/pdf/OpenCL_ICD_Installation.pdf
Binary files differ