Changes between Version 1 and Version 2 of ClrxAsmRocm


Ignore:
Timestamp:
12/08/16 23:00:21 (7 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ClrxAsmRocm

    v1 v2  
    3535Set call convention for kernel.</p>
    3636<h3>.codeversion</h3>
    37 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     37<p>Syntax .codeversion MAJOR, MINOR</p>
     38<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set AMD code version.</p>
    3839<h3>.config</h3>
     40<p>Open kernel configuration. Must be inside kernel.</p>
    3941<h3>.control_directive</h3>
     42<p>Open control directive section. This section must be 128 bytes. The content of this
     43section will be stored in control_directive field in kernel configuration.
     44Must be defined inside kernel.</p>
    4045<h3>.debug_private_segment_buffer_sgpr</h3>
    41 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     46<p>Syntax: .debug_private_segment_buffer_sgpr SGPRREG</p>
     47<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     48<code>debug_private_segment_buffer_sgpr</code> field in kernel configuration.</p>
    4249<h3>.debug_wavefront_private_segment_offset_sgpr</h3>
    43 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     50<p>Syntax: .debug_wavefront_private_segment_offset_sgpr SGPRREG</p>
     51<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     52<code>debug_wavefront_private_segment_offset_sgpr</code> field in kernel configuration.</p>
    4453<h3>.debugmode</h3>
    4554<p>This pseudo-op must be inside kernel configuration (<code>.config</code>).
     
    5362Enable usage of the DX10_CLAMP.</p>
    5463<h3>.exceptions</h3>
    55 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     64<p>Syntax: .exceptions EXCPMASK</p>
     65<p>This pseudo-op must be inside kernel configuration (<code>.config</code>).
     66Set exception mask in PGMRSRC2 register value. Value should be 7-bit.</p>
    5667<h3>.fkernel</h3>
     68<p>Mark given kernel as function in ROCm. Must be inside kernel.</p>
    5769<h3>.floatmode</h3>
    58 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     70<p>Syntax: .floatmode BYTE-VALUE</p>
     71<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Defines float-mode.
     72Set floatmode (FP_ROUND and FP_DENORM fields of the MODE register). Default value is 0xc0.</p>
    5973<h3>.gds_segment_size</h3>
    6074<p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
    6175<h3>.group_segment_align</h3>
    62 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     76<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     77<code>gds_segment_byte_size</code> field in kernel configuration.</p>
    6378<h3>.ieeemode</h3>
    64 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     79<p>Syntax: .ieeemode</p>
     80<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set ieee-mode.</p>
    6581<h3>.kcode</h3>
     82<p>Syntax: .kcode KERNEL1,....<br />
     83Syntax: .kcode +</p>
     84<p>Open code that will be belonging to specified kernels. By default any code between
     85two consecutive kernel labels belongs to the kernel with first label name.
     86This pseudo-operation can change membership of the code to specified kernels.
     87You can nest this <code>.kcode</code> any times. Just next .kcode adds or remove membership code
     88to kernels. The most important reason why this feature has been added is register usage
     89calculation. Any kernel given in this pseudo-operation must be already defined.</p>
     90<p>Sample usage:</p>
     91<p><code>.kcode + # this code belongs to all kernels
     92.kcodeend
     93.kcode kernel1, kernel2 #  this code belongs to kernel1, kernel2
     94    .kcode -kernel1 #  this code belongs only to kernel2 (kernel1 removed)
     95    .kcodeend
     96.kcodeend</code></p>
    6697<h3>.kcodeend</h3>
     98<p>Close <code>.kcode</code> clause. Refer to <code>.kcode</code>.</p>
    6799<h3>.kernarg_segment_align</h3>
    68 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     100<p>Syntax: .kernarg_segment_align ALIGN</p>
     101<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     102<code>kernarg_segment_alignment</code> field in kernel configuration. Value must be a power of two.</p>
    69103<h3>.kernarg_segment_size</h3>
    70 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     104<p>Syntax: .kernarg_segment_size SIZE</p>
     105<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     106<code>kernarg_segment_byte_size</code> field in kernel configuration.</p>
    71107<h3>.kernel_code_entry_offset</h3>
    72 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     108<p>Syntax: .kernel_code_entry_offset OFFSET</p>
     109<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     110<code>kernel_code_entry_byte_offset</code> field in kernel configuration. This field
     111store offset between configuration and kernel code. By default is 256.</p>
    73112<h3>.kernel_code_prefetch_offset</h3>
    74 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     113<p>Syntax: .kernel_code_prefetch_offset OFFSET</p>
     114<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     115<code>kernel_code_prefetch_byte_offset</code> field in kernel configuration.</p>
    75116<h3>.kernel_code_prefetch_size</h3>
    76 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     117<p>Syntax: .kernel_code_prefetch_size OFFSET</p>
     118<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     119<code>kernel_code_prefetch_byte_size</code> field in kernel configuration.</p>
    77120<h3>.localsize</h3>
    78 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     121<p>Syntax: .localsize SIZE</p>
     122<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Defines initial
     123local memory size used by kernel.</p>
    79124<h3>.machine</h3>
    80 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     125<p>Syntax: .machine KIND, MAJOR, MINOR, STEPPING</p>
     126<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     127machine version fields in kernel configuration.</p>
    81128<h3>.max_scratch_backing_memory</h3>
    82 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     129<p>Syntax: .max_scratch_backing_memory SIZE</p>
     130<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     131<code>max_scratch_backing_memory_byte_size</code> field in kernel configuration.</p>
    83132<h3>.pgmrsrc1</h3>
    84 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     133<p>Syntax: .pgmrsrc1 VALUE</p>
     134<p>This pseudo-op must be inside kernel configuration (<code>.config</code>).
     135Defines value of the PGMRSRC1.</p>
    85136<h3>.pgmrsrc2</h3>
    86 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     137<p>Syntax: .pgmrsrc2 VALUE</p>
     138<p>This pseudo-op must be inside kernel configuration (<code>.config</code>).
     139Defines value of the PGMRSRC2. If dimensions is set then bits that controls dimension setup
     140will be ignored. SCRATCH_EN bit will be ignored.</p>
    87141<h3>.priority</h3>
    88 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     142<p>Syntax: .priority PRIORITY</p>
     143<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Defines priority (0-3).</p>
    89144<h3>.private_elem_size</h3>
    90 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     145<p>Syntax: .private_elem_size ELEMSIZE</p>
     146<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set <code>private_element_size</code>
     147field in kernel configuration. Must be a power of two between 2 and 16.</p>
    91148<h3>.private_segment_align</h3>
    92 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     149<p>Syntax: .private_segment ALIGN</p>
     150<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     151<code>private_segment_alignment</code> field in kernel configuration. Value must be a power of two.</p>
    93152<h3>.privmode</h3>
    94 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     153<p>This pseudo-op must be inside kernel configuration (<code>.config</code>).
     154Enable usage of the PRIV (privileged mode).</p>
    95155<h3>.reserved_sgprs</h3>
    96 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     156<p>Syntax: .reserved_sgprs FIRSTREG, LASTREG</p>
     157<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     158<code>reserved_sgpr_first</code> and <code>reserved_sgpr_count</code> fields in kernel configuration.
     159<code>reserved_sgpr_count</code> filled by number of registers (LASTREG-FIRSTREG+1).</p>
    97160<h3>.reserved_vgprs</h3>
    98 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     161<p>Syntax: .reserved_vgprs FIRSTREG, LASTREG</p>
     162<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     163<code>reserved_vgpr_first</code> and <code>reserved_vgpr_count</code> fields in kernel configuration.
     164<code>reserved_vgpr_count</code> filled by number of registers (LASTREG-FIRSTREG+1).</p>
    99165<h3>.runtime_loader_kernel_symbol</h3>
    100 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     166<p>Syntax: .runtime_loader_kernel_symbol ADDRESS</p>
     167<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     168<code>runtime_loader_kernel_symbol</code> field in kernel configuration.</p>
    101169<h3>.scratchbuffer</h3>
    102 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     170<p>Syntax: .scratchbuffer SIZE</p>
     171<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Defines scratchbuffer size.</p>
    103172<h3>.sgprsnum</h3>
    104 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     173<p>Syntax: .sgprsnum REGNUM</p>
     174<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set number of scalar
     175registers which can be used during kernel execution.</p>
    105176<h3>.tgsize</h3>
    106 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     177<p>This pseudo-op must be inside kernel configuration (<code>.config</code>).
     178Enable usage of the TG_SIZE_EN.</p>
    107179<h3>.use_debug_enabled</h3>
    108 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     180<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable <code>is_debug_enabled</code>
     181field in kernel configuration.</p>
    109182<h3>.use_dispatch_id</h3>
    110 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     183<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     184<code>enable_sgpr_dispatch_id</code> field in kernel configuration.</p>
    111185<h3>.use_dispatch_ptr</h3>
    112 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     186<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     187<code>enable_sgpr_dispatch_ptr</code> field in kernel configuration.</p>
    113188<h3>.use_dynamic_call_stack</h3>
    114 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     189<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     190<code>is_dynamic_call_stack</code> field in kernel configuration.</p>
    115191<h3>.use_flat_scratch_init</h3>
    116 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     192<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     193<code>enable_sgpr_flat_scratch_init</code> field in kernel configuration.</p>
    117194<h3>.use_grid_workgroup_count</h3>
    118 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     195<p>Syntax: .use_grid_workgroup_count DIMENSIONS</p>
     196<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     197<code>enable_sgpr_grid_workgroup_count_X</code>, <code>enable_sgpr_grid_workgroup_count_Y</code>
     198and <code>enable_sgpr_grid_workgroup_count_Z</code> fields in kernel configuration,
     199respectively by given dimensions.</p>
    119200<h3>.use_kernarg_segment_ptr</h3>
    120 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     201<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     202<code>enable_sgpr_kernarg_segment_ptr</code> field in kernel configuration.</p>
    121203<h3>.use_ordered_append_gds</h3>
    122 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     204<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     205<code>enable_ordered_append_gds</code> field in kernel configuration.</p>
    123206<h3>.use_private_segment_buffer</h3>
    124 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     207<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     208<code>enable_sgpr_private_segment_buffer</code> field in kernel configuration.</p>
    125209<h3>.use_private_segment_size</h3>
    126 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     210<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     211<code>enable_sgpr_private_segment_size</code> field in kernel configuration.</p>
    127212<h3>.use_ptr64</h3>
    128 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     213<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable <code>is_ptr64</code> field
     214in kernel configuration.</p>
    129215<h3>.use_queue_ptr</h3>
    130 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     216<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     217<code>enable_sgpr_queue_ptr</code> field in kernel configuration.</p>
    131218<h3>.use_xnack_enabled</h3>
    132 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     219<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Enable
     220<code>is_xnack_enabled</code> field in kernel configuration.</p>
    133221<h3>.userdatanum</h3>
    134 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     222<p>Syntax: .userdatanum NUMBER</p>
     223<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set number of
     224registers for USERDATA.</p>
    135225<h3>.vgprsnum</h3>
    136 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     226<p>Syntax: .vgprsnum REGNUM</p>
     227<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set number of vector
     228registers which can be used during kernel execution.</p>
    137229<h3>.wavefront_sgpr_count</h3>
    138 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     230<p>Syntax: .wavefront_sgpr_count REGNUM</p>
     231<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     232<code>wavefront_sgpr_count</code> field in kernel configuration.</p>
    139233<h3>.wavefront_size</h3>
    140 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     234<p>Syntax: .wavefront_size POWEROFTWO</p>
     235<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set <code>wavefront_size</code>
     236field in kernel configuration. Value must be a power of two.</p>
    141237<h3>.workgroup_fbarrier_count</h3>
    142 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     238<p>Syntax: .workgroup_fbarrier_count COUNT</p>
     239<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     240<code>workgroup_fbarrier_count</code> field in kernel configuration.</p>
    143241<h3>.workgroup_group_segment_size</h3>
    144 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     242<p>Syntax: .workgroup_group_segment_size SIZE</p>
     243<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     244<code>workgroup_group_segment_byte_size</code> in kernel configuration.</p>
    145245<h3>.workitem_private_segment_size</h3>
    146 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     246<p>Syntax: .workitem_private_segment_size SIZE</p>
     247<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     248<code>workitem_private_segment_byte_size</code> field in kernel configuration.</p>
    147249<h3>.workitem_vgpr_count</h3>
    148 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p>
     250<p>Syntax: .workitem_vgpr_count REGNUM</p>
     251<p>This pseudo-op must be inside kernel configuration (<code>.config</code>). Set
     252<code>workitem_vgpr_count</code> field in kernel configuration.</p>
    149253}}}