Files
tinygrad/extra/assembly/amd/autogen/common.py
T
George HotzandGitHub 2ab18ea7e3 assembly/amd: use xml instead of pdf (#14118)
* assembly/amd: use xml instead of pdf

* use amdxml to generate info about op sizes

* fix many tests with invalid instructions

* fix info generation

* chad xml fixes many bugs

* rename to operands

* simplify

* amdxml

* bug fix
2026-01-14 10:03:37 +09:00

385 lines
10 KiB
Python

# autogenerated from AMD ISA XML - do not edit
from enum import Enum, auto
class Fmt(Enum):
FMT_ANY = auto()
FMT_BUF = auto()
FMT_IMG = auto()
FMT_IMG_BVH = auto()
FMT_NUM_B1 = auto()
FMT_NUM_B1024 = auto()
FMT_NUM_B128 = auto()
FMT_NUM_B16 = auto()
FMT_NUM_B256 = auto()
FMT_NUM_B32 = auto()
FMT_NUM_B512 = auto()
FMT_NUM_B64 = auto()
FMT_NUM_B8 = auto()
FMT_NUM_B96 = auto()
FMT_NUM_BF16 = auto()
FMT_NUM_BF6 = auto()
FMT_NUM_BF8 = auto()
FMT_NUM_F16 = auto()
FMT_NUM_F32 = auto()
FMT_NUM_F64 = auto()
FMT_NUM_FP4 = auto()
FMT_NUM_FP6 = auto()
FMT_NUM_FP8 = auto()
FMT_NUM_I16 = auto()
FMT_NUM_I24 = auto()
FMT_NUM_I32 = auto()
FMT_NUM_I4 = auto()
FMT_NUM_I64 = auto()
FMT_NUM_I8 = auto()
FMT_NUM_IU4 = auto()
FMT_NUM_IU8 = auto()
FMT_NUM_M64 = auto()
FMT_NUM_PK16_BF16 = auto()
FMT_NUM_PK16_BF8 = auto()
FMT_NUM_PK16_F16 = auto()
FMT_NUM_PK16_F32 = auto()
FMT_NUM_PK16_FP8 = auto()
FMT_NUM_PK16_I32 = auto()
FMT_NUM_PK16_I8 = auto()
FMT_NUM_PK2_B16 = auto()
FMT_NUM_PK2_B32 = auto()
FMT_NUM_PK2_B64 = auto()
FMT_NUM_PK2_BF16 = auto()
FMT_NUM_PK2_BF8 = auto()
FMT_NUM_PK2_F16 = auto()
FMT_NUM_PK2_F32 = auto()
FMT_NUM_PK2_FP4 = auto()
FMT_NUM_PK2_FP8 = auto()
FMT_NUM_PK2_I16 = auto()
FMT_NUM_PK2_I8 = auto()
FMT_NUM_PK2_U16 = auto()
FMT_NUM_PK2_U8 = auto()
FMT_NUM_PK32_BF16 = auto()
FMT_NUM_PK32_BF6 = auto()
FMT_NUM_PK32_BF8 = auto()
FMT_NUM_PK32_F16 = auto()
FMT_NUM_PK32_F32 = auto()
FMT_NUM_PK32_FP6 = auto()
FMT_NUM_PK32_FP8 = auto()
FMT_NUM_PK32_I32 = auto()
FMT_NUM_PK32_I8 = auto()
FMT_NUM_PK4_B8 = auto()
FMT_NUM_PK4_BF16 = auto()
FMT_NUM_PK4_BF8 = auto()
FMT_NUM_PK4_F16 = auto()
FMT_NUM_PK4_F32 = auto()
FMT_NUM_PK4_F64 = auto()
FMT_NUM_PK4_FP8 = auto()
FMT_NUM_PK4_I32 = auto()
FMT_NUM_PK4_I8 = auto()
FMT_NUM_PK4_IU8 = auto()
FMT_NUM_PK4_U8 = auto()
FMT_NUM_PK8_B32 = auto()
FMT_NUM_PK8_BF16 = auto()
FMT_NUM_PK8_BF8 = auto()
FMT_NUM_PK8_F16 = auto()
FMT_NUM_PK8_FP8 = auto()
FMT_NUM_PK8_I4 = auto()
FMT_NUM_PK8_I8 = auto()
FMT_NUM_PK8_IU4 = auto()
FMT_NUM_PK8_U4 = auto()
FMT_NUM_PK8_U8 = auto()
FMT_NUM_PK_F16 = auto()
FMT_NUM_PK_I16 = auto()
FMT_NUM_PK_I8 = auto()
FMT_NUM_PK_U16 = auto()
FMT_NUM_PK_U8 = auto()
FMT_NUM_U16 = auto()
FMT_NUM_U24 = auto()
FMT_NUM_U32 = auto()
FMT_NUM_U4 = auto()
FMT_NUM_U64 = auto()
FMT_NUM_U8 = auto()
FMT_RSRC = auto()
FMT_RSRC_SCALAR = auto()
FMT_RSRC_SCRATCH = auto()
FMT_RSRC_SCRATCH_BYTE = auto()
FMT_RSRC_SCRATCH_STRIDE = auto()
FMT_RSRC_TYPED = auto()
FMT_RSRC_TYPED_BYTE = auto()
FMT_RSRC_TYPED_SCRATCH = auto()
FMT_RSRC_TYPED_STRIDE = auto()
FMT_RSRC_VECTOR = auto()
FMT_RSRC_VECTOR_BYTE = auto()
FMT_RSRC_VECTOR_STRIDE = auto()
FMT_SAMP = auto()
FMT_WMMA_AB_16X16_BF16 = auto()
FMT_WMMA_AB_16X16_BF8 = auto()
FMT_WMMA_AB_16X16_F16 = auto()
FMT_WMMA_AB_16X16_FP8 = auto()
FMT_WMMA_AB_16X16_IU4 = auto()
FMT_WMMA_AB_16X16_IU8 = auto()
FMT_WMMA_AB_16X32_BF16 = auto()
FMT_WMMA_AB_16X32_BF8 = auto()
FMT_WMMA_AB_16X32_F16 = auto()
FMT_WMMA_AB_16X32_FP8 = auto()
FMT_WMMA_AB_16X32_IU4 = auto()
FMT_WMMA_AB_16X32_IU8 = auto()
FMT_WMMA_AB_16X64_IU4 = auto()
FMT_WMMA_AB_BF16 = auto()
FMT_WMMA_AB_F16 = auto()
FMT_WMMA_AB_IU4 = auto()
FMT_WMMA_AB_IU8 = auto()
FMT_WMMA_DC_16X16_BF16 = auto()
FMT_WMMA_DC_16X16_F16 = auto()
FMT_WMMA_DC_16X16_F32 = auto()
FMT_WMMA_DC_16X16_I32 = auto()
FMT_WMMA_DC_BF16 = auto()
FMT_WMMA_DC_F16 = auto()
FMT_WMMA_DC_F32 = auto()
FMT_WMMA_DC_I32 = auto()
FMT_WMMA_INDEX_SET = auto()
FMT_BITS = {
Fmt.FMT_ANY: 1,
Fmt.FMT_BUF: 64,
Fmt.FMT_IMG: 256,
Fmt.FMT_IMG_BVH: 128,
Fmt.FMT_NUM_B1: 1,
Fmt.FMT_NUM_B1024: 1024,
Fmt.FMT_NUM_B128: 128,
Fmt.FMT_NUM_B16: 16,
Fmt.FMT_NUM_B256: 256,
Fmt.FMT_NUM_B32: 32,
Fmt.FMT_NUM_B512: 512,
Fmt.FMT_NUM_B64: 64,
Fmt.FMT_NUM_B8: 8,
Fmt.FMT_NUM_B96: 96,
Fmt.FMT_NUM_BF16: 16,
Fmt.FMT_NUM_BF6: 6,
Fmt.FMT_NUM_BF8: 8,
Fmt.FMT_NUM_F16: 16,
Fmt.FMT_NUM_F32: 32,
Fmt.FMT_NUM_F64: 64,
Fmt.FMT_NUM_FP4: 4,
Fmt.FMT_NUM_FP6: 6,
Fmt.FMT_NUM_FP8: 8,
Fmt.FMT_NUM_I16: 16,
Fmt.FMT_NUM_I24: 24,
Fmt.FMT_NUM_I32: 32,
Fmt.FMT_NUM_I4: 4,
Fmt.FMT_NUM_I64: 64,
Fmt.FMT_NUM_I8: 8,
Fmt.FMT_NUM_IU4: 4,
Fmt.FMT_NUM_IU8: 8,
Fmt.FMT_NUM_M64: 64,
Fmt.FMT_NUM_PK16_BF16: 256,
Fmt.FMT_NUM_PK16_BF8: 128,
Fmt.FMT_NUM_PK16_F16: 256,
Fmt.FMT_NUM_PK16_F32: 512,
Fmt.FMT_NUM_PK16_FP8: 128,
Fmt.FMT_NUM_PK16_I32: 512,
Fmt.FMT_NUM_PK16_I8: 128,
Fmt.FMT_NUM_PK2_B16: 32,
Fmt.FMT_NUM_PK2_B32: 64,
Fmt.FMT_NUM_PK2_B64: 128,
Fmt.FMT_NUM_PK2_BF16: 32,
Fmt.FMT_NUM_PK2_BF8: 16,
Fmt.FMT_NUM_PK2_F16: 32,
Fmt.FMT_NUM_PK2_F32: 64,
Fmt.FMT_NUM_PK2_FP4: 8,
Fmt.FMT_NUM_PK2_FP8: 16,
Fmt.FMT_NUM_PK2_I16: 32,
Fmt.FMT_NUM_PK2_I8: 16,
Fmt.FMT_NUM_PK2_U16: 32,
Fmt.FMT_NUM_PK2_U8: 16,
Fmt.FMT_NUM_PK32_BF16: 512,
Fmt.FMT_NUM_PK32_BF6: 192,
Fmt.FMT_NUM_PK32_BF8: 256,
Fmt.FMT_NUM_PK32_F16: 512,
Fmt.FMT_NUM_PK32_F32: 1024,
Fmt.FMT_NUM_PK32_FP6: 192,
Fmt.FMT_NUM_PK32_FP8: 256,
Fmt.FMT_NUM_PK32_I32: 1024,
Fmt.FMT_NUM_PK32_I8: 256,
Fmt.FMT_NUM_PK4_B8: 32,
Fmt.FMT_NUM_PK4_BF16: 64,
Fmt.FMT_NUM_PK4_BF8: 32,
Fmt.FMT_NUM_PK4_F16: 64,
Fmt.FMT_NUM_PK4_F32: 128,
Fmt.FMT_NUM_PK4_F64: 256,
Fmt.FMT_NUM_PK4_FP8: 32,
Fmt.FMT_NUM_PK4_I32: 128,
Fmt.FMT_NUM_PK4_I8: 32,
Fmt.FMT_NUM_PK4_IU8: 32,
Fmt.FMT_NUM_PK4_U8: 32,
Fmt.FMT_NUM_PK8_B32: 256,
Fmt.FMT_NUM_PK8_BF16: 128,
Fmt.FMT_NUM_PK8_BF8: 64,
Fmt.FMT_NUM_PK8_F16: 128,
Fmt.FMT_NUM_PK8_FP8: 64,
Fmt.FMT_NUM_PK8_I4: 32,
Fmt.FMT_NUM_PK8_I8: 64,
Fmt.FMT_NUM_PK8_IU4: 32,
Fmt.FMT_NUM_PK8_U4: 32,
Fmt.FMT_NUM_PK8_U8: 64,
Fmt.FMT_NUM_PK_F16: 32,
Fmt.FMT_NUM_PK_I16: 32,
Fmt.FMT_NUM_PK_I8: 32,
Fmt.FMT_NUM_PK_U16: 32,
Fmt.FMT_NUM_PK_U8: 32,
Fmt.FMT_NUM_U16: 16,
Fmt.FMT_NUM_U24: 24,
Fmt.FMT_NUM_U32: 32,
Fmt.FMT_NUM_U4: 4,
Fmt.FMT_NUM_U64: 64,
Fmt.FMT_NUM_U8: 8,
Fmt.FMT_RSRC: 128,
Fmt.FMT_RSRC_SCALAR: 128,
Fmt.FMT_RSRC_SCRATCH: 128,
Fmt.FMT_RSRC_SCRATCH_BYTE: 128,
Fmt.FMT_RSRC_SCRATCH_STRIDE: 128,
Fmt.FMT_RSRC_TYPED: 128,
Fmt.FMT_RSRC_TYPED_BYTE: 128,
Fmt.FMT_RSRC_TYPED_SCRATCH: 128,
Fmt.FMT_RSRC_TYPED_STRIDE: 128,
Fmt.FMT_RSRC_VECTOR: 128,
Fmt.FMT_RSRC_VECTOR_BYTE: 128,
Fmt.FMT_RSRC_VECTOR_STRIDE: 128,
Fmt.FMT_SAMP: 128,
Fmt.FMT_WMMA_AB_16X16_BF16: 128,
Fmt.FMT_WMMA_AB_16X16_BF8: 64,
Fmt.FMT_WMMA_AB_16X16_F16: 128,
Fmt.FMT_WMMA_AB_16X16_FP8: 64,
Fmt.FMT_WMMA_AB_16X16_IU4: 32,
Fmt.FMT_WMMA_AB_16X16_IU8: 64,
Fmt.FMT_WMMA_AB_16X32_BF16: 256,
Fmt.FMT_WMMA_AB_16X32_BF8: 128,
Fmt.FMT_WMMA_AB_16X32_F16: 256,
Fmt.FMT_WMMA_AB_16X32_FP8: 128,
Fmt.FMT_WMMA_AB_16X32_IU4: 64,
Fmt.FMT_WMMA_AB_16X32_IU8: 128,
Fmt.FMT_WMMA_AB_16X64_IU4: 128,
Fmt.FMT_WMMA_AB_BF16: 256,
Fmt.FMT_WMMA_AB_F16: 256,
Fmt.FMT_WMMA_AB_IU4: 64,
Fmt.FMT_WMMA_AB_IU8: 128,
Fmt.FMT_WMMA_DC_16X16_BF16: 128,
Fmt.FMT_WMMA_DC_16X16_F16: 128,
Fmt.FMT_WMMA_DC_16X16_F32: 256,
Fmt.FMT_WMMA_DC_16X16_I32: 256,
Fmt.FMT_WMMA_DC_BF16: 256,
Fmt.FMT_WMMA_DC_F16: 256,
Fmt.FMT_WMMA_DC_F32: 256,
Fmt.FMT_WMMA_DC_I32: 256,
Fmt.FMT_WMMA_INDEX_SET: 32,
}
class OpType(Enum):
OPR_ACCVGPR = auto()
OPR_ATTR = auto()
OPR_CLAUSE = auto()
OPR_DELAY = auto()
OPR_EXEC = auto()
OPR_HWREG = auto()
OPR_LABEL = auto()
OPR_SDST = auto()
OPR_SDST_NULL = auto()
OPR_SENDMSG = auto()
OPR_SENDMSG_RTN = auto()
OPR_SIMM16 = auto()
OPR_SIMM24 = auto()
OPR_SIMM4 = auto()
OPR_SIMM5 = auto()
OPR_SIMM8 = auto()
OPR_SLEEP = auto()
OPR_SMEM_OFFSET = auto()
OPR_SMEM_OFFSET_NOK = auto()
OPR_SRC = auto()
OPR_SRC_ACCVGPR = auto()
OPR_SRC_NOLDS = auto()
OPR_SRC_NOLIT = auto()
OPR_SRC_SIMPLE = auto()
OPR_SRC_VGPR = auto()
OPR_SRC_VGPR_OR_ACCVGPR = auto()
OPR_SRC_VGPR_OR_ACCVGPR_OR_CONST = auto()
OPR_SRC_VGPR_OR_INLINE = auto()
OPR_SREG = auto()
OPR_SREG_LITERAL = auto()
OPR_SREG_M0 = auto()
OPR_SREG_M0_INL = auto()
OPR_SREG_NOVCC = auto()
OPR_SSRC = auto()
OPR_SSRC_BARRIER_ID = auto()
OPR_SSRC_LANESEL = auto()
OPR_SSRC_NOLIT = auto()
OPR_TGT = auto()
OPR_VERSION = auto()
OPR_VGPR = auto()
OPR_VGPR_OR_ACCVGPR = auto()
OPR_VGPR_OR_LDS = auto()
OPR_WAITCNT = auto()
OPR_WAITCNT_DEPCTR = auto()
OPR_WAIT_ALU = auto()
OPR_WAIT_EVENT = auto()
OPR_WAIT_MEM_DS = auto()
class BufFmt(Enum):
BUF_FMT_8_UNORM = 1
BUF_FMT_8_SNORM = 2
BUF_FMT_8_USCALED = 3
BUF_FMT_8_SSCALED = 4
BUF_FMT_8_UINT = 5
BUF_FMT_8_SINT = 6
BUF_FMT_16_UNORM = 7
BUF_FMT_16_SNORM = 8
BUF_FMT_16_USCALED = 9
BUF_FMT_16_SSCALED = 10
BUF_FMT_16_UINT = 11
BUF_FMT_16_SINT = 12
BUF_FMT_16_FLOAT = 13
BUF_FMT_8_8_UNORM = 14
BUF_FMT_8_8_SNORM = 15
BUF_FMT_8_8_USCALED = 16
BUF_FMT_8_8_SSCALED = 17
BUF_FMT_8_8_UINT = 18
BUF_FMT_8_8_SINT = 19
BUF_FMT_32_UINT = 20
BUF_FMT_32_SINT = 21
BUF_FMT_32_FLOAT = 22
BUF_FMT_16_16_UNORM = 23
BUF_FMT_16_16_SNORM = 24
BUF_FMT_16_16_USCALED = 25
BUF_FMT_16_16_SSCALED = 26
BUF_FMT_16_16_UINT = 27
BUF_FMT_16_16_SINT = 28
BUF_FMT_16_16_FLOAT = 29
BUF_FMT_10_11_11_FLOAT = 30
BUF_FMT_11_11_10_FLOAT = 31
BUF_FMT_10_10_10_2_UNORM = 32
BUF_FMT_10_10_10_2_SNORM = 33
BUF_FMT_10_10_10_2_UINT = 34
BUF_FMT_10_10_10_2_SINT = 35
BUF_FMT_2_10_10_10_UNORM = 36
BUF_FMT_2_10_10_10_SNORM = 37
BUF_FMT_2_10_10_10_USCALED = 38
BUF_FMT_2_10_10_10_SSCALED = 39
BUF_FMT_2_10_10_10_UINT = 40
BUF_FMT_2_10_10_10_SINT = 41
BUF_FMT_8_8_8_8_UNORM = 42
BUF_FMT_8_8_8_8_SNORM = 43
BUF_FMT_8_8_8_8_USCALED = 44
BUF_FMT_8_8_8_8_SSCALED = 45
BUF_FMT_8_8_8_8_UINT = 46
BUF_FMT_8_8_8_8_SINT = 47
BUF_FMT_32_32_UINT = 48
BUF_FMT_32_32_SINT = 49
BUF_FMT_32_32_FLOAT = 50
BUF_FMT_16_16_16_16_UNORM = 51
BUF_FMT_16_16_16_16_SNORM = 52
BUF_FMT_16_16_16_16_USCALED = 53
BUF_FMT_16_16_16_16_SSCALED = 54
BUF_FMT_16_16_16_16_UINT = 55
BUF_FMT_16_16_16_16_SINT = 56
BUF_FMT_16_16_16_16_FLOAT = 57
BUF_FMT_32_32_32_UINT = 58
BUF_FMT_32_32_32_SINT = 59
BUF_FMT_32_32_32_FLOAT = 60
BUF_FMT_32_32_32_32_UINT = 61
BUF_FMT_32_32_32_32_SINT = 62
BUF_FMT_32_32_32_32_FLOAT = 63