.. _opcode-map: Ventium x86 Opcode-Map Reference (auto-generated) ================================================= .. note:: This page is **generated** by ``tools/opcode_map/gen_opcode_map.py`` from ``tools/opcode_map/coverage_data.json`` and verified against ``rtl/core/core.sv`` on every Sphinx build (``.github/workflows/docs.yml``). Do not edit by hand — update the JSON and re-run the generator. Complete one-byte (primary) and two-byte (``0F``-prefixed) x86 opcode maps as decoded by the Ventium P54C core in **functional mode** (the KV260 board path, ``cycle_mode=0``). Reference model: ``qemu -cpu pentium`` (P54C: no MMX/SSE). Out-of-scope opcodes HALT loudly (``d_unknown`` -> ``S_HALT``); they are never silently mis-executed. Each cell's hover/click callout shows the instruction's concise description, courtesy of the `x86 Opcode and Instruction Reference `_ (ref.x86asm.net, coder32 edition), followed by the Ventium decode status and RTL evidence. Status legend ------------- .. raw:: html .. raw:: html
implemented — Fully decoded and retired; behaviour QEMU-matched for the P54C model. over-impl. — Decoded and retired even though the opcode post-dates P54C (P6/MMX/SSE/CET-era) -> beyond the P54C ISA, but the Ventium core handles it rather than HALTing. partial — Decoded, but some ModRM/x87 sub-forms, modes, or value-ranges are gated off and HALT. system-only — Decodes only in ``sys_mode``; user mode HALTs. gap — Architecturally-valid P54C opcode with no decode arm -> HALTs. (Implementation target.) prefix — Legacy/segment/operand prefix; consumed in the prefix loop. undefined — Not a P54C instruction (P6/MMX/SSE/post-Pentium/reserved); HALTs.

Hover (or tab to, or click to pin) any cell for what the instruction does, its Ventium decode status and sub-form notes, and the RTL evidence. Instruction descriptions are from ref.x86asm.net. The same status glyphs (I + ~ S X P .) appear in the coverage table below.

