STTILECFG

存储图纸配置

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
VEX.128.66.0F38.W0 49 !(11):000:bbbSTTILECFG m512A有效不可编码在 m512 中存储瓦片配置 。

操作数编码

每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。

A

  1. modrm.rm escrituraModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移

实测开销

正在从 arch-data 加载实测数据...

说明

STTILECFG指令将指向一个64字节的内存位置(在"LDTI-LECFG--Load Tile配置"条目中的表3-56中描述),在成功执行本指令后,将包含所配置的瓷砖的描述. 为了配置瓷砖,必须设置 CPUID 中的 AMQTILE 位,操作系统必须启用瓷砖架构 。

如果瓷砖没有配置,那么STTILECFG将64B的零存储到指定的内存位置.

在 Intel TSX 交易中执行 STTILECFG 指令的任何尝试都会导致交易中止.

行动

STTILECFG mem
if TILES_CONFIGURED == 0:

    //write 64 bytes of zeros at mem pointer
    buf[0..63] := 0
    write_memory(mem, 64, buf)
else:
    buf.byte[0] := tilecfg.palette_id
    buf.byte[1] := tilecfg.start_row
    buf.byte[2..15] := 0

    p := 16
    for n in 0 ... palette_table[tilecfg.palette_id].max_names-1:

          buf.word[p/2] := tilecfg.t[n].colsb
          p := p + 2
    if p < 47:
          buf.byte[p..47] := 0
    p := 48
    for n in 0 ... palette_table[tilecfg.palette_id].max_names-1:
          buf.byte[p++] := tilecfg.t[n].rows
    if p < 63:
          buf.byte[p..63] := 0

    write_memory(mem, 64, buf)

Intel C/C++ 内在编译器

STTILECFGvoid _tile_storeconfig(void *);

受影响的旗帜

None.

例外 AMX-E2;详见第2.10节,"Intel(R) AMX 指令例外类".

来源