Changes between Version 1 and Version 2 of ClrxAsmRocm
- Timestamp:
- 12/08/16 23:00:21 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ClrxAsmRocm
v1 v2 35 35 Set call convention for kernel.</p> 36 36 <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> 38 39 <h3>.config</h3> 40 <p>Open kernel configuration. Must be inside kernel.</p> 39 41 <h3>.control_directive</h3> 42 <p>Open control directive section. This section must be 128 bytes. The content of this 43 section will be stored in control_directive field in kernel configuration. 44 Must be defined inside kernel.</p> 40 45 <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> 42 49 <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> 44 53 <h3>.debugmode</h3> 45 54 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>). … … 53 62 Enable usage of the DX10_CLAMP.</p> 54 63 <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>). 66 Set exception mask in PGMRSRC2 register value. Value should be 7-bit.</p> 56 67 <h3>.fkernel</h3> 68 <p>Mark given kernel as function in ROCm. Must be inside kernel.</p> 57 69 <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. 72 Set floatmode (FP_ROUND and FP_DENORM fields of the MODE register). Default value is 0xc0.</p> 59 73 <h3>.gds_segment_size</h3> 60 74 <p>This pseudo-op must be inside kernel configuration (<code>.config</code>).</p> 61 75 <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> 63 78 <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> 65 81 <h3>.kcode</h3> 82 <p>Syntax: .kcode KERNEL1,....<br /> 83 Syntax: .kcode +</p> 84 <p>Open code that will be belonging to specified kernels. By default any code between 85 two consecutive kernel labels belongs to the kernel with first label name. 86 This pseudo-operation can change membership of the code to specified kernels. 87 You can nest this <code>.kcode</code> any times. Just next .kcode adds or remove membership code 88 to kernels. The most important reason why this feature has been added is register usage 89 calculation. 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> 66 97 <h3>.kcodeend</h3> 98 <p>Close <code>.kcode</code> clause. Refer to <code>.kcode</code>.</p> 67 99 <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> 69 103 <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> 71 107 <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 111 store offset between configuration and kernel code. By default is 256.</p> 73 112 <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> 75 116 <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> 77 120 <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 123 local memory size used by kernel.</p> 79 124 <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 127 machine version fields in kernel configuration.</p> 81 128 <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> 83 132 <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>). 135 Defines value of the PGMRSRC1.</p> 85 136 <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>). 139 Defines value of the PGMRSRC2. If dimensions is set then bits that controls dimension setup 140 will be ignored. SCRATCH_EN bit will be ignored.</p> 87 141 <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> 89 144 <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> 147 field in kernel configuration. Must be a power of two between 2 and 16.</p> 91 148 <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> 93 152 <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>). 154 Enable usage of the PRIV (privileged mode).</p> 95 155 <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> 97 160 <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> 99 165 <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> 101 169 <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> 103 172 <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 175 registers which can be used during kernel execution.</p> 105 176 <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>). 178 Enable usage of the TG_SIZE_EN.</p> 107 179 <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> 181 field in kernel configuration.</p> 109 182 <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> 111 185 <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> 113 188 <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> 115 191 <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> 117 194 <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> 198 and <code>enable_sgpr_grid_workgroup_count_Z</code> fields in kernel configuration, 199 respectively by given dimensions.</p> 119 200 <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> 121 203 <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> 123 206 <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> 125 209 <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> 127 212 <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 214 in kernel configuration.</p> 129 215 <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> 131 218 <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> 133 221 <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 224 registers for USERDATA.</p> 135 225 <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 228 registers which can be used during kernel execution.</p> 137 229 <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> 139 233 <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> 236 field in kernel configuration. Value must be a power of two.</p> 141 237 <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> 143 241 <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> 145 245 <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> 147 249 <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> 149 253 }}}