Primary one-byte opcode map --------------------------- High nibble runs down the left, low nibble across the top. Cells are colour-coded by status; hover/focus/click for full details. .. raw:: html
x0
x1
x2
x3
x4
x5
x6
x7
x8
x9
xA
xB
xC
xD
xE
xF
0x
00ADDr/m8r8
01ADDr/m16/32r16/32
02ADDr8r/m8
03ADDr16/32r/m16/32
04ADDALimm8
05ADDeAXimm16/32
06PUSHES
07POPES
08ORr/m8r8
09ORr/m16/32r16/32
0AORr8r/m8
0BORr16/32r/m16/32
0CORALimm8
0DOReAXimm16/32
0EPUSHCS
0F0F(two-byte escape)
1x
10ADCr/m8r8
11ADCr/m16/32r16/32
12ADCr8r/m8
13ADCr16/32r/m16/32
14ADCALimm8
15ADCeAXimm16/32
16PUSHSS
17POPSS
18SBBr/m8r8
19SBBr/m16/32r16/32
1ASBBr8r/m8
1BSBBr16/32r/m16/32
1CSBBALimm8
1DSBBeAXimm16/32
1EPUSHDS
1FPOPDS
2x
20ANDr/m8r8
21ANDr/m16/32r16/32
22ANDr8r/m8
23ANDr16/32r/m16/32
24ANDALimm8
25ANDeAXimm16/32
26ESsegment-override prefix
27DAA
28SUBr/m8r8
29SUBr/m16/32r16/32
2ASUBr8r/m8
2BSUBr16/32r/m16/32
2CSUBALimm8
2DSUBeAXimm16/32
2ECSsegment-override prefix
2FDAS
3x
30XORr/m8r8
31XORr/m16/32r16/32
32XORr8r/m8
33XORr16/32r/m16/32
34XORALimm8
35XOReAXimm16/32
36SSsegment-override prefix
37AAA
38CMPr/m8r8
39CMPr/m16/32r16/32
3ACMPr8r/m8
3BCMPr16/32r/m16/32
3CCMPALimm8
3DCMPeAXimm16/32
3EDSsegment-override prefix
3FAAS
4x
40INCeAX
41INCeCX
42INCeDX
43INCeBX
44INCeSP
45INCeBP
46INCeSI
47INCeDI
48DECeAX
49DECeCX
4ADECeDX
4BDECeBX
4CDECeSP
4DDECeBP
4EDECeSI
4FDECeDI
5x
50PUSHeAX
51PUSHeCX
52PUSHeDX
53PUSHeBX
54PUSHeSP
55PUSHeBP
56PUSHeSI
57PUSHeDI
58POPeAX
59POPeCX
5APOPeDX
5BPOPeBX
5CPOPeSP
5DPOPeBP
5EPOPeSI
5FPOPeDI
6x
60PUSHAPUSHAD
61POPAPOPAD
62BOUNDrm16&16/m32&32
63ARPLr/m16r16
64FSsegment-override prefix
65GSsegment-override prefix
66Operand-sizeoverride prefix
67Address-sizeoverride prefix
68PUSHimm16/32
69IMULr16/32r/mimm16/32
6APUSHimm8(sign-ext)
6BIMULr16/32r/mimm8
6CINSBm8DX
6DINSWINSDm16/32DX
6EOUTSBDXm8
6FOUTSWOUTSDDXm16/32
7x
70JOrel8
71JNOrel8
72JBJCJNAErel8
73JAEJNBJNCrel8
74JEJZrel8
75JNEJNZrel8
76JBEJNArel8
77JAJNBErel8
78JSrel8
79JNSrel8
7AJPJPErel8
7BJNPJPOrel8
7CJLJNGErel8
7DJGEJNLrel8
7EJLEJNGrel8
7FJGJNLErel8
8x
80group-1r/m8imm8(ADD/OR/ADC/SBB/AND/SUB/XOR/CMP)
81group-1r/m16/32imm16/32
82group-1r/m8imm8(undocumented alias of 0x80)
83group-1r/m16/32imm8(sign-extended)
84TESTr/m8r8
85TESTr/m16/32r16/32
86XCHGr/m8r8
87XCHGr/m16/32r16/32
88MOVr/m8r8
89MOVr/m16/32r16/32
8AMOVr8r/m8
8BMOVr16/32r/m16/32
8CMOVr/m16Sreg
8DLEAr16/32m
8EMOVSregr/m16
8FPOPr/m16/32(group-1A/0)
9x
90NOPXCHGeAXeAX(PAUSE under F3)
91XCHGeAXeCX
92XCHGeAXeDX
93XCHGeAXeBX
94XCHGeAXeSP
95XCHGeAXeBP
96XCHGeAXeSI
97XCHGeAXeDI
98CWDECBW
99CDQCWD
9ACALLfar ptr16:16/ptr16:32
9BFWAITWAIT
9CPUSHFPUSHFD
9DPOPFPOPFD
9ESAHF
9FLAHF
Ax
A0MOVALmoffs8
A1MOVeAXmoffs16/32
A2MOVmoffs8AL
A3MOVmoffs16/32eAX
A4MOVSB
A5MOVSWMOVSD
A6CMPSB
A7CMPSWCMPSD
A8TESTALimm8
A9TESTeAXimm16/32
AASTOSB
ABSTOSWSTOSD
ACLODSB
ADLODSWLODSD
AESCASB
AFSCASWSCASD
Bx
B0MOVALimm8
B1MOVCLimm8
B2MOVDLimm8
B3MOVBLimm8
B4MOVAHimm8
B5MOVCHimm8
B6MOVDHimm8
B7MOVBHimm8
B8MOVeAXimm16/32
B9MOVeCXimm16/32
BAMOVeDXimm16/32
BBMOVeBXimm16/32
BCMOVeSPimm16/32
BDMOVeBPimm16/32
BEMOVeSIimm16/32
BFMOVeDIimm16/32
Cx
C0ROLRORRCLRCRSHLSHRSARr/m8imm8(grp2)
C1ROLRORRCLRCRSHLSHRSARr/mimm8(grp2)
C2RETimm16(near)
C3RET(near)
C4LESrm16:16
C5LDSrm16:16
C6MOVr/m8imm8(grp11/0)
C7MOVr/mimm(grp11/0)
C8ENTERimm16imm8
C9LEAVE
CARETFimm16
CBRETF
CCINT3
CDINTimm8
CEINTO
CFIRET
Dx
D0ROLRORRCLRCRSHLSHRSARr/m81
D1ROLRORRCLRCRSHLSHRSARr/m1
D2ROLRORRCLRCRSHLSHRSARr/m8CL
D3ROLRORRCLRCRSHLSHRSARr/mCL
D4AAMimm8
D5AADimm8
D6SALC
D7XLATB
D8FADDFMULFCOMFSUBFDIVm32/st(i)
D9FLDFSTFLDCWFNSTCW+ D9 reg group
DAFIADDFICOMm32; FUCOMPP
DBFILDFISTPFLDm80/FNINIT; DB reg
DCFADDFMULFSUBFDIVm64/st(i)-dest
DDFLDFSTm64; FFREE/FUCOM; FRSTOR/FNSAVE
DEFIADDm16; FADDP/FCOMPP
DFFILDFISTPm16/m64; FBLD/FBSTP; FNSTSW AX
Ex
E0LOOPNErel8
E1LOOPErel8
E2LOOPrel8
E3JECXZrel8
E4INALimm8
E5INeAXimm8
E6OUTimm8AL
E7OUTimm8eAX
E8CALLrel16/32
E9JMPrel16/32
EAJMPfar ptr16:off
EBJMPrel8
ECINALDX
EDINeAXDX
EEOUTDXAL
EFOUTDXeAX
Fx
F0LOCK
F1INT1ICEBP
F2REPNE
F3REPREPE
F4HLT
F5CMC
F6TESTNOTNEGMULDIVr/m8(grp3)
F7TESTNOTNEGMULDIVr/m(grp3)
F8CLC
F9STC
FACLI
FBSTI
FCCLD
FDSTD
FEINCDECr/m8(grp4)
FFINCDECCALLJMPPUSHr/m(grp5)
Secondary ``0F`` opcode map --------------------------- High nibble runs down the left, low nibble across the top. Cells are colour-coded by status; hover/focus/click for full details. .. raw:: html
x0
x1
x2
x3
x4
x5
x6
x7
x8
x9
xA
xB
xC
xD
xE
xF
0x
00GRP6(SLDT/STR/LLDT/LTR/VERR/VERW r/m)
01GRP7(SGDT/SIDT/LGDT/LIDT/SMSW/LMSW/INVLPG)
02LARrr/m
03LSLrr/m
04(undefined)
05SYSCALL
06CLTS
07SYSRET
08INVD
09WBINVD
0A(undefined)
0BUD2(#UD)
0C(undefined)
0DPREFETCHWm8
0EFEMMS
0F(reserved)
1x
10MOVUPSxmmxmm/m
11MOVUPSxmm/mxmm
12MOVLPSMOVHLPSxmmm64
13MOVLPSm64xmm
14UNPCKLPSxmmxmm/m
15UNPCKHPSxmmxmm/m
16MOVHPSMOVLHPSxmmm64
17MOVHPSm64xmm
18PREFETCHNTAT0T1T2m8(grp16)
19(undefined on P54C; reserved-NOP P6+)
1A(undefined on P54C; reserved-NOP P6+)
1B(undefined on P54C; reserved-NOP P6+)
1C(undefined on P54C; reserved-NOP P6+)
1D(undefined on P54C; reserved-NOP P6+)
1ENOPr/m(endbr w/F3)
1FNOPr/m(multi-byte NOP)
2x
20MOVr32CRn
21MOVr32DRn
22MOVCRnr32
23MOVDRnr32
24MOVr32TRn
25(undefined)
26MOVTRnr32
27(undefined)
28MOVAPSxmmxmm/m
29MOVAPSxmm/mxmm
2ACVTPI2PSxmmmm/m
2BMOVNTPSm128xmm
2CCVTTPS2PImmxmm/m
2DCVTPS2PImmxmm/m
2EUCOMISSxmmxmm/m
2FCOMISSxmmxmm/m
3x
30WRMSR
31RDTSC
32RDMSR
33RDPMC
34SYSENTER
35SYSEXIT
36(undefined)
37GETSEC
38(undefined on P54C; 3-byte 0F 38 escape is SSSE3+)
39(undefined)
3A(undefined on P54C; 3-byte 0F 3A escape is SSE4.1+)
3B(undefined)
3C(undefined)
3D(undefined)
3E(undefined)
3F(undefined)
4x
40CMOVOrr/m
41CMOVNOrr/m
42CMOVBCMOVCCMOVNAErr/m
43CMOVAECMOVNBCMOVNCrr/m
44CMOVECMOVZrr/m
45CMOVNECMOVNZrr/m
46CMOVBECMOVNArr/m
47CMOVACMOVNBErr/m
48CMOVSrr/m
49CMOVNSrr/m
4ACMOVPCMOVPErr/m
4BCMOVNPCMOVPOrr/m
4CCMOVLCMOVNGErr/m
4DCMOVGECMOVNLrr/m
4ECMOVLECMOVNGrr/m
4FCMOVGCMOVNLErr/m
5x
50MOVMSKPSr32xmm
51SQRTPSSQRTSSxmmxmm/m(66/F3/F2 variants)
52RSQRTPSRSQRTSSxmmxmm/m
53RCPPSRCPSSxmmxmm/m
54ANDPSANDPDxmmxmm/m
55ANDNPSANDNPDxmmxmm/m
56ORPSORPDxmmxmm/m
57XORPSXORPDxmmxmm/m
58ADDPSADDSSADDPDADDSDxmmxmm/m
59MULPSMULSSMULPDMULSDxmmxmm/m
5ACVTPS2PDCVTSS2SDCVTPD2PSCVTSD2SS
5BCVTDQ2PSCVTPS2DQCVTTPS2DQ
5CSUBPSSUBSSSUBPDSUBSDxmmxmm/m
5DMINPSMINSSMINPDMINSDxmmxmm/m
5EDIVPSDIVSSDIVPDDIVSDxmmxmm/m
5FMAXPSMAXSSMAXPDMAXSDxmmxmm/m
6x
60PUNPCKLBWmmmm/m(xmm w/66)
61PUNPCKLWDmmmm/m
62PUNPCKLDQmmmm/m
63PACKSSWBmmmm/m
64PCMPGTBmmmm/m
65PCMPGTWmmmm/m
66PCMPGTDmmmm/m
67PACKUSWBmmmm/m
68PUNPCKHBWmmmm/m
69PUNPCKHWDmmmm/m
6APUNPCKHDQmmmm/m
6BPACKSSDWmmmm/m
6CPUNPCKLQDQxmmxmm/m(66 only)
6DPUNPCKHQDQxmmxmm/m(66 only)
6EMOVDmm/xmmr/m32
6FMOVQmmmm/m(MOVDQA/MOVDQU xmm w/66/F3)
7x
70PSHUFWPSHUFDPSHUFHWPSHUFLWmm/xmmmm/mimm8
71Group12:PSRLW/PSRAW/PSLLW mm/xmmimm8(ModRM.reg/2,/4,/6)
72Group13:PSRLD/PSRAD/PSLLD mm/xmmimm8(ModRM.reg/2,/4,/6)
73Group14:PSRLQ/PSRLDQ/PSLLQ/PSLLDQ mm/xmmimm8(ModRM.reg/2,/3,/6,/7)
74PCMPEQBmmmm/m
75PCMPEQWmmmm/m
76PCMPEQDmmmm/m
77EMMS(VZEROUPPER/VZEROALL w/VEX)
78VMREADr/mr(also Group17 EXTRQ/INSERTQ w/66/F2)
79VMWRITErr/m(also EXTRQ/INSERTQ w/66/F2)
7A(undefined; later AMD XOP/SSE-context only)
7B(undefined; reserved in legacy IA-32)
7CHADDPSHADDPDxmmxmm/m(66/F2)
7DHSUBPSHSUBPDxmmxmm/m(66/F2)
7EMOVDr/m32mm(MOVQ xmm,xmm/m w/F3)
7FMOVQmm/mmm(MOVDQA/MOVDQU mem w/66/F3)
8x
80JOrel16/32
81JNOrel16/32
82JBJCJNAErel16/32
83JAEJNBJNCrel16/32
84JEJZrel16/32
85JNEJNZrel16/32
86JBEJNArel16/32
87JAJNBErel16/32
88JSrel16/32
89JNSrel16/32
8AJPJPErel16/32
8BJNPJPOrel16/32
8CJLJNGErel16/32
8DJGEJNLrel16/32
8EJLEJNGrel16/32
8FJGJNLErel16/32
9x
90SETOr/m8
91SETNOr/m8
92SETBSETCSETNAEr/m8
93SETAESETNBSETNCr/m8
94SETESETZr/m8
95SETNESETNZr/m8
96SETBESETNAr/m8
97SETASETNBEr/m8
98SETSr/m8
99SETNSr/m8
9ASETPSETPEr/m8
9BSETNPSETPOr/m8
9CSETLSETNGEr/m8
9DSETGESETNLr/m8
9ESETLESETNGr/m8
9FSETGSETNLEr/m8
Ax
A0PUSHFS
A1POPFS
A2CPUID
A3BTr/mr
A4SHLDr/mrimm8
A5SHLDr/mrCL
A6XBTSrr/m
A7IBTSr/mr
A8PUSHGS
A9POPGS
AARSM
ABBTSr/mr
ACSHRDr/mrimm8
ADSHRDr/mrCL
AEFXSAVEFXRSTORLDMXCSRSTMXCSRLFENCEMFENCESFENCE(grp15)
AFIMULrr/m
Bx
B0CMPXCHGr/m8r8
B1CMPXCHGr/mr
B2LSSrm16:16/32
B3BTRr/mr
B4LFSrm16:16/32
B5LGSrm16:16/32
B6MOVZXrr/m8
B7MOVZXrr/m16
B8POPCNTrr/m(F3)
B9UD1(reserved #UD)
BABTBTSBTRBTCr/mimm8(grp 8)
BBBTCr/mr
BCBSFrr/m
BDBSRrr/m
BEMOVSXrr/m8
BFMOVSXrr/m16
Cx
C0XADDr/m8r8
C1XADDr/m16/32r16/32
C2CMPPSxmmxmm/mimm8
C3MOVNTIm32r32
C4PINSRWmmr32/m16imm8
C5PEXTRWr32mmimm8
C6SHUFPSxmmxmm/mimm8
C7Group9: CMPXCHG8B m64(/1)
C8BSWAPEAX
C9BSWAPECX
CABSWAPEDX
CBBSWAPEBX
CCBSWAPESP
CDBSWAPEBP
CEBSWAPESI
CFBSWAPEDI
Dx
D0ADDSUBPSxmm
D1PSRLWmmmm/m64
D2PSRLDmmmm/m64
D3PSRLQmmmm/m64
D4PADDQmmmm/m64
D5PMULLWmmmm/m64
D6MOVQxmm/m64xmm
D7PMOVMSKBr32mm
D8PSUBUSBmmmm/m64
D9PSUBUSWmmmm/m64
DAPMINUBmmmm/m64
DBPANDmmmm/m64
DCPADDUSBmmmm/m64
DDPADDUSWmmmm/m64
DEPMAXUBmmmm/m64
DFPANDNmmmm/m64
Ex
E0PAVGBmmmm/m64
E1PSRAWmmmm/m64
E2PSRADmmmm/m64
E3PAVGWmmmm/m64
E4PMULHUWmmmm/m64
E5PMULHWmmmm/m64
E6CVTPD2DQCVTTPD2DQ
E7MOVNTQm64mm
E8PSUBSBmmmm/m64
E9PSUBSWmmmm/m64
EAPMINSWmmmm/m64
EBPORmmmm/m64
ECPADDSBmmmm/m64
EDPADDSWmmmm/m64
EEPMAXSWmmmm/m64
EFPXORmmmm/m64
Fx
F0LDDQUxmmm128
F1PSLLWmmmm/m64
F2PSLLDmmmm/m64
F3PSLLQmmmm/m64
F4PMULUDQmmmm/m64
F5PMADDWDmmmm/m64
F6PSADBWmmmm/m64
F7MASKMOVQmmmm
F8PSUBBmmmm/m64
F9PSUBWmmmm/m64
FAPSUBDmmmm/m64
FBPSUBQmmmm/m64
FCPADDBmmmm/m64
FDPADDWmmmm/m64
FEPADDDmmmm/m64
FFUD0rr/m
.. raw:: html Coverage summary ---------------- .. list-table:: :header-rows: 1 :widths: 40 30 30 * - Status - Primary (256) - ``0F`` (256) * - ``I`` implemented - 202 - 59 * - ``+`` over-implemented - 0 - 2 * - ``~`` partial - 37 - 15 * - ``S`` system-only - 0 - 4 * - ``X`` gap - 4 - 7 * - ``P`` prefix - 12 - 0 * - ``.`` undefined - 1 - 169