TILELOADD, TILELOADDT1
装入图纸
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
VEX.128.F2.0F38.W0 4B !(11):rrr:100 | TILELOADD tmm1, sibmem | A | 有效 | 不可编码 | 将数据装入 tmm1 中,由 sibmem 中的信息指定. |
VEX.128.66.0F38.W0 4B !(11):rrr:100 | TILELOADDT1 tmm1, sibmem | A | 有效 | 不可编码 | 将数据装入 tmm1,由sibmem中的信息指定,并提示优化数据缓存. |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
A
modrm.regescrituraModRM 字节的 reg 字段(第 5-3 位)modrm.rmlecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
实测开销
正在从 arch-data 加载实测数据...
说明
此指令需要使用 SIB 地址 。 指数登记表是一个前进指标。 如果 SIB 编码省略了索引寄存器,则假定指数寄存器的内容值为零.
本指令加载一个有瓦片配置指定的行和列的瓦片目的地。 "T1"版本为执行提供了一个提示,即数据将被重用,但不需要居住在最近的缓存级别.
TILECFG数据中的TILECFG.start_row应初始化为"0",以便加载整个瓦片,并在成功完成TILELOADD指令时设定为零. TILELOADD是一个可重启指令,当指令执行期间发生可重启事件时,TILECFG.start_row将是非零.
只支持内存操作数,只能使用SIB地址模式访问,类似于V[P]GATHER/V[P]SCATTER指令.
任何试图在一次Intel TSX交易中执行TILELOADD/TILELOADDT1指令的尝试都会导致交易中止.
行动
TILELOADD[,T1] tdest, tsib
start := tilecfg.start_row
zero_upper_rows(tdest,start)
membegin := tsib.base + displacement
// if no index register in the SIB encoding, the value zero is used.
stride := tsib.index << tsib.scale
nbytes := tdest.colsb
while start < tdest.rows:
memptr := membegin + start * stride
write_row_and_zero(tdest, start, read_memory(memptr, nbytes), nbytes)
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++ 内在编译器
TILELOADD void _tile_loadd(__tile dst, const void *base, int stride);
TILELOADDT1 void _tile_stream_loadd(__tile dst, const void *base, int stride);受影响的旗帜
None.
例外 AMX-E3;详见第2.10节,"Intel(R) AMX 指令例外类",详见.