forked from NRZCode/ia32-64
76 lines
3.7 KiB
HTML
76 lines
3.7 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:x86="http://www.felixcloutier.com/x86"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="style.css"></link><title>TILESTORED
|
||
— Store Tile</title></head><body><header><nav><ul><li><a href='index.html'>Index</a></li><li>December 2023</li></ul></nav></header><h1>TILESTORED
|
||
— Store Tile</h1>
|
||
|
||
<table>
|
||
<tr>
|
||
<th>Opcode/Instruction</th>
|
||
<th>Op/En</th>
|
||
<th>64/32 bit Mode Support</th>
|
||
<th>CPUID Feature Flag</th>
|
||
<th>Description</th></tr>
|
||
<tr>
|
||
<td>VEX.128.F3.0F38.W0 4B !(11):rrr:100 TILESTORED sibmem, tmm1</td>
|
||
<td>A</td>
|
||
<td>V/N.E.</td>
|
||
<td>AMX-TILE</td>
|
||
<td>Store a tile in sibmem as specified in tmm1.</td></tr></table>
|
||
<h2 id="instruction-operand-encoding">Instruction Operand Encoding<a class="anchor" href="#instruction-operand-encoding">
|
||
¶
|
||
</a></h2>
|
||
<table>
|
||
<tr>
|
||
<th>Op/En</th>
|
||
<th>Tuple</th>
|
||
<th>Operand 1</th>
|
||
<th>Operand 2</th>
|
||
<th>Operand 3</th>
|
||
<th>Operand 4</th></tr>
|
||
<tr>
|
||
<td>A</td>
|
||
<td>N/A</td>
|
||
<td>ModRM:r/m (w)</td>
|
||
<td>ModRM:reg (r)</td>
|
||
<td>N/A</td>
|
||
<td>N/A</td></tr></table>
|
||
<h2 id="description">Description<a class="anchor" href="#description">
|
||
¶
|
||
</a></h2>
|
||
<p>This instruction is required to use SIB addressing. The index register serves as a stride indicator. If the SIB encoding omits an index register, the value zero is assumed for the content of the index register.</p>
|
||
<p>This instruction stores a tile source of rows and columns as specified by the tile configuration.</p>
|
||
<p>The TILECFG.start_row in the TILECFG data should be initialized to '0' in order to store the entire tile and are set to zero on successful completion of the TILESTORED instruction. TILESTORED is a restartable instruction and the TILECFG.start_row will be non-zero when restartable events occur during the instruction execution.</p>
|
||
<p>Only memory operands are supported and they can only be accessed using a SIB addressing mode, similar to the V[P]GATHER*/V[P]SCATTER* instructions.</p>
|
||
<p>Any attempt to execute the TILESTORED instruction inside an Intel TSX transaction will result in a transaction abort.</p>
|
||
<h2 id="operation">Operation<a class="anchor" href="#operation">
|
||
¶
|
||
</a></h2>
|
||
<pre>TILESTORED tsib, tsrc
|
||
start := tilecfg.start_row
|
||
membegin := tsib.base + displacement
|
||
// if no index register in the SIB encoding, the value zero is used.
|
||
stride := tsib.index << tsib.scale
|
||
while start < tdest.rows:
|
||
memptr := membegin + start * stride
|
||
write_memory(memptr, tsrc.colsb, tsrc.row[start])
|
||
start := start + 1
|
||
zero_tilecfg_start()
|
||
// In the case of a memory fault in the middle of an instruction, the tilecfg.start_row := start
|
||
</pre>
|
||
<h2 id="intel-c-c++-compiler-intrinsic-equivalent">Intel C/C++ Compiler Intrinsic Equivalent<a class="anchor" href="#intel-c-c++-compiler-intrinsic-equivalent">
|
||
¶
|
||
</a></h2>
|
||
<pre>TILESTORED void _tile_stored(__tile src, void *base, int stride);
|
||
</pre>
|
||
<h2 id="flags-affected">Flags Affected<a class="anchor" href="#flags-affected">
|
||
¶
|
||
</a></h2>
|
||
<p>None.</p>
|
||
<h2 class="exceptions" id="exceptions">Exceptions<a class="anchor" href="#exceptions">
|
||
¶
|
||
</a></h2>
|
||
<p>AMX-E3; see Section 2.10, “Intel® AMX Instruction Exception Classes,” for details.</p><footer><p>
|
||
This UNOFFICIAL, mechanically-separated, non-verified reference is provided for convenience, but it may be
|
||
inc<span style="opacity: 0.2">omp</span>lete or b<sub>r</sub>oke<sub>n</sub> in various obvious or non-obvious
|
||
ways. Refer to <a href="https://software.intel.com/en-us/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4">Intel® 64 and IA-32 Architectures Software Developer’s Manual</a> for anything serious.
|
||
</p></footer></body></html>
|