# SPDX-License-Identifier: MIT
# Copyright (C) 2018-present iced project and contributors

None, None, None, None, 0, None, None, ???

AL, AL, EAX, RAX, 1, GPR8, GPR, AL
CL, AL, ECX, RCX, 1, GPR8, GPR, CL
DL, AL, EDX, RDX, 1, GPR8, GPR, DL
BL, AL, EBX, RBX, 1, GPR8, GPR, BL
AH, AL, EAX, RAX, 1, GPR8, GPR, AH
CH, AL, ECX, RCX, 1, GPR8, GPR, CH
DH, AL, EDX, RDX, 1, GPR8, GPR, DH
BH, AL, EBX, RBX, 1, GPR8, GPR, BH
SPL, AL, ESP, RSP, 1, GPR8, GPR, SPL
BPL, AL, EBP, RBP, 1, GPR8, GPR, BPL
SIL, AL, ESI, RSI, 1, GPR8, GPR, SIL
DIL, AL, EDI, RDI, 1, GPR8, GPR, DIL
R8L, AL, R8D, R8, 1, GPR8, GPR, R8B
R9L, AL, R9D, R9, 1, GPR8, GPR, R9B
R10L, AL, R10D, R10, 1, GPR8, GPR, R10B
R11L, AL, R11D, R11, 1, GPR8, GPR, R11B
R12L, AL, R12D, R12, 1, GPR8, GPR, R12B
R13L, AL, R13D, R13, 1, GPR8, GPR, R13B
R14L, AL, R14D, R14, 1, GPR8, GPR, R14B
R15L, AL, R15D, R15, 1, GPR8, GPR, R15B

AX, AX, EAX, RAX, 2, GPR16, GPR, AX
CX, AX, ECX, RCX, 2, GPR16, GPR, CX
DX, AX, EDX, RDX, 2, GPR16, GPR, DX
BX, AX, EBX, RBX, 2, GPR16, GPR, BX
SP, AX, ESP, RSP, 2, GPR16, GPR, SP
BP, AX, EBP, RBP, 2, GPR16, GPR, BP
SI, AX, ESI, RSI, 2, GPR16, GPR, SI
DI, AX, EDI, RDI, 2, GPR16, GPR, DI
R8W, AX, R8D, R8, 2, GPR16, GPR, R8W
R9W, AX, R9D, R9, 2, GPR16, GPR, R9W
R10W, AX, R10D, R10, 2, GPR16, GPR, R10W
R11W, AX, R11D, R11, 2, GPR16, GPR, R11W
R12W, AX, R12D, R12, 2, GPR16, GPR, R12W
R13W, AX, R13D, R13, 2, GPR16, GPR, R13W
R14W, AX, R14D, R14, 2, GPR16, GPR, R14W
R15W, AX, R15D, R15, 2, GPR16, GPR, R15W

EAX, EAX, EAX, RAX, 4, GPR32, GPR, EAX
ECX, EAX, ECX, RCX, 4, GPR32, GPR, ECX
EDX, EAX, EDX, RDX, 4, GPR32, GPR, EDX
EBX, EAX, EBX, RBX, 4, GPR32, GPR, EBX
ESP, EAX, ESP, RSP, 4, GPR32, GPR, ESP
EBP, EAX, EBP, RBP, 4, GPR32, GPR, EBP
ESI, EAX, ESI, RSI, 4, GPR32, GPR, ESI
EDI, EAX, EDI, RDI, 4, GPR32, GPR, EDI
R8D, EAX, R8D, R8, 4, GPR32, GPR, R8D
R9D, EAX, R9D, R9, 4, GPR32, GPR, R9D
R10D, EAX, R10D, R10, 4, GPR32, GPR, R10D
R11D, EAX, R11D, R11, 4, GPR32, GPR, R11D
R12D, EAX, R12D, R12, 4, GPR32, GPR, R12D
R13D, EAX, R13D, R13, 4, GPR32, GPR, R13D
R14D, EAX, R14D, R14, 4, GPR32, GPR, R14D
R15D, EAX, R15D, R15, 4, GPR32, GPR, R15D

