summaryrefslogtreecommitdiff
path: root/devdocs/gcc~13/amd-gcn-function-attributes.html
blob: 2f4dd4be888bb64b7cebb8a08906c934249dbf3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<div class="subsection-level-extent" id="AMD-GCN-Function-Attributes"> <div class="nav-panel"> <p> Next: <a href="arc-function-attributes" accesskey="n" rel="next">ARC Function Attributes</a>, Previous: <a href="aarch64-function-attributes" accesskey="p" rel="prev">AArch64 Function Attributes</a>, Up: <a href="function-attributes" accesskey="u" rel="up">Declaring Attributes of Functions</a> [<a href="index#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="indices" title="Index" rel="index">Index</a>]</p> </div>  <h1 class="subsection" id="AMD-GCN-Function-Attributes-1"><span>6.33.3 AMD GCN Function Attributes<a class="copiable-link" href="#AMD-GCN-Function-Attributes-1"> ¶</a></span></h1> <p>These function attributes are supported by the AMD GCN back end: </p> <dl class="table"> <dt>
<span><code class="code">amdgpu_hsa_kernel</code><a class="copiable-link" href="#index-amdgpu_005fhsa_005fkernel-function-attribute_002c-AMD-GCN"> ¶</a></span>
</dt> <dd>
<p>This attribute indicates that the corresponding function should be compiled as a kernel function, that is an entry point that can be invoked from the host via the HSA runtime library. By default functions are only callable only from other GCN functions. </p> <p>This attribute is implicitly applied to any function named <code class="code">main</code>, using default parameters. </p> <p>Kernel functions may return an integer value, which will be written to a conventional place within the HSA "kernargs" region. </p> <p>The attribute parameters configure what values are passed into the kernel function by the GPU drivers, via the initial register state. Some values are used by the compiler, and therefore forced on. Enabling other options may break assumptions in the compiler and/or run-time libraries. </p> <dl class="table"> <dt><code class="code">private_segment_buffer</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_private_segment_buffer</code> flag. Always on (required to locate the stack). </p> </dd> <dt><code class="code">dispatch_ptr</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_dispatch_ptr</code> flag. Always on (required to locate the launch dimensions). </p> </dd> <dt><code class="code">queue_ptr</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_queue_ptr</code> flag. Always on (required to convert address spaces). </p> </dd> <dt><code class="code">kernarg_segment_ptr</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_kernarg_segment_ptr</code> flag. Always on (required to locate the kernel arguments, "kernargs"). </p> </dd> <dt><code class="code">dispatch_id</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_dispatch_id</code> flag. </p> </dd> <dt><code class="code">flat_scratch_init</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_flat_scratch_init</code> flag. </p> </dd> <dt><code class="code">private_segment_size</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_private_segment_size</code> flag. </p> </dd> <dt><code class="code">grid_workgroup_count_X</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_grid_workgroup_count_x</code> flag. Always on (required to use OpenACC/OpenMP). </p> </dd> <dt><code class="code">grid_workgroup_count_Y</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_grid_workgroup_count_y</code> flag. </p> </dd> <dt><code class="code">grid_workgroup_count_Z</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_grid_workgroup_count_z</code> flag. </p> </dd> <dt><code class="code">workgroup_id_X</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_workgroup_id_x</code> flag. </p> </dd> <dt><code class="code">workgroup_id_Y</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_workgroup_id_y</code> flag. </p> </dd> <dt><code class="code">workgroup_id_Z</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_workgroup_id_z</code> flag. </p> </dd> <dt><code class="code">workgroup_info</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_workgroup_info</code> flag. </p> </dd> <dt><code class="code">private_segment_wave_offset</code></dt> <dd>
<p>Set <code class="code">enable_sgpr_private_segment_wave_byte_offset</code> flag. Always on (required to locate the stack). </p> </dd> <dt><code class="code">work_item_id_X</code></dt> <dd>
<p>Set <code class="code">enable_vgpr_workitem_id</code> parameter. Always on (can’t be disabled). </p> </dd> <dt><code class="code">work_item_id_Y</code></dt> <dd>
<p>Set <code class="code">enable_vgpr_workitem_id</code> parameter. Always on (required to enable vectorization.) </p> </dd> <dt><code class="code">work_item_id_Z</code></dt> <dd>
<p>Set <code class="code">enable_vgpr_workitem_id</code> parameter. Always on (required to use OpenACC/OpenMP). </p> </dd> </dl> </dd> </dl> </div>  <div class="nav-panel"> <p> Next: <a href="arc-function-attributes">ARC Function Attributes</a>, Previous: <a href="aarch64-function-attributes">AArch64 Function Attributes</a>, Up: <a href="function-attributes">Declaring Attributes of Functions</a> [<a href="index#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="indices" title="Index" rel="index">Index</a>]</p> </div><div class="_attribution">
  <p class="_attribution-p">
    &copy; Free Software Foundation<br>Licensed under the GNU Free Documentation License, Version 1.3.<br>
    <a href="https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/AMD-GCN-Function-Attributes.html" class="_attribution-link">https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/AMD-GCN-Function-Attributes.html</a>
  </p>
</div>