TILESTORED
存储图纸
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
VEX.128.F3.0F38.W0 4B !(11):rrr:100 | TILESTORED sibmem, tmm1 | A | 有效 | 不可编码 | 按 tmm1 中的规定在 sibmem 中存储一个瓦片。 |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
A
modrm.rmescrituraModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移modrm.reglecturaModRM 字节的 reg 字段(第 5-3 位)
实测开销
正在从 arch-data 加载实测数据...
说明
此指令需要使用 SIB 地址 。 指数登记表是一个前进指标。 如果 SIB 编码省略了索引寄存器,则假定指数寄存器的内容值为零. 本指令存储了由瓦片配置指定的行和列的瓦片源. TILECFG数据中的TILECFG.start_row应初始化为"0",以存储整个瓦片,并在成功完成TILESTORED指令时设定为零. TILESTORED是一个可重启指令,当指令执行期间发生可重启事件时,TILECFG.start_row将是非零. 只支持内存操作数,只能使用SIB地址模式访问,类似于V[P]GATHER/V[P]SCATTER指令. 在 Intel TSX 交易中执行 TILESTORED 指令的任何尝试都会导致交易中止.
行动
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 := startIntel C/C++ 内在编译器
TILESTORED void _tile_stored(__tile src, void *base, int stride);受影响的旗帜
None.
例外 AMX-E3;详见第2.10节,"Intel(R) AMX 指令例外类",详见.