RAX, RAX, EAX, RAX, 8, GPR64, GPR, RAX
RCX, RAX, ECX, RCX, 8, GPR64, GPR, RCX
RDX, RAX, EDX, RDX, 8, GPR64, GPR, RDX
RBX, RAX, EBX, RBX, 8, GPR64, GPR, RBX
RSP, RAX, ESP, RSP, 8, GPR64, GPR, RSP
RBP, RAX, EBP, RBP, 8, GPR64, GPR, RBP
RSI, RAX, ESI, RSI, 8, GPR64, GPR, RSI
RDI, RAX, EDI, RDI, 8, GPR64, GPR, RDI
R8, RAX, R8D, R8, 8, GPR64, GPR, R8
R9, RAX, R9D, R9, 8, GPR64, GPR, R9
R10, RAX, R10D, R10, 8, GPR64, GPR, R10
R11, RAX, R11D, R11, 8, GPR64, GPR, R11
R12, RAX, R12D, R12, 8, GPR64, GPR, R12
R13, RAX, R13D, R13, 8, GPR64, GPR, R13
R14, RAX, R14D, R14, 8, GPR64, GPR, R14
R15, RAX, R15D, R15, 8, GPR64, GPR, R15

EIP, EIP, RIP, RIP, 4, IP, IP, EIP
RIP, EIP, RIP, RIP, 8, IP, IP, RIP

ES, ES, ES, ES, 2, Segment, Segment, ES
CS, ES, CS, CS, 2, Segment, Segment, CS
SS, ES, SS, SS, 2, Segment, Segment, SS
DS, ES, DS, DS, 2, Segment, Segment, DS
FS, ES, FS, FS, 2, Segment, Segment, FS
GS, ES, GS, GS, 2, Segment, Segment, GS

XMM0, XMM0, ZMM0, ZMM0, 16, XMM, Vector, XMM0
XMM1, XMM0, ZMM1, ZMM1, 16, XMM, Vector, XMM1
XMM2, XMM0, ZMM2, ZMM2, 16, XMM, Vector, XMM2
XMM3, XMM0, ZMM3, ZMM3, 16, XMM, Vector, XMM3
XMM4, XMM0, ZMM4, ZMM4, 16, XMM, Vector, XMM4
XMM5, XMM0, ZMM5, ZMM5, 16, XMM, Vector, XMM5
XMM6, XMM0, ZMM6, ZMM6, 16, XMM, Vector, XMM6
XMM7, XMM0, ZMM7, ZMM7, 16, XMM, Vector, XMM7
XMM8, XMM0, ZMM8, ZMM8, 16, XMM, Vector, XMM8
XMM9, XMM0, ZMM9, ZMM9, 16, XMM, Vector, XMM9
XMM10, XMM0, ZMM10, ZMM10, 16, XMM, Vector, XMM10
XMM11, XMM0, ZMM11, ZMM11, 16, XMM, Vector, XMM11
XMM12, XMM0, ZMM12, ZMM12, 16, XMM, Vector, XMM12
XMM13, XMM0, ZMM13, ZMM13, 16, XMM, Vector, XMM13
XMM14, XMM0, ZMM14, ZMM14, 16, XMM, Vector, XMM14
XMM15, XMM0, ZMM15, ZMM15, 16, XMM, Vector, XMM15
XMM16, XMM0, ZMM16, ZMM16, 16, XMM, Vector, XMM16
XMM17, XMM0, ZMM17, ZMM17, 16, XMM, Vector, XMM17
XMM18, XMM0, ZMM18, ZMM18, 16, XMM, Vector, XMM18
XMM19, XMM0, ZMM19, ZMM19, 16, XMM, Vector, XMM19
XMM20, XMM0, ZMM20, ZMM20, 16, XMM, Vector, XMM20
XMM21, XMM0, ZMM21, ZMM21, 16, XMM, Vector, XMM21
XMM22, XMM0, ZMM22, ZMM22, 16, XMM, Vector, XMM22
XMM23, XMM0, ZMM23, ZMM23, 16, XMM, Vector, XMM23
XMM24, XMM0, ZMM24, ZMM24, 16, XMM, Vector, XMM24
XMM25, XMM0, ZMM25, ZMM25, 16, XMM, Vector, XMM25
XMM26, XMM0, ZMM26, ZMM26, 16, XMM, Vector, XMM26
XMM27, XMM0, ZMM27, ZMM27, 16, XMM, Vector, XMM27
XMM28, XMM0, ZMM28, ZMM28, 16, XMM, Vector, XMM28
XMM29, XMM0, ZMM29, ZMM29, 16, XMM, Vector, XMM29
XMM30, XMM0, ZMM30, ZMM30, 16, XMM, Vector, XMM30
XMM31, XMM0, ZMM31, ZMM31, 16, XMM, Vector, XMM31

