blob: f6a0b1edc55fbebc74b210bc30a238c5511d5ca4 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style xmlns="" type="text/css">
/* This style sets a margin around the entire page */
html, body {
margin: 10px;
}
p {
font: normal 16px verdana, sans-serif;
margin: 0;
padding-bottom:12px;
}
h1 {
font: bold 25px verdana, sans-serif;
margin-top: 0;
margin-bottom: 3px;
padding-top: 0;
padding-bottom: 0;
}
h2 {
font: bold 19px verdana, sans-serif;
margin-top: 28px;
margin-bottom: 3px;
padding-top: 0;
padding-bottom: 0;
}
h3 {
font: bold 19px verdana, sans-serif !important;
margin-top: 28px;
margin-bottom: 3px;
padding-top: 0;
padding-bottom: 0;
}
li {
font: normal 16px verdana, sans-serif;
margin-top: 0;
margin-bottom: 18px;
padding-top: 0;
padding-bottom: 0;
}
.pdparam {
font: italic 16px verdana, sans-serif;
}
.term {
font: italic 16px verdana, sans-serif;
font-weight: normal;
}
.type {
font: normal 16px verdana, sans-serif !important;
}
.parameter {
font-style: italic;
}
a:link, a:visited {
color: blue;
text-decoration: none;
font: normal 16px;
}
a:hover {
background-color: #FFFF99;
font: normal 16px;
}
div.funcsynopsis {
text-align: left;
background-color: #e6e6e6;
font: normal 16px verdana, sans-serif;
padding-top: 10px;
padding-bottom: 10px;
}
div.funcsynopsis table {
border-collapse: separate;
font: normal 16px verdana, sans-serif;
}
div.funcsynopsis td {
background-color: #e6e6e6;
border: 0 solid #000;
padding: 1px;
font: normal 16px verdana, sans-serif;
}
div.refsect1 {
font-family: verdana, sans-serif;
font-size: 16px;
}
code.constant {
font: normal 16px courier new, monospace !important;
}
span.errorname {
font: normal 16px verdana, sans-serif !important;
}
code.function {
font: bold 16px verdana, sans-serif !important;
}
b.fsfunc {
font: bold 16px verdana, sans-serif !important;
}
code.varname {
font: italic 16px verdana, sans-serif;
}
code.replaceable {
font: italic 16px courier new, monospace;
}
code.funcdef {
font: normal 16px verdana, sans-serif !important;
}
.citerefentry {
font: normal 16px verdana, sans-serif !important;
}
.parameter {
font-style: italic;
}
code.fsfunc {
font: normal 16px verdana, sans-serif !important;
}
/* PARAMETER: This style controls spacing between the terms in Parameter section */
dt {
margin-top: 15px;
}
/* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
div.refsect1 table {
width: 100%;
margin-top: 10px;
background-color: #FFF;
border-collapse: collapse;
border-color: #000;
border-width: 1px;
font: normal 16px verdana, sans-serif;
}
div.refsect1 th {
border-collapse: collapse;
border-color: #000;
border-width: 1px;
font: bold 16px verdana, sans-serif;
}
div.refsect1 td {
background-color: #FFF;
padding: 5px;
vertical-align: text-top;
border-collapse: collapse;
border-color: #000;
border-width: 1px;
font: normal 16px verdana, sans-serif;
}
div.refsect1 p{
font: normal 16px verdana, sans-serif;
margin-top: 8px;
margin-bottom: 8px;
padding-top: 0;
padding-bottom: 0;
}
/* EXAMPLE: These styles apply only to the Example section */
div.refsect2 {
font: normal 16px courier new, monospace !important;
}
div.refsect2 table {
margin-top: 0;
background-color: #e6e6e6;
width: 100%;
border: 0 solid #000;
padding: 2px;
font: normal 16px courier new, monospace !important;
}
div.refsect2 td {
background-color: #e6e6e6;
font: normal 16px courier new, monospace !important;
white-space:pre;
}
/* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
div.refsect3 {
font: normal 11px verdana, sans-serif;
margin-top: 50px;
margin-bottom: 20px;
padding-top: 0;
padding-bottom: 0;
}
</style>
<title>EXTENSION</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
<meta name="keywords" content=" &#10; EXTENSION&#10; " />
</head>
<body>
<div class="refentry">
<a id="idm1"></a>
<div class="titlepage"></div>
<div xmlns="" class="refnamediv">
<a xmlns="http://www.w3.org/1999/xhtml" id="EXTENSION"></a>
<h1>EXTENSION</h1>
<p>
A #pragma directive to set the behavior for OpenCL extensions.
</p>
</div>
<div class="refsect2">
<a id="synopsis"></a>
<h3>
</h3>
<div class="informaltable">
<table class="informaltable" border="0">
<colgroup>
<col align="left" class="col1" />
</colgroup>
<tbody>
<tr>
<td align="left">
#pragma OPENCL EXTENSION <code class="varname">extension_name</code> : <code class="varname">behavior</code>
#pragma OPENCL EXTENSION all : <code class="varname">behavior</code>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="refsect1">
<a id="parameters"></a>
<h2>Parameters</h2>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="varname">
extension_name
</code>
</span>
</dt>
<dd>
<p>
The name of the extension. The extension_name will have names of the form <code class="function">cl_khr_</code>&lt;<code class="varname">name</code>&gt; for an extension approved by the OpenCL working group and will have
names of the form <code class="function">cl_</code>&lt;<code class="varname">vendor_name</code>&gt;_&lt;<code class="varname">name</code>&gt; for vendor extensions. The token <code class="function">all</code> means that the behavior applies to all extensions supported by the compiler. The table below shows the legal values for <code class="varname">extension_name</code>:
</p>
<div class="informaltable">
<table class="informaltable" border="1">
<colgroup>
<col align="left" class="col1" />
<col align="left" class="col2" />
</colgroup>
<thead>
<tr>
<th align="left">Extension name</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_fp64.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_fp64</span>
</span>
</a>
</td>
<td align="left">Double precision floating-point</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_select_fprounding_mode.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_select_fprounding_mode</span>
</span>
</a>
</td>
<td align="left">Specify rounding mode</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_global_int32_base_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_global_int32_base_atomics</span>
</span>
</a>
</td>
<td align="left">32-bit global integer base atomic operations</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_global_int32_extended_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_global_int32_extended_atomics</span>
</span>
</a>
</td>
<td align="left">32-bit global integer extended atomic operations</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_local_int32_base_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_local_int32_base_atomics</span>
</span>
</a>
</td>
<td align="left">32-bit local integer base atomic operations</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_local_int32_extended_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_local_int32_extended_atomics</span>
</span>
</a>
</td>
<td align="left">32-bit local integer extended atomic operations</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_int64_base_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_int64_base_atomics</span>
</span>
</a>
</td>
<td align="left">64-bit integer base atomic operations</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_int64_extended_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_int64_extended_atomics</span>
</span>
</a>
</td>
<td align="left">64-bit integer extended atomic operations</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_3d_image_writes.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_3d_image_writes</span>
</span>
</a>
</td>
<td align="left">Writes to 3D image objects</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_byte_addressable_store.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_byte_addressable_store</span>
</span>
</a>
</td>
<td align="left">Allow byte addressible stores</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_fp16.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_fp16</span>
</span>
</a>
</td>
<td align="left">Half-precision floating-point</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="gl_sharing.html">
<span class="citerefentry">
<span class="refentrytitle">CL_APPLE_gl_sharing</span>
</span>
</a>
</td>
<td align="left">MacOS X OpenGL sharing</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="gl_sharing.html">
<span class="citerefentry">
<span class="refentrytitle">CL_KHR_gl_sharing</span>
</span>
</a>
</td>
<td align="left">OpenGL sharing</td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt>
<span class="term">
<code class="varname">
behavior
</code>
</span>
</dt>
<dd>
<p>
One of the following values:
</p>
<div class="informaltable">
<table class="informaltable" border="1">
<colgroup>
<col align="left" class="col1" />
<col align="left" class="col2" />
</colgroup>
<thead>
<tr>
<th align="left">behavior</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">require</td>
<td align="left"><div class="literallayout"><p>Behave as specified by the extension <code class="varname">extension_name</code>.<br />
<br />
Report an error on the <code class="function">#pragma OPENCL EXTENSION</code> if the<br />
<code class="varname">extension_name</code> is not supported, or if <code class="function">all</code> is specified.</p></div>
</td>
</tr>
<tr>
<td align="left">disable</td>
<td align="left">Behave (including issuing errors and warnings) as if the extension <code class="varname">extension_name</code> is not part of the language definition.
If <code class="function">all</code> is specified, then behavior must revert back to that of the non-extended core version of the language being compiled to.
Warn on the <code class="function">#pragma OPENCL EXTENSION</code> if the extension <code class="varname">extension_name</code> is not supported.
</td>
</tr>
</tbody>
</table>
</div>
</dd>
</dl>
</div>
</div>
<div class="refsect1">
<a id="description"></a>
<h2>Description</h2>
<p>
The <code class="function">#pragma OPENCL EXTENSION</code> directive is a simple, low-level mechanism to set the behavior for each extension. It does not define policies such as which combinations are appropriate; those must be defined elsewhere. The order of directives matter in setting the behavior for each extension. Directives that occur later override those seen earlier. The <code class="function">all</code>
variant sets the behavior for all extensions, overriding all previously issued extension directives, but only if the <code class="varname">behavior</code> is set to <code class="function">disable</code>.
</p>
<p>
The initial state of the compiler is as if the directive <code class="constant">#pragma OPENCL EXTENSION all : disable</code> was issued, telling the compiler that all error and warning reporting must be done according to this specification, ignoring any extensions.
</p>
<p>
Every extension which affects the OpenCL language semantics, syntax or adds built-in functions to the language must create a preprocessor <code class="constant">#define</code> that matches the extension name string. This <code class="constant">#define</code> would be available in the language if and only if the extension is supported on a given implementation.
</p>
</div>
<div class="refsect2">
<a id="example1"></a>
<h3>
Example
</h3>
<p>
An extension which adds the extension string "<code class="function">cl_khr_fp64</code>" should also add a preprocessor
<code class="function">#define</code> called <code class="function">cl_khr_fp64</code>. A kernel can now use this preprocessor <code class="constant">#define</code> to do something like the following:
</p>
<div class="informaltable">
<table class="informaltable" border="0">
<colgroup>
<col align="left" class="col1" />
</colgroup>
<tbody>
<tr>
<td align="left">
#ifdef cl_khr_fp64
// do something using the extension
#else
// do something else or #error!
#endif
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="refsect1">
<a id="specification"></a>
<h2>Specification</h2>
<p>
<img src="pdficon_small1.gif" />
<a href="http://www.khronos.org/registry/cl/specs/opencl-1.0.pdf#page=223" target="OpenCL Spec">OpenCL Specification</a>
</p>
</div>
<div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2009 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
</div>
</div>
</body>
</html>