tilestored
Store Tile Data
Stores data from an AMX tile register to memory.
Details
Stores a rectangular block of 32-bit doubleword elements from an AMX tile register to memory in row-major order, respecting the tile configuration dimensions. The destination memory address is typically formed from a base register and a stride register. This is a non-faulting instruction that outputs only the configured rows and columns. Requires AMX-TILE extension and valid tile configuration.
Pseudocode Operation
stride ← (addressing mode determines memory stride); rows ← tilecfg_state.rows[tmm_src]; cols ← tilecfg_state.cols[tmm_src]; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { m[base + i*stride + j*4] ← tmm_src[i, j]; } }
Example
Encoding
Operands
-
dest
Memory operand -
src
AMX tile register
Reference (Intel® SDM)
Instruction Forms
| Opcode | Instruction | Op/En | 64/32-bit Mode | CPUID | Description |
|---|---|---|---|---|---|
| VEX.128.F3.0F38.W0 4B !(11):rrr:100 | TILESTORED sibmem, tmm1 | A | V/N.E. | AMX_TILE | Store a tile in sibmem as specified in tmm1. |
Instruction Operand Encoding
| Op/En | Tuple Type | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
|---|---|---|---|---|---|
| A | N/A | ModRM:r/m (w) | ModRM:reg (r) | N/A | N/A |
Description
Operation
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
Intel C/C++ Compiler Intrinsic Equivalent
TILESTORED void _tile_stored(__tile src, void *base, int stride);
Flags Affected
None. Exceptions AMX-E3; see Section 2.10, “Intel® AMX Instruction Exception Classes,” for details. TILESTORED—Store Tile Vol. 2B 4-726