YMM0, YMM0, ZMM0, ZMM0, 32, YMM, Vector, YMM0
YMM1, YMM0, ZMM1, ZMM1, 32, YMM, Vector, YMM1
YMM2, YMM0, ZMM2, ZMM2, 32, YMM, Vector, YMM2
YMM3, YMM0, ZMM3, ZMM3, 32, YMM, Vector, YMM3
YMM4, YMM0, ZMM4, ZMM4, 32, YMM, Vector, YMM4
YMM5, YMM0, ZMM5, ZMM5, 32, YMM, Vector, YMM5
YMM6, YMM0, ZMM6, ZMM6, 32, YMM, Vector, YMM6
YMM7, YMM0, ZMM7, ZMM7, 32, YMM, Vector, YMM7
YMM8, YMM0, ZMM8, ZMM8, 32, YMM, Vector, YMM8
YMM9, YMM0, ZMM9, ZMM9, 32, YMM, Vector, YMM9
YMM10, YMM0, ZMM10, ZMM10, 32, YMM, Vector, YMM10
YMM11, YMM0, ZMM11, ZMM11, 32, YMM, Vector, YMM11
YMM12, YMM0, ZMM12, ZMM12, 32, YMM, Vector, YMM12
YMM13, YMM0, ZMM13, ZMM13, 32, YMM, Vector, YMM13
YMM14, YMM0, ZMM14, ZMM14, 32, YMM, Vector, YMM14
YMM15, YMM0, ZMM15, ZMM15, 32, YMM, Vector, YMM15
YMM16, YMM0, ZMM16, ZMM16, 32, YMM, Vector, YMM16
YMM17, YMM0, ZMM17, ZMM17, 32, YMM, Vector, YMM17
YMM18, YMM0, ZMM18, ZMM18, 32, YMM, Vector, YMM18
YMM19, YMM0, ZMM19, ZMM19, 32, YMM, Vector, YMM19
YMM20, YMM0, ZMM20, ZMM20, 32, YMM, Vector, YMM20
YMM21, YMM0, ZMM21, ZMM21, 32, YMM, Vector, YMM21
YMM22, YMM0, ZMM22, ZMM22, 32, YMM, Vector, YMM22
YMM23, YMM0, ZMM23, ZMM23, 32, YMM, Vector, YMM23
YMM24, YMM0, ZMM24, ZMM24, 32, YMM, Vector, YMM24
YMM25, YMM0, ZMM25, ZMM25, 32, YMM, Vector, YMM25
YMM26, YMM0, ZMM26, ZMM26, 32, YMM, Vector, YMM26
YMM27, YMM0, ZMM27, ZMM27, 32, YMM, Vector, YMM27
YMM28, YMM0, ZMM28, ZMM28, 32, YMM, Vector, YMM28
YMM29, YMM0, ZMM29, ZMM29, 32, YMM, Vector, YMM29
YMM30, YMM0, ZMM30, ZMM30, 32, YMM, Vector, YMM30
YMM31, YMM0, ZMM31, ZMM31, 32, YMM, Vector, YMM31

ZMM0, ZMM0, ZMM0, ZMM0, 64, ZMM, Vector, ZMM0
ZMM1, ZMM0, ZMM1, ZMM1, 64, ZMM, Vector, ZMM1
ZMM2, ZMM0, ZMM2, ZMM2, 64, ZMM, Vector, ZMM2
ZMM3, ZMM0, ZMM3, ZMM3, 64, ZMM, Vector, ZMM3
ZMM4, ZMM0, ZMM4, ZMM4, 64, ZMM, Vector, ZMM4
ZMM5, ZMM0, ZMM5, ZMM5, 64, ZMM, Vector, ZMM5
ZMM6, ZMM0, ZMM6, ZMM6, 64, ZMM, Vector, ZMM6
ZMM7, ZMM0, ZMM7, ZMM7, 64, ZMM, Vector, ZMM7
ZMM8, ZMM0, ZMM8, ZMM8, 64, ZMM, Vector, ZMM8
ZMM9, ZMM0, ZMM9, ZMM9, 64, ZMM, Vector, ZMM9
ZMM10, ZMM0, ZMM10, ZMM10, 64, ZMM, Vector, ZMM10
ZMM11, ZMM0, ZMM11, ZMM11, 64, ZMM, Vector, ZMM11
ZMM12, ZMM0, ZMM12, ZMM12, 64, ZMM, Vector, ZMM12
ZMM13, ZMM0, ZMM13, ZMM13, 64, ZMM, Vector, ZMM13
ZMM14, ZMM0, ZMM14, ZMM14, 64, ZMM, Vector, ZMM14
ZMM15, ZMM0, ZMM15, ZMM15, 64, ZMM, Vector, ZMM15
ZMM16, ZMM0, ZMM16, ZMM16, 64, ZMM, Vector, ZMM16
ZMM17, ZMM0, ZMM17, ZMM17, 64, ZMM, Vector, ZMM17
ZMM18, ZMM0, ZMM18, ZMM18, 64, ZMM, Vector, ZMM18
ZMM19, ZMM0, ZMM19, ZMM19, 64, ZMM, Vector, ZMM19
ZMM20, ZMM0, ZMM20, ZMM20, 64, ZMM, Vector, ZMM20
ZMM21, ZMM0, ZMM21, ZMM21, 64, ZMM, Vector, ZMM21
ZMM22, ZMM0, ZMM22, ZMM22, 64, ZMM, Vector, ZMM22
ZMM23, ZMM0, ZMM23, ZMM23, 64, ZMM, Vector, ZMM23
ZMM24, ZMM0, ZMM24, ZMM24, 64, ZMM, Vector, ZMM24
ZMM25, ZMM0, ZMM25, ZMM25, 64, ZMM, Vector, ZMM25
ZMM26, ZMM0, ZMM26, ZMM26, 64, ZMM, Vector, ZMM26
ZMM27, ZMM0, ZMM27, ZMM27, 64, ZMM, Vector, ZMM27
ZMM28, ZMM0, ZMM28, ZMM28, 64, ZMM, Vector, ZMM28
ZMM29, ZMM0, ZMM29, ZMM29, 64, ZMM, Vector, ZMM29
ZMM30, ZMM0, ZMM30, ZMM30, 64, ZMM, Vector, ZMM30
ZMM31, ZMM0, ZMM31, ZMM31, 64, ZMM, Vector, ZMM31

K0, K0, K0, K0, 8, K, K, K0
K1, K0, K1, K1, 8, K, K, K1
K2, K0, K2, K2, 8, K, K, K2
K3, K0, K3, K3, 8, K, K, K3
K4, K0, K4, K4, 8, K, K, K4
K5, K0, K5, K5, 8, K, K, K5
K6, K0, K6, K6, 8, K, K, K6
K7, K0, K7, K7, 8, K, K, K7

BND0, BND0, BND0, BND0, 16, BND, BND, BND0
BND1, BND0, BND1, BND1, 16, BND, BND, BND1
BND2, BND0, BND2, BND2, 16, BND, BND, BND2
BND3, BND0, BND3, BND3, 16, BND, BND, BND3

CR0, CR0, CR0, CR0, 8, CR, CR, CR0
CR1, CR0, CR1, CR1, 8, CR, CR, CR1
CR2, CR0, CR2, CR2, 8, CR, CR, CR2
CR3, CR0, CR3, CR3, 8, CR, CR, CR3
CR4, CR0, CR4, CR4, 8, CR, CR, CR4
CR5, CR0, CR5, CR5, 8, CR, CR, CR5
CR6, CR0, CR6, CR6, 8, CR, CR, CR6
CR7, CR0, CR7, CR7, 8, CR, CR, CR7
CR8, CR0, CR8, CR8, 8, CR, CR, CR8
CR9, CR0, CR9, CR9, 8, CR, CR, CR9
CR10, CR0, CR10, CR10, 8, CR, CR, CR10
CR11, CR0, CR11, CR11, 8, CR, CR, CR11
CR12, CR0, CR12, CR12, 8, CR, CR, CR12
CR13, CR0, CR13, CR13, 8, CR, CR, CR13
CR14, CR0, CR14, CR14, 8, CR, CR, CR14
CR15, CR0, CR15, CR15, 8, CR, CR, CR15

DR0, DR0, DR0, DR0, 8, DR, DR, DR0
DR1, DR0, DR1, DR1, 8, DR, DR, DR1
DR2, DR0, DR2, DR2, 8, DR, DR, DR2
DR3, DR0, DR3, DR3, 8, DR, DR, DR3
DR4, DR0, DR4, DR4, 8, DR, DR, DR4
DR5, DR0, DR5, DR5, 8, DR, DR, DR5
DR6, DR0, DR6, DR6, 8, DR, DR, DR6
DR7, DR0, DR7, DR7, 8, DR, DR, DR7
DR8, DR0, DR8, DR8, 8, DR, DR, DR8
DR9, DR0, DR9, DR9, 8, DR, DR, DR9
DR10, DR0, DR10, DR10, 8, DR, DR, DR10
DR11, DR0, DR11, DR11, 8, DR, DR, DR11
DR12, DR0, DR12, DR12, 8, DR, DR, DR12
DR13, DR0, DR13, DR13, 8, DR, DR, DR13
DR14, DR0, DR14, DR14, 8, DR, DR, DR14
DR15, DR0, DR15, DR15, 8, DR, DR, DR15

ST0, ST0, ST0, ST0, 10, ST, ST, ST(0)
ST1, ST0, ST1, ST1, 10, ST, ST, ST(1)
ST2, ST0, ST2, ST2, 10, ST, ST, ST(2)
ST3, ST0, ST3, ST3, 10, ST, ST, ST(3)
ST4, ST0, ST4, ST4, 10, ST, ST, ST(4)
ST5, ST0, ST5, ST5, 10, ST, ST, ST(5)
ST6, ST0, ST6, ST6, 10, ST, ST, ST(6)
ST7, ST0, ST7, ST7, 10, ST, ST, ST(7)

MM0, MM0, MM0, MM0, 8, MM, MM, MM0
MM1, MM0, MM1, MM1, 8, MM, MM, MM1
MM2, MM0, MM2, MM2, 8, MM, MM, MM2
MM3, MM0, MM3, MM3, 8, MM, MM, MM3
MM4, MM0, MM4, MM4, 8, MM, MM, MM4
MM5, MM0, MM5, MM5, 8, MM, MM, MM5
MM6, MM0, MM6, MM6, 8, MM, MM, MM6
MM7, MM0, MM7, MM7, 8, MM, MM, MM7

TR0, TR0, TR0, TR0, 4, TR, TR, TR0
TR1, TR0, TR1, TR1, 4, TR, TR, TR1
TR2, TR0, TR2, TR2, 4, TR, TR, TR2
TR3, TR0, TR3, TR3, 4, TR, TR, TR3
TR4, TR0, TR4, TR4, 4, TR, TR, TR4
TR5, TR0, TR5, TR5, 4, TR, TR, TR5
TR6, TR0, TR6, TR6, 4, TR, TR, TR6
TR7, TR0, TR7, TR7, 4, TR, TR, TR7

TMM0, TMM0, TMM0, TMM0, 1024, TMM, TMM, TMM0
TMM1, TMM0, TMM1, TMM1, 1024, TMM, TMM, TMM1
TMM2, TMM0, TMM2, TMM2, 1024, TMM, TMM, TMM2
TMM3, TMM0, TMM3, TMM3, 1024, TMM, TMM, TMM3
TMM4, TMM0, TMM4, TMM4, 1024, TMM, TMM, TMM4
TMM5, TMM0, TMM5, TMM5, 1024, TMM, TMM, TMM5
TMM6, TMM0, TMM6, TMM6, 1024, TMM, TMM, TMM6
TMM7, TMM0, TMM7, TMM7, 1024, TMM, TMM, TMM7

# Padding so the enum has at least 256 elements
DontUse0, DontUse0, DontUse0, DontUse0, 0, None, None, st
DontUseFA, DontUseFA, DontUseFA, DontUseFA, 0, None, None, ???
DontUseFB, DontUseFA, DontUseFB, DontUseFB, 0, None, None, ???
DontUseFC, DontUseFA, DontUseFC, DontUseFC, 0, None, None, ???
DontUseFD, DontUseFA, DontUseFD, DontUseFD, 0, None, None, ???
DontUseFE, DontUseFA, DontUseFE, DontUseFE, 0, None, None, ???
DontUseFF, DontUseFA, DontUseFF, DontUseFF, 0, None, None, ???
