From baae2636b87601221e88778881afb3a303f349fb Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 20 Aug 2026 09:53:28 +0100 Subject: [PATCH] Add support for x86 mnenomics `in` and `out` --- core/rexcode/isa/x86/mnemonics.odin | 2 + .../x86/tablegen/generated/decode_tables.odin | 1022 +++++++++-------- .../x86/tablegen/generated/encode_tables.odin | 100 +- .../isa/x86/tablegen/instruction_table.odin | 16 + .../isa/x86/tables/x86.clobber_forms.bin | Bin 39264 -> 39456 bytes .../isa/x86/tables/x86.encode_forms.bin | Bin 39264 -> 39456 bytes .../isa/x86/tables/x86.encode_recipes.bin | Bin 29448 -> 29592 bytes .../isa/x86/tables/x86.encode_runs.bin | Bin 9912 -> 9928 bytes core/rexcode/isa/x86/tables/x86.idx_0f.bin | Bin 4096 -> 4096 bytes core/rexcode/isa/x86/tables/x86.idx_0f38.bin | Bin 4096 -> 4096 bytes core/rexcode/isa/x86/tables/x86.idx_0f3a.bin | Bin 4096 -> 4096 bytes .../rexcode/isa/x86/tables/x86.idx_legacy.bin | Bin 4096 -> 4096 bytes core/rexcode/isa/x86/tables/x86.legacy.bin | Bin 26520 -> 26760 bytes src/asm_tables_amd64.cpp | 58 +- src/check_asm.cpp | 8 +- 15 files changed, 643 insertions(+), 563 deletions(-) diff --git a/core/rexcode/isa/x86/mnemonics.odin b/core/rexcode/isa/x86/mnemonics.odin index e5e6f31fc..c6b429ec6 100644 --- a/core/rexcode/isa/x86/mnemonics.odin +++ b/core/rexcode/isa/x86/mnemonics.odin @@ -1326,6 +1326,8 @@ Mnemonic :: enum u16 { WBNOINVD, SERIALIZE, PREFETCH, + IN, + OUT, // ------------------------------------------------------------------------- // SECTION: 4.29 WAITPKG Instructions diff --git a/core/rexcode/isa/x86/tablegen/generated/decode_tables.odin b/core/rexcode/isa/x86/tablegen/generated/decode_tables.odin index 7b2a7b461..17569f005 100644 --- a/core/rexcode/isa/x86/tablegen/generated/decode_tables.odin +++ b/core/rexcode/isa/x86/tablegen/generated/decode_tables.odin @@ -144,79 +144,79 @@ SIB_TABLE := [256]lib.SIB_Info{ } @(rodata) -LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ +LEGACY_DECODE_ENTRIES := [1338]lib.Decode_Entry{ {.NONE, 0, 0x00, 0xFF, .ADD, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x01, 0xFF, .ADD, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x01, 0xFF, .ADD, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x01, 0xFF, .ADD, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x02, 0xFF, .ADD, {.R8, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x03, 0xFF, .ADD, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x03, 0xFF, .ADD, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x03, 0xFF, .ADD, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x03, 0xFF, .ADD, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x04, 0xFF, .ADD, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x05, 0xFF, .ADD, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x05, 0xFF, .ADD, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, {.NONE, 0, 0x05, 0xFF, .ADD, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x08, 0xFF, .OR, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x09, 0xFF, .OR, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x09, 0xFF, .OR, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x09, 0xFF, .OR, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x09, 0xFF, .OR, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x0A, 0xFF, .OR, {.R8, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x0B, 0xFF, .OR, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x0B, 0xFF, .OR, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x0B, 0xFF, .OR, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x0B, 0xFF, .OR, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x0C, 0xFF, .OR, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, - {.NONE, 0, 0x0D, 0xFF, .OR, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x0D, 0xFF, .OR, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x0D, 0xFF, .OR, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, + {.NONE, 0, 0x0D, 0xFF, .OR, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x10, 0xFF, .ADC, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x11, 0xFF, .ADC, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x11, 0xFF, .ADC, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x11, 0xFF, .ADC, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x11, 0xFF, .ADC, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x12, 0xFF, .ADC, {.R8, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x13, 0xFF, .ADC, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x13, 0xFF, .ADC, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x13, 0xFF, .ADC, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x13, 0xFF, .ADC, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x14, 0xFF, .ADC, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x15, 0xFF, .ADC, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, {.NONE, 0, 0x15, 0xFF, .ADC, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x15, 0xFF, .ADC, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x18, 0xFF, .SBB, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x19, 0xFF, .SBB, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x19, 0xFF, .SBB, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x19, 0xFF, .SBB, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x19, 0xFF, .SBB, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x1A, 0xFF, .SBB, {.R8, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x1B, 0xFF, .SBB, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x1B, 0xFF, .SBB, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x1B, 0xFF, .SBB, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x1B, 0xFF, .SBB, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x1C, 0xFF, .SBB, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x1D, 0xFF, .SBB, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x1D, 0xFF, .SBB, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, {.NONE, 0, 0x1D, 0xFF, .SBB, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x20, 0xFF, .AND, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x21, 0xFF, .AND, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x21, 0xFF, .AND, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x21, 0xFF, .AND, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x21, 0xFF, .AND, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x22, 0xFF, .AND, {.R8, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x23, 0xFF, .AND, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x23, 0xFF, .AND, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x23, 0xFF, .AND, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x24, 0xFF, .AND, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, - {.NONE, 0, 0x25, 0xFF, .AND, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x25, 0xFF, .AND, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x25, 0xFF, .AND, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, + {.NONE, 0, 0x25, 0xFF, .AND, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x28, 0xFF, .SUB, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x29, 0xFF, .SUB, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x29, 0xFF, .SUB, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x29, 0xFF, .SUB, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x29, 0xFF, .SUB, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x2A, 0xFF, .SUB, {.R8, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x2B, 0xFF, .SUB, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x2B, 0xFF, .SUB, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x2B, 0xFF, .SUB, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x2B, 0xFF, .SUB, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x2C, 0xFF, .SUB, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, - {.NONE, 0, 0x2D, 0xFF, .SUB, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, - {.NONE, 0, 0x2D, 0xFF, .SUB, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x2D, 0xFF, .SUB, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0x2D, 0xFF, .SUB, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0x2D, 0xFF, .SUB, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, {.NONE, 0, 0x30, 0xFF, .XOR, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x31, 0xFF, .XOR, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x31, 0xFF, .XOR, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, @@ -234,23 +234,23 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0x39, 0xFF, .CMP, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x39, 0xFF, .CMP, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x3A, 0xFF, .CMP, {.R8, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x3B, 0xFF, .CMP, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x3B, 0xFF, .CMP, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x3B, 0xFF, .CMP, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x3B, 0xFF, .CMP, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x3B, 0xFF, .CMP, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x3C, 0xFF, .CMP, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0x3D, 0xFF, .CMP, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, {.NONE, 0, 0x3D, 0xFF, .CMP, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x3D, 0xFF, .CMP, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, - {.NONE, 0, 0x3D, 0xFF, .CMP, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, - {.NONE, 0, 0x40, 0xFF, .INC, {.R16, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {mode_32_only=true, op_count=1}}, {.NONE, 0, 0x40, 0xFF, .INC, {.R32, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {mode_32_only=true, op_count=1}}, + {.NONE, 0, 0x40, 0xFF, .INC, {.R16, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {mode_32_only=true, op_count=1}}, {.NONE, 0, 0x48, 0xFF, .DEC, {.R16, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {mode_32_only=true, op_count=1}}, {.NONE, 0, 0x48, 0xFF, .DEC, {.R32, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {mode_32_only=true, op_count=1}}, {.NONE, 0, 0x50, 0xFF, .PUSH, {.R16, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x50, 0xFF, .PUSH, {.R64, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {default_64=true, op_count=1}}, - {.NONE, 0, 0x58, 0xFF, .POP, {.R64, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {default_64=true, op_count=1}}, {.NONE, 0, 0x58, 0xFF, .POP, {.R16, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x62, 0xFF, .BOUND, {.R32, .M32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {mode_32_only=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x58, 0xFF, .POP, {.R64, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {default_64=true, op_count=1}}, {.NONE, 0, 0x62, 0xFF, .BOUND, {.R16, .M16_16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {mode_32_only=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x62, 0xFF, .BOUND, {.R32, .M32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {mode_32_only=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x63, 0xFF, .MOVSXD, {.R64, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x63, 0xFF, .ARPL, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x68, 0xFF, .PUSH, {.IMM16, .NONE, .NONE, .NONE}, {.IW, .NONE, .NONE, .NONE}, {op_count=1}}, @@ -260,38 +260,38 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0x69, 0xFF, .IMUL, {.R32, .RM32, .IMM32, .NONE}, {.REG, .MR, .ID, .NONE}, {op_count=3, needs_modrm=true}}, {.NONE, 0, 0x6A, 0xFF, .PUSH, {.IMM8SX, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x6B, 0xFF, .IMUL, {.R16, .RM16, .IMM8SX, .NONE}, {.REG, .MR, .IB, .NONE}, {op_count=3, needs_modrm=true}}, - {.NONE, 0, 0x6B, 0xFF, .IMUL, {.R32, .RM32, .IMM8SX, .NONE}, {.REG, .MR, .IB, .NONE}, {op_count=3, needs_modrm=true}}, {.NONE, 0, 0x6B, 0xFF, .IMUL, {.R64, .RM64, .IMM8SX, .NONE}, {.REG, .MR, .IB, .NONE}, {force_rex_w=true, op_count=3, needs_modrm=true}}, + {.NONE, 0, 0x6B, 0xFF, .IMUL, {.R32, .RM32, .IMM8SX, .NONE}, {.REG, .MR, .IB, .NONE}, {op_count=3, needs_modrm=true}}, {.NONE, 0, 0x70, 0xFF, .JO, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x71, 0xFF, .JNO, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x72, 0xFF, .JC, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x72, 0xFF, .JB, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x72, 0xFF, .JNAE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0x72, 0xFF, .JB, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0x72, 0xFF, .JC, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x73, 0xFF, .JNB, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x73, 0xFF, .JAE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x73, 0xFF, .JNC, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0x73, 0xFF, .JAE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x74, 0xFF, .JE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x74, 0xFF, .JZ, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x75, 0xFF, .JNE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x75, 0xFF, .JNZ, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x76, 0xFF, .JBE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x76, 0xFF, .JNA, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x77, 0xFF, .JA, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x77, 0xFF, .JNBE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0x77, 0xFF, .JA, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x78, 0xFF, .JS, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x79, 0xFF, .JNS, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7A, 0xFF, .JP, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7A, 0xFF, .JPE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7B, 0xFF, .JNP, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7B, 0xFF, .JPO, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x7C, 0xFF, .JL, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7C, 0xFF, .JNGE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0x7C, 0xFF, .JL, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7D, 0xFF, .JGE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7D, 0xFF, .JNL, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x7E, 0xFF, .JNG, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7E, 0xFF, .JLE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, - {.NONE, 0, 0x7F, 0xFF, .JNLE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0x7E, 0xFF, .JNG, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x7F, 0xFF, .JG, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0x7F, 0xFF, .JNLE, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0x80, 0x00, .ADD, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x80, 0x01, .OR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x80, 0x02, .ADC, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, @@ -303,8 +303,8 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0x81, 0x00, .ADD, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x00, .ADD, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x00, .ADD, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x81, 0x01, .OR, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x01, .OR, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x81, 0x01, .OR, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x01, .OR, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x02, .ADC, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x02, .ADC, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, @@ -313,8 +313,8 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0x81, 0x03, .SBB, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x03, .SBB, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x04, .AND, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x81, 0x04, .AND, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x04, .AND, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x81, 0x04, .AND, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x05, .SUB, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x05, .SUB, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x05, .SUB, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, @@ -322,23 +322,23 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0x81, 0x06, .XOR, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x06, .XOR, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x07, .CMP, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x81, 0x07, .CMP, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x81, 0x07, .CMP, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x81, 0x07, .CMP, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x00, .ADD, {.RM64, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x00, .ADD, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x00, .ADD, {.RM32, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x83, 0x01, .OR, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x01, .OR, {.RM32, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x01, .OR, {.RM64, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x83, 0x01, .OR, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x02, .ADC, {.RM64, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x02, .ADC, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x02, .ADC, {.RM32, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x03, .SBB, {.RM32, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x03, .SBB, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x03, .SBB, {.RM64, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x83, 0x04, .AND, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x83, 0x04, .AND, {.RM32, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x04, .AND, {.RM64, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x83, 0x04, .AND, {.RM32, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x83, 0x04, .AND, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x05, .SUB, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x05, .SUB, {.RM32, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x05, .SUB, {.RM64, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, @@ -349,9 +349,9 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0x83, 0x07, .CMP, {.RM64, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x83, 0x07, .CMP, {.RM16, .IMM8SX, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x84, 0xFF, .TEST, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, - {.NONE, 0, 0x85, 0xFF, .TEST, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x85, 0xFF, .TEST, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, {.NONE, 0, 0x85, 0xFF, .TEST, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {op_count=2, needs_modrm=true}}, + {.NONE, 0, 0x85, 0xFF, .TEST, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x86, 0xFF, .XCHG, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x87, 0xFF, .XCHG, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x87, 0xFF, .XCHG, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {lock_ok=true, op_count=2, needs_modrm=true}}, @@ -373,23 +373,23 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0x8E, 0xFF, .MOV, {.SREG, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {force_rex_w=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0x8F, 0x00, .POP, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {.NONE, 0, 0x8F, 0x00, .POP, {.RM64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {default_64=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {.NONE, 0, 0x90, 0xFF, .NOP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0x90, 0xFF, .XCHG, {.EAX_IMPL, .R32, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x90, 0xFF, .XCHG, {.AX_IMPL, .R16, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0x90, 0xFF, .XCHG, {.RAX_IMPL, .R64, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, - {.NONE, 0, 0x90, 0xFF, .NOP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, + {.NONE, 0, 0x98, 0xFF, .CBW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true}}, {.NONE, 0, 0x98, 0xFF, .CDQE, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true}}, {.NONE, 0, 0x98, 0xFF, .CWDE, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, - {.NONE, 0, 0x98, 0xFF, .CBW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true}}, - {.NONE, 0, 0x99, 0xFF, .CWD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true}}, {.NONE, 0, 0x99, 0xFF, .CDQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, + {.NONE, 0, 0x99, 0xFF, .CWD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true}}, {.NONE, 0, 0x99, 0xFF, .CQO, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true}}, - {.NONE, 0, 0x9B, 0xFF, .FWAIT, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0x9B, 0xFF, .WAIT, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, - {.NONE, 0, 0x9C, 0xFF, .PUSHFD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, + {.NONE, 0, 0x9B, 0xFF, .FWAIT, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0x9C, 0xFF, .PUSHF, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true}}, + {.NONE, 0, 0x9C, 0xFF, .PUSHFD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0x9C, 0xFF, .PUSHFQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {default_64=true}}, - {.NONE, 0, 0x9D, 0xFF, .POPFD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0x9D, 0xFF, .POPF, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true}}, + {.NONE, 0, 0x9D, 0xFF, .POPFD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0x9D, 0xFF, .POPFQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {default_64=true}}, {.NONE, 0, 0x9E, 0xFF, .SAHF, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0x9F, 0xFF, .LAHF, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, @@ -409,35 +409,35 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0xA3, 0xFF, .MOV, {.MOFFS16, .AX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0xA3, 0xFF, .MOV, {.MOFFS32, .EAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0xA3, 0xFF, .MOV, {.MOFFS64, .RAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, - {.NONE, 0, 0xA4, 0xFF, .MOVS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xA4, 0xFF, .MOVSB, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, - {.NONE, 0, 0xA5, 0xFF, .MOVSD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, + {.NONE, 0, 0xA4, 0xFF, .MOVS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xA5, 0xFF, .MOVSW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true, rep_ok=true}}, {.NONE, 0, 0xA5, 0xFF, .MOVSQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true, rep_ok=true}}, + {.NONE, 0, 0xA5, 0xFF, .MOVSD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xA6, 0xFF, .CMPS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xA6, 0xFF, .CMPSB, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, - {.NONE, 0, 0xA7, 0xFF, .CMPSD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, - {.NONE, 0, 0xA7, 0xFF, .CMPSW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true, rep_ok=true}}, {.NONE, 0, 0xA7, 0xFF, .CMPSQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true, rep_ok=true}}, + {.NONE, 0, 0xA7, 0xFF, .CMPSW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true, rep_ok=true}}, + {.NONE, 0, 0xA7, 0xFF, .CMPSD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xA8, 0xFF, .TEST, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, - {.NONE, 0, 0xA9, 0xFF, .TEST, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0xA9, 0xFF, .TEST, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xA9, 0xFF, .TEST, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0xA9, 0xFF, .TEST, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, - {.NONE, 0, 0xAA, 0xFF, .STOSB, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xAA, 0xFF, .STOS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, - {.NONE, 0, 0xAB, 0xFF, .STOSD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, + {.NONE, 0, 0xAA, 0xFF, .STOSB, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xAB, 0xFF, .STOSW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true, rep_ok=true}}, {.NONE, 0, 0xAB, 0xFF, .STOSQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true, rep_ok=true}}, + {.NONE, 0, 0xAB, 0xFF, .STOSD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xAC, 0xFF, .LODS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xAC, 0xFF, .LODSB, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xAD, 0xFF, .LODSQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true, rep_ok=true}}, - {.NONE, 0, 0xAD, 0xFF, .LODSW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true, rep_ok=true}}, {.NONE, 0, 0xAD, 0xFF, .LODSD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, + {.NONE, 0, 0xAD, 0xFF, .LODSW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true, rep_ok=true}}, {.NONE, 0, 0xAE, 0xFF, .SCASB, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xAE, 0xFF, .SCAS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, + {.NONE, 0, 0xAF, 0xFF, .SCASD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xAF, 0xFF, .SCASQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true, rep_ok=true}}, {.NONE, 0, 0xAF, 0xFF, .SCASW, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true, rep_ok=true}}, - {.NONE, 0, 0xAF, 0xFF, .SCASD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {rep_ok=true}}, {.NONE, 0, 0xB0, 0xFF, .MOV, {.R8, .IMM8, .NONE, .NONE}, {.OP_R, .IB, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0xB8, 0xFF, .MOVABS, {.R64, .IMM64, .NONE, .NONE}, {.OP_R, .IQ, .NONE, .NONE}, {force_rex_w=true, op_count=2}}, {.NONE, 0, 0xB8, 0xFF, .MOV, {.R32, .IMM32, .NONE, .NONE}, {.OP_R, .ID, .NONE, .NONE}, {op_count=2}}, @@ -450,8 +450,8 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0xC0, 0x04, .SHL, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC0, 0x05, .SHR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC0, 0x07, .SAR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0xC1, 0x00, .ROL, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x00, .ROL, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0xC1, 0x00, .ROL, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x00, .ROL, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x01, .ROR, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x01, .ROR, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, @@ -459,9 +459,9 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0xC1, 0x02, .RCL, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x02, .RCL, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x02, .RCL, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, + {.NONE, 0, 0xC1, 0x03, .RCR, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x03, .RCR, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x03, .RCR, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, - {.NONE, 0, 0xC1, 0x03, .RCR, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x04, .SHL, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {force_rex_w=true, modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x04, .SHL, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xC1, 0x04, .SHL, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, @@ -482,9 +482,9 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0xCC, 0xFF, .INT3, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xCD, 0xFF, .INT, {.IMM8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0xCE, 0xFF, .INTO, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, - {.NONE, 0, 0xCF, 0xFF, .IRETD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, - {.NONE, 0, 0xCF, 0xFF, .IRETQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true}}, {.NONE, 0, 0xCF, 0xFF, .IRET, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {opsize_16=true}}, + {.NONE, 0, 0xCF, 0xFF, .IRETQ, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {force_rex_w=true}}, + {.NONE, 0, 0xCF, 0xFF, .IRETD, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xD0, 0x00, .ROL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xD0, 0x01, .ROR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, {.NONE, 0, 0xD0, 0x02, .RCL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, {modrm_reg_ext=true, op_count=2, needs_modrm=true}}, @@ -567,8 +567,8 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0xD9, 0x05, .FLDCW, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {.NONE, 0, 0xD9, 0x06, .FSTENV, {.M, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {.NONE, 0, 0xD9, 0x06, .FNSTENV, {.M, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {.NONE, 0, 0xD9, 0x07, .FSTCW, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {.NONE, 0, 0xD9, 0x07, .FNSTCW, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {.NONE, 0, 0xD9, 0x07, .FSTCW, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {.NONE, 0, 0xD9, 0xC0, .FLD, {.STI, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0xD9, 0xC8, .FXCH, {.STI, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0xD9, 0xC9, .FXCH, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, @@ -599,8 +599,8 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0xD9, 0xFC, .FRNDINT, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xD9, 0xFD, .FSCALE, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xD9, 0xFE, .FSIN, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, - {.NONE, 0, 0xD9, 0xFF, .FCOS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xD9, 0xFF, .FLD, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {op_count=1, needs_modrm=true}}, + {.NONE, 0, 0xD9, 0xFF, .FCOS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xDA, 0x01, .FIMUL, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {.NONE, 0, 0xDA, 0x02, .FICOM, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {.NONE, 0, 0xDA, 0x03, .FICOMP, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {modrm_reg_ext=true, op_count=1, needs_modrm=true}}, @@ -700,9 +700,21 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {.NONE, 0, 0xE3, 0xFF, .JCXZ, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0xE3, 0xFF, .JECXZ, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0xE3, 0xFF, .JRCXZ, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {force_rex_w=true, op_count=1}}, + {.NONE, 0, 0xE4, 0xFF, .IN, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xE5, 0xFF, .IN, {.AX_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {opsize_16=true, op_count=2}}, + {.NONE, 0, 0xE5, 0xFF, .IN, {.EAX_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xE6, 0xFF, .OUT, {.IMM8, .AL_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xE7, 0xFF, .OUT, {.IMM8, .AX_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, {opsize_16=true, op_count=2}}, + {.NONE, 0, 0xE7, 0xFF, .OUT, {.IMM8, .EAX_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, {op_count=2}}, {.NONE, 0, 0xE8, 0xFF, .CALL, {.REL32, .NONE, .NONE, .NONE}, {.ID, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0xE9, 0xFF, .JMP, {.REL32, .NONE, .NONE, .NONE}, {.ID, .NONE, .NONE, .NONE}, {op_count=1}}, {.NONE, 0, 0xEB, 0xFF, .JMP, {.REL8, .NONE, .NONE, .NONE}, {.IB, .NONE, .NONE, .NONE}, {op_count=1}}, + {.NONE, 0, 0xEC, 0xFF, .IN, {.AL_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xED, 0xFF, .IN, {.EAX_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xED, 0xFF, .IN, {.AX_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, {opsize_16=true, op_count=2}}, + {.NONE, 0, 0xEE, 0xFF, .OUT, {.DX_IMPL, .AL_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xEF, 0xFF, .OUT, {.DX_IMPL, .EAX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, {op_count=2}}, + {.NONE, 0, 0xEF, 0xFF, .OUT, {.DX_IMPL, .AX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, {opsize_16=true, op_count=2}}, {.NONE, 0, 0xF0, 0xFF, .LOCK, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xF4, 0xFF, .HLT, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, {.NONE, 0, 0xF5, 0xFF, .CMC, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {}}, @@ -763,20 +775,20 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F, 0, 0x00, 0x00, .SLDT, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x00, 0x00, .SLDT, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x00, 0x01, .STR, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0x00, 0x01, .STR, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x00, 0x01, .STR, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0x00, 0x01, .STR, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x00, 0x02, .LLDT, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x00, 0x03, .LTR, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x00, 0x04, .VERR, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x00, 0x05, .VERW, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0x01, 0x00, .SGDT, {.M16_64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x00, .SGDT, {.M16_32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0x01, 0x00, .SGDT, {.M16_64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x01, .SIDT, {.M16_64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x01, .SIDT, {.M16_32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0x01, 0x02, .LGDT, {.M16_64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x02, .LGDT, {.M16_32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0x01, 0x03, .LIDT, {.M16_64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0x01, 0x02, .LGDT, {.M16_64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x03, .LIDT, {.M16_32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0x01, 0x03, .LIDT, {.M16_64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x04, .SMSW, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x04, .SMSW, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x01, 0x04, .SMSW, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, @@ -817,12 +829,12 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F, 0, 0x01, 0xFD, .RDPRU, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, {._0F, 0, 0x01, 0xFE, .INVLPGB, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, {._0F, 0, 0x01, 0xFF, .TLBSYNC, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, - {._0F, 0, 0x02, 0xFF, .LAR, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x02, 0xFF, .LAR, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, force_rex_w=true, op_count=2, needs_modrm=true}}, + {._0F, 0, 0x02, 0xFF, .LAR, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x02, 0xFF, .LAR, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, - {._0F, 0, 0x03, 0xFF, .LSL, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x03, 0xFF, .LSL, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, force_rex_w=true, op_count=2, needs_modrm=true}}, {._0F, 0, 0x03, 0xFF, .LSL, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, + {._0F, 0, 0x03, 0xFF, .LSL, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x05, 0xFF, .SYSCALL, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, {._0F, 0, 0x06, 0xFF, .CLTS, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, {._0F, 0, 0x07, 0xFF, .SYSRET, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, @@ -838,17 +850,17 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F, 0, 0x13, 0xFF, .MOVLPS, {.M64, .XMM, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x14, 0xFF, .UNPCKLPS, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x15, 0xFF, .UNPCKHPS, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, - {._0F, 0, 0x16, 0xFF, .MOVHPS, {.XMM, .M64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x16, 0xFF, .MOVLHPS, {.XMM, .XMM, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, + {._0F, 0, 0x16, 0xFF, .MOVHPS, {.XMM, .M64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x17, 0xFF, .MOVHPS, {.M64, .XMM, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x18, 0x00, .PREFETCHNTA, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x18, 0x01, .PREFETCHT0, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x18, 0x02, .PREFETCHT1, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x18, 0x03, .PREFETCHT2, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x1C, 0x00, .CLDEMOTE, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0x1F, 0x00, .NOP, {.RM32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x1F, 0x00, .NOP, {.RM64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x1F, 0x00, .NOP, {.RM16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0x1F, 0x00, .NOP, {.RM32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0x20, 0xFF, .MOV, {.R64, .CR, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x21, 0xFF, .MOV, {.R64, .DR, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0x22, 0xFF, .MOV, {.CR, .R64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, @@ -1062,16 +1074,16 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F, 0, 0xAD, 0xFF, .SHRD, {.RM32, .R32, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, {esc=._0F, op_count=3, needs_modrm=true}}, {._0F, 0, 0xAD, 0xFF, .SHRD, {.RM16, .R16, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, {esc=._0F, op_count=3, needs_modrm=true}}, {._0F, 0, 0xAD, 0xFF, .SHRD, {.RM64, .R64, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, {esc=._0F, force_rex_w=true, op_count=3, needs_modrm=true}}, - {._0F, 0, 0xAE, 0x00, .FXSAVE64, {.M512, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x00, .FXSAVE, {.M512, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0xAE, 0x00, .FXSAVE64, {.M512, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x01, .FXRSTOR, {.M512, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x01, .FXRSTOR64, {.M512, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0xAE, 0x04, .XSAVE, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x04, .XSAVE64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0xAE, 0x04, .XSAVE, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x05, .XRSTOR64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x05, .XRSTOR, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0xAE, 0x06, .XSAVEOPT64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x06, .XSAVEOPT, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0xAE, 0x06, .XSAVEOPT64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0x07, .CLFLUSH, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xAE, 0xE8, .LFENCE, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, {._0F, 0, 0xAE, 0xF0, .MFENCE, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, {esc=._0F}}, @@ -1119,29 +1131,29 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F, 0, 0xBF, 0xFF, .MOVSX, {.R64, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, force_rex_w=true, op_count=2, needs_modrm=true}}, {._0F, 0, 0xBF, 0xFF, .MOVSX, {.R32, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 0, 0xC0, 0xFF, .XADD, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, lock_ok=true, op_count=2, needs_modrm=true}}, - {._0F, 0, 0xC1, 0xFF, .XADD, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, lock_ok=true, op_count=2, needs_modrm=true}}, - {._0F, 0, 0xC1, 0xFF, .XADD, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, {._0F, 0, 0xC1, 0xFF, .XADD, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, lock_ok=true, op_count=2, needs_modrm=true}}, + {._0F, 0, 0xC1, 0xFF, .XADD, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, force_rex_w=true, lock_ok=true, op_count=2, needs_modrm=true}}, + {._0F, 0, 0xC1, 0xFF, .XADD, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, lock_ok=true, op_count=2, needs_modrm=true}}, {._0F, 0, 0xC2, 0xFF, .CMPPS, {.XMM, .XMM_M128, .IMM8, .NONE}, {.REG, .MR, .IB, .NONE}, {esc=._0F, op_count=3, needs_modrm=true}}, {._0F, 0, 0xC6, 0xFF, .SHUFPS, {.XMM, .XMM_M128, .IMM8, .NONE}, {.REG, .MR, .IB, .NONE}, {esc=._0F, op_count=3, needs_modrm=true}}, {._0F, 0, 0xC7, 0x01, .CMPXCHG8B, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, lock_ok=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x01, .CMPXCHG16B, {.M128, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, lock_ok=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x03, .XRSTORS, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x03, .XRSTORS64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0xC7, 0x04, .XSAVEC64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x04, .XSAVEC, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0xC7, 0x04, .XSAVEC64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x05, .XSAVES, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x05, .XSAVES64, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0xC7, 0x06, .RDRAND, {.R16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x06, .VMPTRLD, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x06, .RDRAND, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0xC7, 0x06, .RDRAND, {.R16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x06, .RDRAND, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0xC7, 0x07, .VMPTRST, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 0, 0xC7, 0x07, .RDSEED, {.R16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x07, .RDSEED, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC7, 0x07, .RDSEED, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0xC7, 0x07, .RDSEED, {.R16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 0, 0xC8, 0xFF, .BSWAP, {.R64, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, op_count=1}}, + {._0F, 0, 0xC7, 0x07, .VMPTRST, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 0, 0xC8, 0xFF, .BSWAP, {.R32, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {esc=._0F, op_count=1}}, + {._0F, 0, 0xC8, 0xFF, .BSWAP, {.R64, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, {esc=._0F, force_rex_w=true, op_count=1}}, {._0F, 0, 0xFF, 0xFF, .UD0, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, op_count=2, needs_modrm=true}}, {._0F, 1, 0x10, 0xFF, .MOVUPD, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, prefix=1, op_count=2, needs_modrm=true}}, {._0F, 1, 0x11, 0xFF, .MOVUPD, {.XMM_M128, .XMM, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, prefix=1, op_count=2, needs_modrm=true}}, @@ -1298,14 +1310,14 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F, 2, 0x70, 0xFF, .PSHUFHW, {.XMM, .XMM_M128, .IMM8, .NONE}, {.REG, .MR, .IB, .NONE}, {esc=._0F, prefix=2, op_count=3, needs_modrm=true}}, {._0F, 2, 0x7E, 0xFF, .MOVQ, {.XMM, .XMM_M64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F, prefix=2, op_count=2, needs_modrm=true}}, {._0F, 2, 0x7F, 0xFF, .MOVDQU, {.XMM_M128, .XMM, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F, prefix=2, op_count=2, needs_modrm=true}}, - {._0F, 2, 0xAE, 0x00, .RDFSBASE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x00, .RDFSBASE, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 2, 0xAE, 0x00, .RDFSBASE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x01, .RDGSBASE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x01, .RDGSBASE, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 2, 0xAE, 0x02, .WRFSBASE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x02, .WRFSBASE, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, - {._0F, 2, 0xAE, 0x03, .WRGSBASE, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 2, 0xAE, 0x02, .WRFSBASE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x03, .WRGSBASE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, + {._0F, 2, 0xAE, 0x03, .WRGSBASE, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x04, .PTWRITE, {.RM32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x04, .PTWRITE, {.RM64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, {._0F, 2, 0xAE, 0x05, .INCSSPQ, {.R64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, {esc=._0F, prefix=2, force_rex_w=true, modrm_reg_ext=true, op_count=1, needs_modrm=true}}, @@ -1358,18 +1370,18 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F38, 0, 0xCB, 0xFF, .SHA256RNDS2, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, {esc=._0F38, op_count=3, needs_modrm=true}}, {._0F38, 0, 0xCC, 0xFF, .SHA256MSG1, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xCD, 0xFF, .SHA256MSG2, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, - {._0F38, 0, 0xF0, 0xFF, .MOVBE, {.R32, .M32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF0, 0xFF, .MOVBE, {.R64, .M64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, force_rex_w=true, op_count=2, needs_modrm=true}}, + {._0F38, 0, 0xF0, 0xFF, .MOVBE, {.R32, .M32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF0, 0xFF, .MOVBE, {.R16, .M16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, + {._0F38, 0, 0xF1, 0xFF, .MOVBE, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF1, 0xFF, .MOVBE, {.M16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF1, 0xFF, .MOVBE, {.M64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, force_rex_w=true, op_count=2, needs_modrm=true}}, - {._0F38, 0, 0xF1, 0xFF, .MOVBE, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF6, 0xFF, .WRSSD, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF6, 0xFF, .WRSSQ, {.M64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, force_rex_w=true, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF9, 0xFF, .MOVDIRI, {.M64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, force_rex_w=true, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xF9, 0xFF, .MOVDIRI, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, - {._0F38, 0, 0xFC, 0xFF, .AADD, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 0, 0xFC, 0xFF, .AADD, {.M64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, force_rex_w=true, op_count=2, needs_modrm=true}}, + {._0F38, 0, 0xFC, 0xFF, .AADD, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, op_count=2, needs_modrm=true}}, {._0F38, 1, 0x00, 0xFF, .PSHUFB, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=1, op_count=2, needs_modrm=true}}, {._0F38, 1, 0x01, 0xFF, .PHADDW, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=1, op_count=2, needs_modrm=true}}, {._0F38, 1, 0x02, 0xFF, .PHADDD, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=1, op_count=2, needs_modrm=true}}, @@ -1435,8 +1447,8 @@ LEGACY_DECODE_ENTRIES := [1326]lib.Decode_Entry{ {._0F38, 2, 0xF6, 0xFF, .ADOX, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=2, force_rex_w=true, op_count=2, needs_modrm=true}}, {._0F38, 2, 0xF6, 0xFF, .ADOX, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=2, op_count=2, needs_modrm=true}}, {._0F38, 2, 0xF8, 0xFF, .ENQCMDS, {.R64, .M512, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=2, op_count=2, needs_modrm=true}}, - {._0F38, 2, 0xFC, 0xFF, .AXOR, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, prefix=2, op_count=2, needs_modrm=true}}, {._0F38, 2, 0xFC, 0xFF, .AXOR, {.M64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, prefix=2, force_rex_w=true, op_count=2, needs_modrm=true}}, + {._0F38, 2, 0xFC, 0xFF, .AXOR, {.M32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, {esc=._0F38, prefix=2, op_count=2, needs_modrm=true}}, {._0F38, 3, 0xF0, 0xFF, .CRC32, {.R64, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=3, force_rex_w=true, op_count=2, needs_modrm=true}}, {._0F38, 3, 0xF0, 0xFF, .CRC32, {.R32, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=3, op_count=2, needs_modrm=true}}, {._0F38, 3, 0xF1, 0xFF, .CRC32, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, {esc=._0F38, prefix=3, force_rex_w=true, op_count=2, needs_modrm=true}}, @@ -2756,27 +2768,35 @@ DECODE_INDEX_LEGACY := [4][256]lib.Decode_Index{ 0xE1 = { 550, 1}, 0xE2 = { 551, 1}, 0xE3 = { 552, 3}, - 0xE8 = { 555, 1}, - 0xE9 = { 556, 1}, - 0xEB = { 557, 1}, - 0xF0 = { 558, 1}, - 0xF4 = { 559, 1}, - 0xF5 = { 560, 1}, - 0xF6 = { 561, 7}, - 0xF7 = { 568, 21}, - 0xF8 = { 589, 1}, - 0xF9 = { 590, 1}, - 0xFA = { 591, 1}, - 0xFB = { 592, 1}, - 0xFC = { 593, 1}, - 0xFD = { 594, 1}, - 0xFE = { 595, 2}, - 0xFF = { 597, 16}, + 0xE4 = { 555, 1}, + 0xE5 = { 556, 2}, + 0xE6 = { 558, 1}, + 0xE7 = { 559, 2}, + 0xE8 = { 561, 1}, + 0xE9 = { 562, 1}, + 0xEB = { 563, 1}, + 0xEC = { 564, 1}, + 0xED = { 565, 2}, + 0xEE = { 567, 1}, + 0xEF = { 568, 2}, + 0xF0 = { 570, 1}, + 0xF4 = { 571, 1}, + 0xF5 = { 572, 1}, + 0xF6 = { 573, 7}, + 0xF7 = { 580, 21}, + 0xF8 = { 601, 1}, + 0xF9 = { 602, 1}, + 0xFA = { 603, 1}, + 0xFB = { 604, 1}, + 0xFC = { 605, 1}, + 0xFD = { 606, 1}, + 0xFE = { 607, 2}, + 0xFF = { 609, 16}, }, { // prefix = 66 }, { // prefix = F3 - 0x90 = { 613, 1}, + 0x90 = { 625, 1}, }, { // prefix = F2 }, @@ -2785,434 +2805,434 @@ DECODE_INDEX_LEGACY := [4][256]lib.Decode_Index{ @(rodata) DECODE_INDEX_ESC_0F := [4][256]lib.Decode_Index{ { // prefix = none - 0x00 = { 614, 10}, - 0x01 = { 624, 48}, - 0x02 = { 672, 3}, - 0x03 = { 675, 3}, - 0x05 = { 678, 1}, - 0x06 = { 679, 1}, - 0x07 = { 680, 1}, - 0x08 = { 681, 1}, - 0x09 = { 682, 1}, - 0x0B = { 683, 1}, - 0x0D = { 684, 2}, - 0x10 = { 686, 1}, - 0x11 = { 687, 1}, - 0x12 = { 688, 2}, - 0x13 = { 690, 1}, - 0x14 = { 691, 1}, - 0x15 = { 692, 1}, - 0x16 = { 693, 2}, - 0x17 = { 695, 1}, - 0x18 = { 696, 4}, - 0x1C = { 700, 1}, - 0x1F = { 701, 3}, - 0x20 = { 704, 1}, - 0x21 = { 705, 1}, - 0x22 = { 706, 1}, - 0x23 = { 707, 1}, - 0x28 = { 708, 1}, - 0x29 = { 709, 1}, - 0x2B = { 710, 1}, - 0x2E = { 711, 1}, - 0x2F = { 712, 1}, - 0x30 = { 713, 1}, - 0x31 = { 714, 1}, - 0x32 = { 715, 1}, - 0x33 = { 716, 1}, - 0x34 = { 717, 1}, - 0x35 = { 718, 1}, - 0x40 = { 719, 3}, - 0x41 = { 722, 3}, - 0x42 = { 725, 9}, - 0x43 = { 734, 9}, - 0x44 = { 743, 6}, - 0x45 = { 749, 6}, - 0x46 = { 755, 6}, - 0x47 = { 761, 6}, - 0x48 = { 767, 3}, - 0x49 = { 770, 3}, - 0x4A = { 773, 6}, - 0x4B = { 779, 6}, - 0x4C = { 785, 6}, - 0x4D = { 791, 6}, - 0x4E = { 797, 6}, - 0x4F = { 803, 6}, - 0x50 = { 809, 2}, - 0x51 = { 811, 1}, - 0x52 = { 812, 1}, - 0x53 = { 813, 1}, - 0x54 = { 814, 1}, - 0x55 = { 815, 1}, - 0x56 = { 816, 1}, - 0x57 = { 817, 1}, - 0x58 = { 818, 1}, - 0x59 = { 819, 1}, - 0x5A = { 820, 1}, - 0x5B = { 821, 1}, - 0x5C = { 822, 1}, - 0x5D = { 823, 1}, - 0x5E = { 824, 1}, - 0x5F = { 825, 1}, - 0x6E = { 826, 1}, - 0x6F = { 827, 1}, - 0x70 = { 828, 1}, - 0x78 = { 829, 1}, - 0x79 = { 830, 1}, - 0x7E = { 831, 1}, - 0x7F = { 832, 1}, - 0x80 = { 833, 1}, - 0x81 = { 834, 1}, - 0x82 = { 835, 3}, - 0x83 = { 838, 3}, - 0x84 = { 841, 2}, - 0x85 = { 843, 2}, - 0x86 = { 845, 2}, - 0x87 = { 847, 2}, - 0x88 = { 849, 1}, - 0x89 = { 850, 1}, - 0x8A = { 851, 2}, - 0x8B = { 853, 2}, - 0x8C = { 855, 2}, - 0x8D = { 857, 2}, - 0x8E = { 859, 2}, - 0x8F = { 861, 2}, - 0x90 = { 863, 1}, - 0x91 = { 864, 1}, - 0x92 = { 865, 3}, - 0x93 = { 868, 3}, - 0x94 = { 871, 2}, - 0x95 = { 873, 2}, - 0x96 = { 875, 2}, - 0x97 = { 877, 2}, - 0x98 = { 879, 1}, - 0x99 = { 880, 1}, - 0x9A = { 881, 2}, - 0x9B = { 883, 2}, - 0x9C = { 885, 2}, - 0x9D = { 887, 2}, - 0x9E = { 889, 2}, - 0x9F = { 891, 2}, - 0xA0 = { 893, 1}, - 0xA1 = { 894, 1}, - 0xA2 = { 895, 1}, - 0xA3 = { 896, 3}, - 0xA4 = { 899, 3}, - 0xA5 = { 902, 3}, - 0xA8 = { 905, 1}, - 0xA9 = { 906, 1}, - 0xAA = { 907, 1}, - 0xAB = { 908, 3}, - 0xAC = { 911, 3}, - 0xAD = { 914, 3}, - 0xAE = { 917, 14}, - 0xAF = { 931, 3}, - 0xB0 = { 934, 1}, - 0xB1 = { 935, 3}, - 0xB3 = { 938, 3}, - 0xB6 = { 941, 3}, - 0xB7 = { 944, 2}, - 0xB9 = { 946, 1}, - 0xBA = { 947, 12}, - 0xBB = { 959, 3}, - 0xBC = { 962, 3}, - 0xBD = { 965, 3}, - 0xBE = { 968, 3}, - 0xBF = { 971, 2}, - 0xC0 = { 973, 1}, - 0xC1 = { 974, 3}, - 0xC2 = { 977, 1}, - 0xC6 = { 978, 1}, - 0xC7 = { 979, 16}, - 0xC8 = { 995, 2}, - 0xFF = { 997, 1}, + 0x00 = { 626, 10}, + 0x01 = { 636, 48}, + 0x02 = { 684, 3}, + 0x03 = { 687, 3}, + 0x05 = { 690, 1}, + 0x06 = { 691, 1}, + 0x07 = { 692, 1}, + 0x08 = { 693, 1}, + 0x09 = { 694, 1}, + 0x0B = { 695, 1}, + 0x0D = { 696, 2}, + 0x10 = { 698, 1}, + 0x11 = { 699, 1}, + 0x12 = { 700, 2}, + 0x13 = { 702, 1}, + 0x14 = { 703, 1}, + 0x15 = { 704, 1}, + 0x16 = { 705, 2}, + 0x17 = { 707, 1}, + 0x18 = { 708, 4}, + 0x1C = { 712, 1}, + 0x1F = { 713, 3}, + 0x20 = { 716, 1}, + 0x21 = { 717, 1}, + 0x22 = { 718, 1}, + 0x23 = { 719, 1}, + 0x28 = { 720, 1}, + 0x29 = { 721, 1}, + 0x2B = { 722, 1}, + 0x2E = { 723, 1}, + 0x2F = { 724, 1}, + 0x30 = { 725, 1}, + 0x31 = { 726, 1}, + 0x32 = { 727, 1}, + 0x33 = { 728, 1}, + 0x34 = { 729, 1}, + 0x35 = { 730, 1}, + 0x40 = { 731, 3}, + 0x41 = { 734, 3}, + 0x42 = { 737, 9}, + 0x43 = { 746, 9}, + 0x44 = { 755, 6}, + 0x45 = { 761, 6}, + 0x46 = { 767, 6}, + 0x47 = { 773, 6}, + 0x48 = { 779, 3}, + 0x49 = { 782, 3}, + 0x4A = { 785, 6}, + 0x4B = { 791, 6}, + 0x4C = { 797, 6}, + 0x4D = { 803, 6}, + 0x4E = { 809, 6}, + 0x4F = { 815, 6}, + 0x50 = { 821, 2}, + 0x51 = { 823, 1}, + 0x52 = { 824, 1}, + 0x53 = { 825, 1}, + 0x54 = { 826, 1}, + 0x55 = { 827, 1}, + 0x56 = { 828, 1}, + 0x57 = { 829, 1}, + 0x58 = { 830, 1}, + 0x59 = { 831, 1}, + 0x5A = { 832, 1}, + 0x5B = { 833, 1}, + 0x5C = { 834, 1}, + 0x5D = { 835, 1}, + 0x5E = { 836, 1}, + 0x5F = { 837, 1}, + 0x6E = { 838, 1}, + 0x6F = { 839, 1}, + 0x70 = { 840, 1}, + 0x78 = { 841, 1}, + 0x79 = { 842, 1}, + 0x7E = { 843, 1}, + 0x7F = { 844, 1}, + 0x80 = { 845, 1}, + 0x81 = { 846, 1}, + 0x82 = { 847, 3}, + 0x83 = { 850, 3}, + 0x84 = { 853, 2}, + 0x85 = { 855, 2}, + 0x86 = { 857, 2}, + 0x87 = { 859, 2}, + 0x88 = { 861, 1}, + 0x89 = { 862, 1}, + 0x8A = { 863, 2}, + 0x8B = { 865, 2}, + 0x8C = { 867, 2}, + 0x8D = { 869, 2}, + 0x8E = { 871, 2}, + 0x8F = { 873, 2}, + 0x90 = { 875, 1}, + 0x91 = { 876, 1}, + 0x92 = { 877, 3}, + 0x93 = { 880, 3}, + 0x94 = { 883, 2}, + 0x95 = { 885, 2}, + 0x96 = { 887, 2}, + 0x97 = { 889, 2}, + 0x98 = { 891, 1}, + 0x99 = { 892, 1}, + 0x9A = { 893, 2}, + 0x9B = { 895, 2}, + 0x9C = { 897, 2}, + 0x9D = { 899, 2}, + 0x9E = { 901, 2}, + 0x9F = { 903, 2}, + 0xA0 = { 905, 1}, + 0xA1 = { 906, 1}, + 0xA2 = { 907, 1}, + 0xA3 = { 908, 3}, + 0xA4 = { 911, 3}, + 0xA5 = { 914, 3}, + 0xA8 = { 917, 1}, + 0xA9 = { 918, 1}, + 0xAA = { 919, 1}, + 0xAB = { 920, 3}, + 0xAC = { 923, 3}, + 0xAD = { 926, 3}, + 0xAE = { 929, 14}, + 0xAF = { 943, 3}, + 0xB0 = { 946, 1}, + 0xB1 = { 947, 3}, + 0xB3 = { 950, 3}, + 0xB6 = { 953, 3}, + 0xB7 = { 956, 2}, + 0xB9 = { 958, 1}, + 0xBA = { 959, 12}, + 0xBB = { 971, 3}, + 0xBC = { 974, 3}, + 0xBD = { 977, 3}, + 0xBE = { 980, 3}, + 0xBF = { 983, 2}, + 0xC0 = { 985, 1}, + 0xC1 = { 986, 3}, + 0xC2 = { 989, 1}, + 0xC6 = { 990, 1}, + 0xC7 = { 991, 16}, + 0xC8 = {1007, 2}, + 0xFF = {1009, 1}, }, { // prefix = 66 - 0x10 = { 998, 1}, - 0x11 = { 999, 1}, - 0x12 = {1000, 1}, - 0x13 = {1001, 1}, - 0x14 = {1002, 1}, - 0x15 = {1003, 1}, - 0x16 = {1004, 1}, - 0x17 = {1005, 1}, - 0x28 = {1006, 1}, - 0x29 = {1007, 1}, - 0x2B = {1008, 1}, - 0x2E = {1009, 1}, - 0x2F = {1010, 1}, - 0x50 = {1011, 2}, - 0x51 = {1013, 1}, - 0x54 = {1014, 1}, - 0x55 = {1015, 1}, - 0x56 = {1016, 1}, - 0x57 = {1017, 1}, - 0x58 = {1018, 1}, - 0x59 = {1019, 1}, - 0x5A = {1020, 1}, - 0x5B = {1021, 1}, - 0x5C = {1022, 1}, - 0x5D = {1023, 1}, - 0x5E = {1024, 1}, - 0x5F = {1025, 1}, - 0x60 = {1026, 1}, - 0x61 = {1027, 1}, - 0x62 = {1028, 1}, - 0x63 = {1029, 1}, - 0x64 = {1030, 1}, - 0x65 = {1031, 1}, - 0x66 = {1032, 1}, - 0x67 = {1033, 1}, - 0x68 = {1034, 1}, - 0x69 = {1035, 1}, - 0x6A = {1036, 1}, - 0x6B = {1037, 1}, - 0x6C = {1038, 1}, - 0x6D = {1039, 1}, - 0x6E = {1040, 2}, - 0x6F = {1042, 1}, - 0x70 = {1043, 1}, - 0x71 = {1044, 3}, - 0x72 = {1047, 3}, - 0x73 = {1050, 2}, - 0x74 = {1052, 1}, - 0x75 = {1053, 1}, - 0x76 = {1054, 1}, - 0x7C = {1055, 1}, - 0x7D = {1056, 1}, - 0x7E = {1057, 2}, - 0x7F = {1059, 1}, - 0xAE = {1060, 3}, - 0xC2 = {1063, 1}, - 0xC4 = {1064, 2}, - 0xC5 = {1066, 2}, - 0xC6 = {1068, 1}, - 0xC7 = {1069, 1}, - 0xD0 = {1070, 1}, - 0xD1 = {1071, 1}, - 0xD2 = {1072, 1}, - 0xD3 = {1073, 1}, - 0xD4 = {1074, 1}, - 0xD5 = {1075, 1}, - 0xD6 = {1076, 1}, - 0xD7 = {1077, 2}, - 0xD8 = {1079, 1}, - 0xD9 = {1080, 1}, - 0xDA = {1081, 1}, - 0xDB = {1082, 1}, - 0xDC = {1083, 1}, - 0xDD = {1084, 1}, - 0xDE = {1085, 1}, - 0xDF = {1086, 1}, - 0xE0 = {1087, 1}, - 0xE1 = {1088, 1}, - 0xE2 = {1089, 1}, - 0xE3 = {1090, 1}, - 0xE4 = {1091, 1}, - 0xE5 = {1092, 1}, - 0xE6 = {1093, 1}, - 0xE7 = {1094, 1}, - 0xE8 = {1095, 1}, - 0xE9 = {1096, 1}, - 0xEA = {1097, 1}, - 0xEB = {1098, 1}, - 0xEC = {1099, 1}, - 0xED = {1100, 1}, - 0xEE = {1101, 1}, - 0xEF = {1102, 1}, - 0xF1 = {1103, 1}, - 0xF2 = {1104, 1}, - 0xF3 = {1105, 1}, - 0xF4 = {1106, 1}, - 0xF5 = {1107, 1}, - 0xF6 = {1108, 1}, - 0xF7 = {1109, 1}, - 0xF8 = {1110, 1}, - 0xF9 = {1111, 1}, - 0xFA = {1112, 1}, - 0xFB = {1113, 1}, - 0xFC = {1114, 1}, - 0xFD = {1115, 1}, - 0xFE = {1116, 1}, + 0x10 = {1010, 1}, + 0x11 = {1011, 1}, + 0x12 = {1012, 1}, + 0x13 = {1013, 1}, + 0x14 = {1014, 1}, + 0x15 = {1015, 1}, + 0x16 = {1016, 1}, + 0x17 = {1017, 1}, + 0x28 = {1018, 1}, + 0x29 = {1019, 1}, + 0x2B = {1020, 1}, + 0x2E = {1021, 1}, + 0x2F = {1022, 1}, + 0x50 = {1023, 2}, + 0x51 = {1025, 1}, + 0x54 = {1026, 1}, + 0x55 = {1027, 1}, + 0x56 = {1028, 1}, + 0x57 = {1029, 1}, + 0x58 = {1030, 1}, + 0x59 = {1031, 1}, + 0x5A = {1032, 1}, + 0x5B = {1033, 1}, + 0x5C = {1034, 1}, + 0x5D = {1035, 1}, + 0x5E = {1036, 1}, + 0x5F = {1037, 1}, + 0x60 = {1038, 1}, + 0x61 = {1039, 1}, + 0x62 = {1040, 1}, + 0x63 = {1041, 1}, + 0x64 = {1042, 1}, + 0x65 = {1043, 1}, + 0x66 = {1044, 1}, + 0x67 = {1045, 1}, + 0x68 = {1046, 1}, + 0x69 = {1047, 1}, + 0x6A = {1048, 1}, + 0x6B = {1049, 1}, + 0x6C = {1050, 1}, + 0x6D = {1051, 1}, + 0x6E = {1052, 2}, + 0x6F = {1054, 1}, + 0x70 = {1055, 1}, + 0x71 = {1056, 3}, + 0x72 = {1059, 3}, + 0x73 = {1062, 2}, + 0x74 = {1064, 1}, + 0x75 = {1065, 1}, + 0x76 = {1066, 1}, + 0x7C = {1067, 1}, + 0x7D = {1068, 1}, + 0x7E = {1069, 2}, + 0x7F = {1071, 1}, + 0xAE = {1072, 3}, + 0xC2 = {1075, 1}, + 0xC4 = {1076, 2}, + 0xC5 = {1078, 2}, + 0xC6 = {1080, 1}, + 0xC7 = {1081, 1}, + 0xD0 = {1082, 1}, + 0xD1 = {1083, 1}, + 0xD2 = {1084, 1}, + 0xD3 = {1085, 1}, + 0xD4 = {1086, 1}, + 0xD5 = {1087, 1}, + 0xD6 = {1088, 1}, + 0xD7 = {1089, 2}, + 0xD8 = {1091, 1}, + 0xD9 = {1092, 1}, + 0xDA = {1093, 1}, + 0xDB = {1094, 1}, + 0xDC = {1095, 1}, + 0xDD = {1096, 1}, + 0xDE = {1097, 1}, + 0xDF = {1098, 1}, + 0xE0 = {1099, 1}, + 0xE1 = {1100, 1}, + 0xE2 = {1101, 1}, + 0xE3 = {1102, 1}, + 0xE4 = {1103, 1}, + 0xE5 = {1104, 1}, + 0xE6 = {1105, 1}, + 0xE7 = {1106, 1}, + 0xE8 = {1107, 1}, + 0xE9 = {1108, 1}, + 0xEA = {1109, 1}, + 0xEB = {1110, 1}, + 0xEC = {1111, 1}, + 0xED = {1112, 1}, + 0xEE = {1113, 1}, + 0xEF = {1114, 1}, + 0xF1 = {1115, 1}, + 0xF2 = {1116, 1}, + 0xF3 = {1117, 1}, + 0xF4 = {1118, 1}, + 0xF5 = {1119, 1}, + 0xF6 = {1120, 1}, + 0xF7 = {1121, 1}, + 0xF8 = {1122, 1}, + 0xF9 = {1123, 1}, + 0xFA = {1124, 1}, + 0xFB = {1125, 1}, + 0xFC = {1126, 1}, + 0xFD = {1127, 1}, + 0xFE = {1128, 1}, }, { // prefix = F3 - 0x01 = {1117, 6}, - 0x09 = {1123, 1}, - 0x10 = {1124, 1}, - 0x11 = {1125, 1}, - 0x12 = {1126, 1}, - 0x16 = {1127, 1}, - 0x1E = {1128, 4}, - 0x2A = {1132, 2}, - 0x2C = {1134, 2}, - 0x2D = {1136, 2}, - 0x51 = {1138, 1}, - 0x52 = {1139, 1}, - 0x53 = {1140, 1}, - 0x58 = {1141, 1}, - 0x59 = {1142, 1}, - 0x5A = {1143, 1}, - 0x5B = {1144, 1}, - 0x5C = {1145, 1}, - 0x5D = {1146, 1}, - 0x5E = {1147, 1}, - 0x5F = {1148, 1}, - 0x6F = {1149, 1}, - 0x70 = {1150, 1}, - 0x7E = {1151, 1}, - 0x7F = {1152, 1}, - 0xAE = {1153, 14}, - 0xB8 = {1167, 3}, - 0xBC = {1170, 3}, - 0xBD = {1173, 3}, - 0xC2 = {1176, 1}, - 0xC7 = {1177, 2}, - 0xE6 = {1179, 1}, + 0x01 = {1129, 6}, + 0x09 = {1135, 1}, + 0x10 = {1136, 1}, + 0x11 = {1137, 1}, + 0x12 = {1138, 1}, + 0x16 = {1139, 1}, + 0x1E = {1140, 4}, + 0x2A = {1144, 2}, + 0x2C = {1146, 2}, + 0x2D = {1148, 2}, + 0x51 = {1150, 1}, + 0x52 = {1151, 1}, + 0x53 = {1152, 1}, + 0x58 = {1153, 1}, + 0x59 = {1154, 1}, + 0x5A = {1155, 1}, + 0x5B = {1156, 1}, + 0x5C = {1157, 1}, + 0x5D = {1158, 1}, + 0x5E = {1159, 1}, + 0x5F = {1160, 1}, + 0x6F = {1161, 1}, + 0x70 = {1162, 1}, + 0x7E = {1163, 1}, + 0x7F = {1164, 1}, + 0xAE = {1165, 14}, + 0xB8 = {1179, 3}, + 0xBC = {1182, 3}, + 0xBD = {1185, 3}, + 0xC2 = {1188, 1}, + 0xC7 = {1189, 2}, + 0xE6 = {1191, 1}, }, { // prefix = F2 - 0x01 = {1180, 2}, - 0x10 = {1182, 1}, - 0x11 = {1183, 1}, - 0x12 = {1184, 1}, - 0x2A = {1185, 2}, - 0x2C = {1187, 2}, - 0x2D = {1189, 2}, - 0x51 = {1191, 1}, - 0x58 = {1192, 1}, - 0x59 = {1193, 1}, - 0x5A = {1194, 1}, - 0x5C = {1195, 1}, - 0x5D = {1196, 1}, - 0x5E = {1197, 1}, - 0x5F = {1198, 1}, - 0x70 = {1199, 1}, - 0x7C = {1200, 1}, - 0x7D = {1201, 1}, - 0xAE = {1202, 1}, - 0xC2 = {1203, 1}, - 0xD0 = {1204, 1}, - 0xE6 = {1205, 1}, - 0xF0 = {1206, 1}, + 0x01 = {1192, 2}, + 0x10 = {1194, 1}, + 0x11 = {1195, 1}, + 0x12 = {1196, 1}, + 0x2A = {1197, 2}, + 0x2C = {1199, 2}, + 0x2D = {1201, 2}, + 0x51 = {1203, 1}, + 0x58 = {1204, 1}, + 0x59 = {1205, 1}, + 0x5A = {1206, 1}, + 0x5C = {1207, 1}, + 0x5D = {1208, 1}, + 0x5E = {1209, 1}, + 0x5F = {1210, 1}, + 0x70 = {1211, 1}, + 0x7C = {1212, 1}, + 0x7D = {1213, 1}, + 0xAE = {1214, 1}, + 0xC2 = {1215, 1}, + 0xD0 = {1216, 1}, + 0xE6 = {1217, 1}, + 0xF0 = {1218, 1}, }, } @(rodata) DECODE_INDEX_ESC_0F38 := [4][256]lib.Decode_Index{ { // prefix = none - 0xC8 = {1207, 1}, - 0xC9 = {1208, 1}, - 0xCA = {1209, 1}, - 0xCB = {1210, 1}, - 0xCC = {1211, 1}, - 0xCD = {1212, 1}, - 0xF0 = {1213, 3}, - 0xF1 = {1216, 3}, - 0xF6 = {1219, 2}, - 0xF9 = {1221, 2}, - 0xFC = {1223, 2}, + 0xC8 = {1219, 1}, + 0xC9 = {1220, 1}, + 0xCA = {1221, 1}, + 0xCB = {1222, 1}, + 0xCC = {1223, 1}, + 0xCD = {1224, 1}, + 0xF0 = {1225, 3}, + 0xF1 = {1228, 3}, + 0xF6 = {1231, 2}, + 0xF9 = {1233, 2}, + 0xFC = {1235, 2}, }, { // prefix = 66 - 0x00 = {1225, 1}, - 0x01 = {1226, 1}, - 0x02 = {1227, 1}, - 0x03 = {1228, 1}, - 0x04 = {1229, 1}, - 0x05 = {1230, 1}, - 0x06 = {1231, 1}, - 0x07 = {1232, 1}, - 0x08 = {1233, 1}, - 0x09 = {1234, 1}, - 0x0A = {1235, 1}, - 0x0B = {1236, 1}, - 0x10 = {1237, 1}, - 0x14 = {1238, 1}, - 0x15 = {1239, 1}, - 0x17 = {1240, 1}, - 0x1C = {1241, 1}, - 0x1D = {1242, 1}, - 0x1E = {1243, 1}, - 0x20 = {1244, 1}, - 0x21 = {1245, 1}, - 0x22 = {1246, 1}, - 0x23 = {1247, 1}, - 0x24 = {1248, 1}, - 0x25 = {1249, 1}, - 0x28 = {1250, 1}, - 0x29 = {1251, 1}, - 0x2A = {1252, 1}, - 0x2B = {1253, 1}, - 0x30 = {1254, 1}, - 0x31 = {1255, 1}, - 0x32 = {1256, 1}, - 0x33 = {1257, 1}, - 0x34 = {1258, 1}, - 0x35 = {1259, 1}, - 0x37 = {1260, 1}, - 0x38 = {1261, 1}, - 0x39 = {1262, 1}, - 0x3A = {1263, 1}, - 0x3B = {1264, 1}, - 0x3C = {1265, 1}, - 0x3D = {1266, 1}, - 0x3E = {1267, 1}, - 0x3F = {1268, 1}, - 0x40 = {1269, 1}, - 0x41 = {1270, 1}, - 0x80 = {1271, 1}, - 0x81 = {1272, 1}, - 0x82 = {1273, 2}, - 0xDB = {1275, 1}, - 0xDC = {1276, 1}, - 0xDD = {1277, 1}, - 0xDE = {1278, 1}, - 0xDF = {1279, 1}, - 0xF5 = {1280, 2}, - 0xF6 = {1282, 2}, - 0xF8 = {1284, 1}, - 0xFC = {1285, 2}, + 0x00 = {1237, 1}, + 0x01 = {1238, 1}, + 0x02 = {1239, 1}, + 0x03 = {1240, 1}, + 0x04 = {1241, 1}, + 0x05 = {1242, 1}, + 0x06 = {1243, 1}, + 0x07 = {1244, 1}, + 0x08 = {1245, 1}, + 0x09 = {1246, 1}, + 0x0A = {1247, 1}, + 0x0B = {1248, 1}, + 0x10 = {1249, 1}, + 0x14 = {1250, 1}, + 0x15 = {1251, 1}, + 0x17 = {1252, 1}, + 0x1C = {1253, 1}, + 0x1D = {1254, 1}, + 0x1E = {1255, 1}, + 0x20 = {1256, 1}, + 0x21 = {1257, 1}, + 0x22 = {1258, 1}, + 0x23 = {1259, 1}, + 0x24 = {1260, 1}, + 0x25 = {1261, 1}, + 0x28 = {1262, 1}, + 0x29 = {1263, 1}, + 0x2A = {1264, 1}, + 0x2B = {1265, 1}, + 0x30 = {1266, 1}, + 0x31 = {1267, 1}, + 0x32 = {1268, 1}, + 0x33 = {1269, 1}, + 0x34 = {1270, 1}, + 0x35 = {1271, 1}, + 0x37 = {1272, 1}, + 0x38 = {1273, 1}, + 0x39 = {1274, 1}, + 0x3A = {1275, 1}, + 0x3B = {1276, 1}, + 0x3C = {1277, 1}, + 0x3D = {1278, 1}, + 0x3E = {1279, 1}, + 0x3F = {1280, 1}, + 0x40 = {1281, 1}, + 0x41 = {1282, 1}, + 0x80 = {1283, 1}, + 0x81 = {1284, 1}, + 0x82 = {1285, 2}, + 0xDB = {1287, 1}, + 0xDC = {1288, 1}, + 0xDD = {1289, 1}, + 0xDE = {1290, 1}, + 0xDF = {1291, 1}, + 0xF5 = {1292, 2}, + 0xF6 = {1294, 2}, + 0xF8 = {1296, 1}, + 0xFC = {1297, 2}, }, { // prefix = F3 - 0xF6 = {1287, 2}, - 0xF8 = {1289, 1}, - 0xFC = {1290, 2}, + 0xF6 = {1299, 2}, + 0xF8 = {1301, 1}, + 0xFC = {1302, 2}, }, { // prefix = F2 - 0xF0 = {1292, 2}, - 0xF1 = {1294, 3}, - 0xF8 = {1297, 1}, - 0xFC = {1298, 2}, + 0xF0 = {1304, 2}, + 0xF1 = {1306, 3}, + 0xF8 = {1309, 1}, + 0xFC = {1310, 2}, }, } @(rodata) DECODE_INDEX_ESC_0F3A := [4][256]lib.Decode_Index{ { // prefix = none - 0xCC = {1300, 1}, + 0xCC = {1312, 1}, }, { // prefix = 66 - 0x08 = {1301, 1}, - 0x09 = {1302, 1}, - 0x0A = {1303, 1}, - 0x0B = {1304, 1}, - 0x0C = {1305, 1}, - 0x0D = {1306, 1}, - 0x0E = {1307, 1}, - 0x0F = {1308, 1}, - 0x14 = {1309, 1}, - 0x16 = {1310, 2}, - 0x17 = {1312, 1}, - 0x20 = {1313, 1}, - 0x21 = {1314, 1}, - 0x22 = {1315, 2}, - 0x40 = {1317, 1}, - 0x41 = {1318, 1}, - 0x42 = {1319, 1}, - 0x44 = {1320, 1}, - 0x60 = {1321, 1}, - 0x61 = {1322, 1}, - 0x62 = {1323, 1}, - 0x63 = {1324, 1}, - 0xDF = {1325, 1}, + 0x08 = {1313, 1}, + 0x09 = {1314, 1}, + 0x0A = {1315, 1}, + 0x0B = {1316, 1}, + 0x0C = {1317, 1}, + 0x0D = {1318, 1}, + 0x0E = {1319, 1}, + 0x0F = {1320, 1}, + 0x14 = {1321, 1}, + 0x16 = {1322, 2}, + 0x17 = {1324, 1}, + 0x20 = {1325, 1}, + 0x21 = {1326, 1}, + 0x22 = {1327, 2}, + 0x40 = {1329, 1}, + 0x41 = {1330, 1}, + 0x42 = {1331, 1}, + 0x44 = {1332, 1}, + 0x60 = {1333, 1}, + 0x61 = {1334, 1}, + 0x62 = {1335, 1}, + 0x63 = {1336, 1}, + 0xDF = {1337, 1}, }, { // prefix = F3 }, diff --git a/core/rexcode/isa/x86/tablegen/generated/encode_tables.odin b/core/rexcode/isa/x86/tablegen/generated/encode_tables.odin index 44593c726..420f18e9d 100644 --- a/core/rexcode/isa/x86/tablegen/generated/encode_tables.odin +++ b/core/rexcode/isa/x86/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_x86_generated import lib "../.." @(rodata) -ENCODE_FORMS := [2454]lib.Encoding{ +ENCODE_FORMS := [2466]lib.Encoding{ // .MOV {.MOV, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x88, 0, {explicit_count=2}}, {.MOV, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x89, 0, {explicit_count=2}}, @@ -3632,6 +3632,20 @@ ENCODE_FORMS := [2454]lib.Encoding{ {.SERIALIZE, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0x01, 232, {esc=._0F}}, // .PREFETCH {.PREFETCH, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0x0D, 0, {esc=._0F, modrm_reg_ext=true, explicit_count=1}}, + // .IN + {.IN, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xE4, 0, {explicit_count=1, has_implicit=true}}, + {.IN, {.AX_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xE5, 0, {opsize_16=true, explicit_count=1, has_implicit=true}}, + {.IN, {.EAX_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xE5, 0, {explicit_count=1, has_implicit=true}}, + {.IN, {.AL_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEC, 0, {has_implicit=true}}, + {.IN, {.AX_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xED, 0, {opsize_16=true, has_implicit=true}}, + {.IN, {.EAX_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xED, 0, {has_implicit=true}}, + // .OUT + {.OUT, {.IMM8, .AL_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, 0xE6, 0, {explicit_count=1, has_implicit=true}}, + {.OUT, {.IMM8, .AX_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, 0xE7, 0, {opsize_16=true, explicit_count=1, has_implicit=true}}, + {.OUT, {.IMM8, .EAX_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, 0xE7, 0, {explicit_count=1, has_implicit=true}}, + {.OUT, {.DX_IMPL, .AL_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEE, 0, {has_implicit=true}}, + {.OUT, {.DX_IMPL, .AX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEF, 0, {opsize_16=true, has_implicit=true}}, + {.OUT, {.DX_IMPL, .EAX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEF, 0, {has_implicit=true}}, // .TPAUSE {.TPAUSE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xAE, 6, {esc=._0F, prefix=1, modrm_reg_ext=true, explicit_count=1}}, // .UMONITOR @@ -3704,7 +3718,7 @@ ENCODE_FORMS := [2454]lib.Encoding{ } @(rodata) -CLOBBER_FORMS := [2454]lib.Clobber{ +CLOBBER_FORMS := [2466]lib.Clobber{ // .MOV {written={0}, read={1}, writes_mem=true, reads_mem=true}, {written={0}, read={1}, writes_mem=true, reads_mem=true}, @@ -7328,6 +7342,20 @@ CLOBBER_FORMS := [2454]lib.Clobber{ {side_effects={.SERIALIZING}}, // .PREFETCH {read={0}, reads_mem=true, side_effects={.HINT}}, + // .IN + {written={0}, read={1}, side_effects={.PRIVILEGED}}, + {written={0}, read={1}, side_effects={.PRIVILEGED}}, + {written={0}, read={1}, side_effects={.PRIVILEGED}}, + {written={0}, read={1}, side_effects={.PRIVILEGED}}, + {written={0}, read={1}, side_effects={.PRIVILEGED}}, + {written={0}, read={1}, side_effects={.PRIVILEGED}}, + // .OUT + {read={0, 1}, side_effects={.PRIVILEGED}}, + {read={0, 1}, side_effects={.PRIVILEGED}}, + {read={0, 1}, side_effects={.PRIVILEGED}}, + {read={0, 1}, side_effects={.PRIVILEGED}}, + {read={0, 1}, side_effects={.PRIVILEGED}}, + {read={0, 1}, side_effects={.PRIVILEGED}}, // .TPAUSE {read={0}, implicit_rd={.RAX, .RDX}, flags_wr={.CF}, side_effects={.HINT}}, // .UMONITOR @@ -8608,42 +8636,44 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .WBNOINVD = { 2414, 1}, .SERIALIZE = { 2415, 1}, .PREFETCH = { 2416, 1}, - .TPAUSE = { 2417, 1}, - .UMONITOR = { 2418, 1}, - .UMWAIT = { 2419, 1}, - .MOVDIRI = { 2420, 2}, - .MOVDIR64B = { 2422, 1}, - .ENQCMD = { 2423, 1}, - .ENQCMDS = { 2424, 1}, - .AADD = { 2425, 2}, - .AAND = { 2427, 2}, - .AOR = { 2429, 2}, - .AXOR = { 2431, 2}, - .XEND = { 2433, 1}, - .XTEST = { 2434, 1}, - .VMRUN = { 2435, 1}, - .VMMCALL = { 2436, 1}, - .VMLOAD = { 2437, 1}, - .VMSAVE = { 2438, 1}, - .STGI = { 2439, 1}, - .CLGI = { 2440, 1}, - .SKINIT = { 2441, 1}, - .INVLPGA = { 2442, 1}, - .INVLPGB = { 2443, 1}, - .TLBSYNC = { 2444, 1}, - .PVALIDATE = { 2445, 1}, - .RMPADJUST = { 2446, 1}, - .RMPUPDATE = { 2447, 1}, - .PSMASH = { 2448, 1}, - .CLZERO = { 2449, 1}, - .MONITORX = { 2450, 1}, - .MWAITX = { 2451, 1}, - .RDPRU = { 2452, 1}, - .MCOMMIT = { 2453, 1}, + .IN = { 2417, 6}, + .OUT = { 2423, 6}, + .TPAUSE = { 2429, 1}, + .UMONITOR = { 2430, 1}, + .UMWAIT = { 2431, 1}, + .MOVDIRI = { 2432, 2}, + .MOVDIR64B = { 2434, 1}, + .ENQCMD = { 2435, 1}, + .ENQCMDS = { 2436, 1}, + .AADD = { 2437, 2}, + .AAND = { 2439, 2}, + .AOR = { 2441, 2}, + .AXOR = { 2443, 2}, + .XEND = { 2445, 1}, + .XTEST = { 2446, 1}, + .VMRUN = { 2447, 1}, + .VMMCALL = { 2448, 1}, + .VMLOAD = { 2449, 1}, + .VMSAVE = { 2450, 1}, + .STGI = { 2451, 1}, + .CLGI = { 2452, 1}, + .SKINIT = { 2453, 1}, + .INVLPGA = { 2454, 1}, + .INVLPGB = { 2455, 1}, + .TLBSYNC = { 2456, 1}, + .PVALIDATE = { 2457, 1}, + .RMPADJUST = { 2458, 1}, + .RMPUPDATE = { 2459, 1}, + .PSMASH = { 2460, 1}, + .CLZERO = { 2461, 1}, + .MONITORX = { 2462, 1}, + .MWAITX = { 2463, 1}, + .RDPRU = { 2464, 1}, + .MCOMMIT = { 2465, 1}, } // Emit descriptor per form (derived from ENCODE_FORMS via lib.form_to_recipe). -ENCODE_RECIPES: [2454]lib.Form_Recipe +ENCODE_RECIPES: [2466]lib.Form_Recipe @(init) _fill_recipes :: proc "contextless" () { for i in 0 ..< len(ENCODE_FORMS) { ENCODE_RECIPES[i] = lib.form_to_recipe(&ENCODE_FORMS[i]) diff --git a/core/rexcode/isa/x86/tablegen/instruction_table.odin b/core/rexcode/isa/x86/tablegen/instruction_table.odin index aa9f8e5b9..20716bcc8 100644 --- a/core/rexcode/isa/x86/tablegen/instruction_table.odin +++ b/core/rexcode/isa/x86/tablegen/instruction_table.odin @@ -4911,6 +4911,22 @@ INSTRUCTION_TABLE := [Mnemonic][]Form{ .PREFETCH = { {{.PREFETCH, {.M8, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0x0D, 0, {esc=._0F, modrm_reg_ext=true}}, {read={0}, reads_mem=true, side_effects={.HINT}}}, }, + .IN = { + {{.IN, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xE4, 0, {}}, {written={0}, read={1}, side_effects={.PRIVILEGED}}}, + {{.IN, {.AX_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xE5, 0, {opsize_16=true}}, {written={0}, read={1}, side_effects={.PRIVILEGED}}}, + {{.IN, {.EAX_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xE5, 0, {}}, {written={0}, read={1}, side_effects={.PRIVILEGED}}}, + {{.IN, {.AL_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEC, 0, {}}, {written={0}, read={1}, side_effects={.PRIVILEGED}}}, + {{.IN, {.AX_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xED, 0, {opsize_16=true}}, {written={0}, read={1}, side_effects={.PRIVILEGED}}}, + {{.IN, {.EAX_IMPL, .DX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xED, 0, {}}, {written={0}, read={1}, side_effects={.PRIVILEGED}}}, + }, + .OUT = { + {{.OUT, {.IMM8, .AL_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, 0xE6, 0, {}}, {read={0, 1}, side_effects={.PRIVILEGED}}}, + {{.OUT, {.IMM8, .AX_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, 0xE7, 0, {opsize_16=true}}, {read={0, 1}, side_effects={.PRIVILEGED}}}, + {{.OUT, {.IMM8, .EAX_IMPL, .NONE, .NONE}, {.IB, .IMPL, .NONE, .NONE}, 0xE7, 0, {}}, {read={0, 1}, side_effects={.PRIVILEGED}}}, + {{.OUT, {.DX_IMPL, .AL_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEE, 0, {}}, {read={0, 1}, side_effects={.PRIVILEGED}}}, + {{.OUT, {.DX_IMPL, .AX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEF, 0, {opsize_16=true}}, {read={0, 1}, side_effects={.PRIVILEGED}}}, + {{.OUT, {.DX_IMPL, .EAX_IMPL, .NONE, .NONE}, {.IMPL, .IMPL, .NONE, .NONE}, 0xEF, 0, {}}, {read={0, 1}, side_effects={.PRIVILEGED}}}, + }, .TPAUSE = { {{.TPAUSE, {.R32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xAE, 6, {esc=._0F, prefix=PREFIX_66, modrm_reg_ext=true}}, {read={0}, implicit_rd={.RAX, .RDX}, flags_wr={.CF}, side_effects={.HINT}}}, }, diff --git a/core/rexcode/isa/x86/tables/x86.clobber_forms.bin b/core/rexcode/isa/x86/tables/x86.clobber_forms.bin index 2672e9aeb2c76446b6ffb1761cb6f7e124cad8bb..820ee9a2f696777d3c21585ab1116962b3351c6a 100644 GIT binary patch delta 207 ucmaE`iD|(WrVRqq>lv9CkU#?iwfPLpNX9cXFre`r&;>~4Z|0vK$OHf+2n^8x delta 18 acmZ3mh3Ua2rVRqqCr_BnviZt%A0_})CV>m`L47&uuO7@jaNFsLwWXOV*PpE58AfcVk~K3HB-j)8%blY!w4 z0|SEsNIjJQmVrS4#Fs|!859_Hun0*qFtBnmFgydBzk@|c3c`O5Hh)Jwi;y&2fI)>} z2aB8}#DaHV3wE%`NkRDU!4~Xbk&}k=859_HvM@6+FfcMOFsx%^Wng94#liyTb26|p z>_(F3Wng94!@|SNz`)4F!0?lSiGhQmeh&*T3tWJMgJCZViy#976C(q|4+b^{4u*Y5 zd_D#ahW$ut5JI2ewAJj?(Bj8{S7a1_D62I3z>@NaW_zd!~80Icv~ AZ~y=R delta 604 zcmZ3mh3Ua2rVT>V>zNrC7#JBC7}l||GO#l2U}1stIT=_PcCsMkc^Oz4cCqjj%e+R@riQwO5WMHUg zIE4_n2U2hv!M_jUpF!~df%s<;{Qn^SIV3(W0|Uc(1pgl=0|UbaBtA&~B7*;)lOc$K j;SxgN56HmF2>ve+{|bWt8^phg;Qs~juOaxqKo$Z3KnX{< diff --git a/core/rexcode/isa/x86/tables/x86.encode_recipes.bin b/core/rexcode/isa/x86/tables/x86.encode_recipes.bin index 8c4a9dd32b9ac7828f24fe1048959ee8ca46f633..4570cdbabfe92b3bc33ed4844d48ef0107e8db90 100644 GIT binary patch delta 160 zcmeBp#yI0S;|8C?dWI(q42%r_|Nm!TWJr68U^5`I-$2FxGccsRMX(u=+0UTjAakB0 e*bK<*cTjPVIq$)2L6FT13=j^Oz1gR54;|8C?&36j-FaiKJ_XipP diff --git a/core/rexcode/isa/x86/tables/x86.encode_runs.bin b/core/rexcode/isa/x86/tables/x86.encode_runs.bin index d7433a59647d00c1321d12253c887fe9d4f82b1b..db2611695dc80336a4b9ee4b260d7edf85e153ac 100644 GIT binary patch delta 180 zcmdntd%}0a9#u^?1_p+5P6h@LUCYV9z{tSBPzR;!p>zW$0|V1!Q8jrf1*K<0={Zn(E|i`JrRPKG1yFh+lm-CIrxM!$ delta 163 zcmX@%yTf+&lq4L#Gx)w^;L+M74 my2(#f|yh9gWYAZ2iT0%`_G;3N|>!x<(< zhO0uv*{MX2~CC=C+7%*4oWg^7{jDib5aH6})e>r9LcH<%b1 zZZa`4+(J?ZQi~7YW@2Wz$HdI=kcpGw6%!}JXC^j=pG<5F|C!hrSee-vxS5$5_?Vd) z1ew_w#F^O`WSQ9*l$qHWG@02L^qJWhOqrP&%$XS(ESMP?ESVV@te6=YteF`ZY?v7t zY?&Du?3fuD?3o!E9GDpy9GMvzoR}FIoS7LJT$mXdT$v%^iqCzx z;mOR%;DtqvH!~xH4>Kc!FEb;9A2TC^KQl8!5HmAFC^Hj7I5QJNBr_93G&2)JEHfiR z95W+BJTntRA~O?1GBXoHDl-#9Ix`bPCNmR5HZvnb4l^S|E;BPj0W&j0F*6fGDKis8 zIWrSOB{LI4H8Uea4KpJ{Ei)5CJu?$SBQq02GcyxID>D;AJ2MkQCo>~M7c(P6H!~wc z4>L1EKQlAKBxXoD1o?d`Gb6(^W=4kT%!~{(n3)-7Gcz;HV`gSp$jryEo|&0p6Eh>j zW~lmYP#UCfCo?m{9%e{7-N($xu%DTS;WRTd!#QSVhKtP13|E+$8Ll%kG2CQkWVpr5 z%y1VijP5ZrGTdhtV0aHT17zlK!ynQ7OpgCPF*7oJW@cpg!pz9eilXs0TxCEK^8^^ zAr?jkVHQRP5f(-UQ5Hr9F&0J!aTZ1f2^K~MNft&1DHcWsX%(Ak-?UQk-?6Ik-?sYk->q5k-?FL ziNTqLk->$9k-?RPk-?3Hk-?pXk->w7k-?LNk->|Fk-?jVk->+Bk-?XRk-?9Jk-?vZ zks*MEks*+Uks*kMks+9cks*YIks*|Yks*wQks+Lgks*SGks*?Wks%7|zGxOkh8Pw` zhFBIxhBy{RhIkf6h6ENyhC~)dh9nk7hGZ5-h7=Y?hEx_thBOvNhIAH2h771)kl!*{ z*gzCcoR6dyT~PrGBSRqzBSR6Inqo9Qy1o(?)OG>7JUYLE1yYt*u`n^zK-uVO28v(D z!pKn1!pP8o#m|i_j0{aIj10{zj0`O-j0~+Tj0|loj1288j0_!E)RW?eP8LRnE;7yN zW?^LLAyY3YZlsmkUKT#0jGm2FPRwIrW>|G7WaVMNejG!0)MVz zVPsg%!pN|O#_nAUb>n&#CWehrHZ8(}95XlL@%t7QMux2{j11eLYPPd5GVEYsWZ22V z$gm44Mvk2@J-bOXV-E`>!(I~g!0Z}K^gb&4VLzGX9UxO5p|Ctiq`8NPRENtx04_n5 A-2eap literal 4096 zcmYde;$kRZGGJK1#LTdmiJ1WemN79hEN5b5Si!`|u#$<9VHFc2NSI+YlwQNc1m=T? zbxe#5>zNoCHZU2ood2QKSm5Gz#9up_Sb0#*1w@hpdpPASgeloE!{AXfjU}9!w zU}a`w;AUoH5M*X!5NBp%kY#3LP-bRh&}3#}&}L?2&|zj|&}C+1&|_v~&}U|3Fkoh6 zFl1(AFk)t8FlJ_CFkxn7FlA)4afy|5y zLClN{!OTnyq0CGS;mk}7k<3gC(acN?vCK>i@yv`23CxTPiOkFlDa_0a>C8+FnaoTK z+00A~xy(!q`OJ(A1ILge-aDthc;WRT7!&zoVhI7o! z3>VSD=n^v{!)0axhR0AdKxPg%{1na4gF*7o}W@cn~ z!_3I=mI~&-V`gM{4>jillm@x;BQqnzCnP>dY#{JwW+sNONbdN?%*gPanUUcKGb6)K zW=4iz%!~}bnHd@WFf%gzWoBgf$IQs^AEcgzk%5tgk%5VYk%5_ok%5JUk%5(kk%5hc zk%66sk%5DSk%5zik%5bak%60qk%5PWk%5ikwKP)kwK0Hd)Xq-!pNY&!pNY=!o;AAL(M>hBdK<(upr6^QuSg} zuMQ0h4HhN_EfyvQ9Tr9gU8oo~^)N9#7Dfhr7DfgG7Dfg`7Dfgm7DfhR7DfgW7DfhB z7A6LB7DfgO7Dfh37Dfgu7DfhZ7Dfge7DfhJ7Dfg;7Dfhp7DfgK7Dfg~7Dfgq7DfhV z7Dfga7DfhF7Dfg)7Dfhl7DfgS7Dfh77Dfgy7Dfhd7Dfgi7DfhN7Dfg?sQdg`7#RXs z7#RXt7#V_C7#V_D7#TuX7#TuY7#YG?7#YG@7#Sj17#Sj27#X5i7#X5j7#U)qdO`k( zWnlwRIB_zPT69GzEQ}1PEQ}0kXll~Y_~`mFSWw#q=vM@4~u`n`}voJDLurM-IvM@4Ku`n`JvoJE$U{OzsA8J_`8S2P1 zqn?G4p@B@jq_~k*Y8zSjh%&k#t(=&|!ptxgO$=nv3@l+Wa{$xXY%J~pxsw)n4h8<4 z$HK@kpM{ZO0gc_e5bDOoEKCebp=?@&1vzFe$K&@EEQ|~*Sr{2sLDj5gVPsgt!pN|e zg^^($RE!)uVS3h+XvPK>Muv?f>VercnCMMZ_QPf}&D%nzK0;x+l}K~95vdNBeE@2E Bl&Amz diff --git a/core/rexcode/isa/x86/tables/x86.idx_0f38.bin b/core/rexcode/isa/x86/tables/x86.idx_0f38.bin index eb491c27c7078845ae201d18e33a03a6d0d07340..38deebf7e16a41fd44e227041ef43808f15e85c9 100644 GIT binary patch literal 4096 zcmZP=1*0J_8Ui>&;4lj#!x0unhNCQu498d)8IH3sGMr#x#HpU%5+_-h8P2dUV_18h zg$XWp5s7^ni49V4m4%Vv8Ve)Cbrwd38!U_rH(3}NZm}>j+-6~9xWmH8aF>OV;T{Vk z!+jP;h6h;u{SZy;5ep;3W2o2@C=Id)hM%%9GCX5pWOxphd%?oU@REg*;S~!b!)q2s zhBqvX3~!-wAU*F`7#ZHPFfx2#VPyD-Bo2}T;ZH1#44+vT8NRSEGJIuWWcbFy$nYJi z?gtAa!%r4QhF>g<48K_z8UC;^GW=y>WcbIz$nYPehLw?lk(H5wiFNSAC&*9q#LTRW z3@ogS46Lk(^g>VjN0MFatc(mCtc(nttc(m?tc(oYG)i|otV|4i(D)QUvqKOnK9a(H z)UTr&U^@#V!wwckhMg>o47*qu8FsTUGVEbt#HpU%5_?&g84j>8V_18b zg$XWp6p4Kti49V4l7*4s6bmE6X%OV;T{Vk!+jP; zh6gN+3=g4lAU%&*7#SY3Ffu%0VPtrUBo2}T;b$z249{5@8D6k3GQ4DAWO&8G$nYAf z?hOkg!&??chIcHC4DVSO89uNuGJIrVWcb9w$ncqkk>LvqBg0n~Muu-t^&s;`8vf40 z$nb-Ok>Mv=x)^EUKo9@^W?^Lb!@|h$mxYnx9}6SHe_EwGRwf1}R!IJ5VMQ&gSfS$d z@b9P{qaiRF0s|8Q?9hD9iI)GlpyC7Ls!>}q&>`CkYv G{{sN_J~|=* diff --git a/core/rexcode/isa/x86/tables/x86.idx_0f3a.bin b/core/rexcode/isa/x86/tables/x86.idx_0f3a.bin index 21f960324682b72519479a43144fcfad55cf1acd..55baf382eef5df713e05f1d29c70ddd355e4c1ab 100644 GIT binary patch delta 128 zcmZorXi(T-z|5#H*^v4DgA^+xgET86gUn<@W?^nw zRz?O8kYi<x=H diff --git a/core/rexcode/isa/x86/tables/x86.idx_legacy.bin b/core/rexcode/isa/x86/tables/x86.idx_legacy.bin index d4d829a3ea50f1a8042f38a76bcc1f4c4a514bcc..6449f930270ece7c9ba8d8d34fdf8089e2fd2db4 100644 GIT binary patch delta 133 zcmZorXi(TNfjM8BiIG8viHSjviIG8{iHX6GiIKsGiID*WjF}i2OqduMOqrM%%$XP& zESQ)Wte|orc@VZ{Vq~ykVq~yoVrOt+5@m>FVq}P7Vq}PBVq}P6Vq}PAVq}P8Vq}PC YVq!>S64=bhV$a6Rz)-l^k!wFI04L!L)c^nh delta 119 zcmZorXi(TNfmxOT4QMklGUzZdf<<*FJ8}uz>p^*7AqEBpeI`Z*113fWLnd|x3nozp yUnWKdKPE;7eZWO5d_$mB3?k;!%34<;A!h)j;-5t-b^vw)3Fn1O+j zZL$Qf{A6$5ei-)*uiWH+ybhDo_yi|g^Jz>j=d0%75My9~y2fMjKRy{AHiUq~WHtT^ zleq*`CV%1=*{mn9j8Wha*xd+X@&!RVff@hLBSaV&1SZP~=}ayX5}TYLB%*Z%S&9S1 znf?C=h(f`$|J$=nJ|?6#`G}AR-#%n1mdSj=Qj>&5HfspiF!IkvmTF*_JYPh7@;wm^ zfu;ZFqR32U64m2dj4aeK*-lhSW)ZRwD9tde_%FpEDa63Q$vU}1RB3XPsL141qC%qU zFchx(zkc#XQQ^ryMAarg5*3*&CuXO#21C`_|ErP3CQPmq)0=!nOla~dF^$R3#J(`H zPd+ZLKAB0PXYw`)!O7hc8k>(xOk^|*LDnSz;++2<2BKgX9CYXZhr;+^dUKyt9@}IA zMd8W66+|{GD@HO+o}erwbo0Lz5dDn?JN+#Lc~D<@bv$77Adg* z!D0e1F=>Pt14!)I{~atsk_-&2oM3fevF9K$DYzI|FIY?(E(TWj;(ri>1Ovn5RBhAx zHy}62F)(lo2+OeYd|3n;7#Kjo10o%n7#Y?v_#umNOg`nV z$K1)nHTk)_%4B&DO~#(drXFgW^F7uxPj>SWn5^d`0jfGYd^#pS@e$@{>1W|Wn8-2t zlaJnH6JM>#O1?sqV|+!JSFkWmF7~w)$YPQf-nOEBgf`P zzMohacW%BKw4O!t21FE;78pQDkdcY;-$hKZ|Ccwf4bNo~2FXDD#mV8w#K^RcVclfM zDACDIQ5uuOqEsg@juPQ#-Uzl1rfl-2s4T`^n`NWL8AUIF^n>kUU;w+6neqRH&7Luf z85ws^ej9st^1V0_9%dd`jlsk)`Bj_@8xJ!B10&PqA8|&L?c%jW_ptD?fCND1FmW_6 zF){r7zi0Bqcwwaj7&3qUA7FuK2die-yeWPWi{@SyP-H+F1Z)fqOiYY_{vSlr%LXzP zBsRG=#oBB?l4>rHYNkK`45JCPoG@XkcPsVE)g=z|1~zO4(#NMiCx%W(EdECa|Q#WGzMm z9u^L`a*oMCj5?DiF-ovW2{SNovQ3`DXf*i|qXZKh)8rS7W|NJWbeNdfCi^fcO>Sb! znEa0k%{VS*7ba%*$u`VNlZ%)$Cck4wlmErs05ds<#c1*-7KzFCSVVZ(n2?<^i%(v~9y0kAyNXcK|Aj2fJn*1kXkwbI zz#%r-i(|)RF;0QW|2RY@t8r>guHY1!oWv+ljm`YOg_e0H93S! zXtEub$mBGxs>xrtgeKqP5}C}#tu@(&TWGQ#x5(ryZjs4h+#-|fxF1X|;t`n~$0IVi zjc37RD_+6L%Df_zy?Og5zvC4UXk-^ATaq8zs6=gfn|)7UkF-Fz9c9z*-S`dvXYR< zXk)LcQDkZZRS*QcVS@B7?ea9R{dW$`J$*W(%HhI0E!1lhGyh&1Z8c;2o_M37_S|ke9>54^9ZKQ&7+uNw~kF#G!eEv zjwy5J1g6;ClbB-nPE9T}5oSC+xz(gx^fIRW?<iKTP0pr`O;0Z)y|KAyt-Y&|So z2ptTYqdd1TPd4)vm@MZDE;ucGJ0@T86`s7`S7h>YUroN{ETBRNY5~J!E{~Q)(1_lO*e;FAzU-J9J!nl3&(ctwgn%5wr;F#qE zxrB-F-+4^2{}(sUjmTwE0GR`^os+?liIHg?!#Wm_YN!~;WUXj}$$8O&{7f5A#rvWq z`I$F@-2qk0FnLjQ7UPc1yfNa8q8C7hfE~fWzzcE)Gvohrn=NA(GcxX+d^hec6En}` z74d45AH|DI=1NeR{3%{!vR;Cg*De-b7FhYu#L>XS#PIX~E*2hmHO0gL68rOiA67AB zy_**$EMn2z%>s%+P%dF$U<2u8{PTZ5k{xUyJ3wNSb5pI&_9Cg~0;y*D^Zy`{O$afB gO mnemonic_map; StringMap prefix_map; @@ -766,9 +766,9 @@ String const Asm_amd64::mnemonic_strings[Asm_amd64::MNEMONIC_COUNT] { str_lit("wrssd"), str_lit("wrssq"), str_lit("wrussd"), str_lit("wrussq"), str_lit("setssbsy"), str_lit("clrssbsy"), str_lit("endbr64"), str_lit("endbr32"), str_lit("xsave"), str_lit("xsave64"), str_lit("xrstor"), str_lit("xrstor64"), str_lit("xsaveopt"), str_lit("xsaveopt64"), str_lit("xsavec"), str_lit("xsavec64"), str_lit("xsaves"), str_lit("xsaves64"), str_lit("xrstors"), str_lit("xrstors64"), str_lit("prefetcht0"), str_lit("prefetcht1"), str_lit("prefetcht2"), str_lit("prefetchnta"), str_lit("prefetchw"), str_lit("clflushopt"), str_lit("clwb"), str_lit("cldemote"), str_lit("bswap"), str_lit("cmpxchg"), str_lit("cmpxchg8b"), str_lit("cmpxchg16b"), str_lit("xadd"), str_lit("bound"), str_lit("enter"), str_lit("leave"), str_lit("xlat"), str_lit("xlatb"), str_lit("movbe"), str_lit("rdrand"), str_lit("rdseed"), str_lit("swapgs"), str_lit("monitor"), str_lit("mwait"), str_lit("clac"), str_lit("stac"), str_lit("rdfsbase"), str_lit("rdgsbase"), - str_lit("wrfsbase"), str_lit("wrgsbase"), str_lit("ptwrite"), str_lit("rdpid"), str_lit("wbnoinvd"), str_lit("serialize"), str_lit("prefetch"), str_lit("tpause"), str_lit("umonitor"), str_lit("umwait"), str_lit("movdiri"), str_lit("movdir64b"), str_lit("enqcmd"), str_lit("enqcmds"), str_lit("aadd"), str_lit("aand"), - str_lit("aor"), str_lit("axor"), str_lit("xend"), str_lit("xtest"), str_lit("vmrun"), str_lit("vmmcall"), str_lit("vmload"), str_lit("vmsave"), str_lit("stgi"), str_lit("clgi"), str_lit("skinit"), str_lit("invlpga"), str_lit("invlpgb"), str_lit("tlbsync"), str_lit("pvalidate"), str_lit("rmpadjust"), - str_lit("rmpupdate"), str_lit("psmash"), str_lit("clzero"), str_lit("monitorx"), str_lit("mwaitx"), str_lit("rdpru"), str_lit("mcommit"), + str_lit("wrfsbase"), str_lit("wrgsbase"), str_lit("ptwrite"), str_lit("rdpid"), str_lit("wbnoinvd"), str_lit("serialize"), str_lit("prefetch"), str_lit("in"), str_lit("out"), str_lit("tpause"), str_lit("umonitor"), str_lit("umwait"), str_lit("movdiri"), str_lit("movdir64b"), str_lit("enqcmd"), str_lit("enqcmds"), + str_lit("aadd"), str_lit("aand"), str_lit("aor"), str_lit("axor"), str_lit("xend"), str_lit("xtest"), str_lit("vmrun"), str_lit("vmmcall"), str_lit("vmload"), str_lit("vmsave"), str_lit("stgi"), str_lit("clgi"), str_lit("skinit"), str_lit("invlpga"), str_lit("invlpgb"), str_lit("tlbsync"), + str_lit("pvalidate"), str_lit("rmpadjust"), str_lit("rmpupdate"), str_lit("psmash"), str_lit("clzero"), str_lit("monitorx"), str_lit("mwaitx"), str_lit("rdpru"), str_lit("mcommit"), }; String const Asm_amd64::prefix_strings[Asm_amd64::PREFIX_COUNT] { str_lit(""), str_lit("es"), str_lit("cs"), str_lit("ss"), str_lit("ds"), str_lit("rex"), str_lit("evex"), str_lit("fs"), str_lit("gs"), str_lit("vex"), str_lit("lock"), str_lit("repne"), str_lit("rep"), @@ -805,7 +805,7 @@ String const Asm_amd64::register_strings[Asm_amd64::REG_COUNT] { str_lit("bnd2"), str_lit("bnd3"), str_lit("mm0"), str_lit("mm1"), str_lit("mm2"), str_lit("mm3"), str_lit("mm4"), str_lit("mm5"), str_lit("mm6"), str_lit("mm7"), str_lit("st0"), str_lit("st1"), str_lit("st2"), str_lit("st3"), str_lit("st4"), str_lit("st5"), str_lit("st6"), str_lit("st7"), str_lit("rip"), }; -Asm_amd64::EncodeRun const Asm_amd64::raw_encode_runs[1239] = { +Asm_amd64::EncodeRun const Asm_amd64::raw_encode_runs[1241] = { { 0, 0}, { 0, 32}, { 32, 9}, { 41, 5}, { 46, 5}, { 51, 1}, { 52, 7}, { 59, 9}, { 68, 6}, { 74, 3}, { 77, 19}, { 96, 19}, { 115, 19}, { 134, 19}, { 153, 4}, { 157, 13}, { 170, 4}, { 174, 4}, { 178, 6}, { 184, 6}, { 190, 4}, { 194, 19}, { 213, 19}, { 232, 19}, { 251, 19}, { 270, 4}, { 274, 12}, { 286, 12}, { 298, 12}, { 310, 12}, { 322, 12}, { 334, 12}, { 346, 12}, { 358, 12}, { 370, 6}, { 376, 6}, { 382, 6}, { 388, 6}, { 394, 6}, { 400, 6}, { 406, 3}, { 409, 3}, { 412, 3}, { 415, 3}, { 418, 3}, { 421, 6}, { 427, 2}, { 429, 2}, @@ -881,11 +881,11 @@ Asm_amd64::EncodeRun const Asm_amd64::raw_encode_runs[1239] = { {2340, 1}, {2341, 1}, {2342, 1}, {2343, 1}, {2344, 1}, {2345, 1}, {2346, 1}, {2347, 1}, {2348, 1}, {2349, 1}, {2350, 1}, {2351, 1}, {2352, 1}, {2353, 1}, {2354, 1}, {2355, 1}, {2356, 1}, {2357, 1}, {2358, 1}, {2359, 1}, {2360, 1}, {2361, 1}, {2362, 1}, {2363, 1}, {2364, 1}, {2365, 1}, {2366, 1}, {2367, 1}, {2368, 2}, {2370, 4}, {2374, 1}, {2375, 1}, {2376, 4}, {2380, 2}, {2382, 1}, {2383, 1}, {2384, 1}, {2385, 1}, {2386, 6}, {2392, 3}, {2395, 3}, {2398, 1}, {2399, 1}, {2400, 1}, {2401, 1}, {2402, 1}, {2403, 2}, {2405, 2}, - {2407, 2}, {2409, 2}, {2411, 2}, {2413, 1}, {2414, 1}, {2415, 1}, {2416, 1}, {2417, 1}, {2418, 1}, {2419, 1}, {2420, 2}, {2422, 1}, {2423, 1}, {2424, 1}, {2425, 2}, {2427, 2}, - {2429, 2}, {2431, 2}, {2433, 1}, {2434, 1}, {2435, 1}, {2436, 1}, {2437, 1}, {2438, 1}, {2439, 1}, {2440, 1}, {2441, 1}, {2442, 1}, {2443, 1}, {2444, 1}, {2445, 1}, {2446, 1}, - {2447, 1}, {2448, 1}, {2449, 1}, {2450, 1}, {2451, 1}, {2452, 1}, {2453, 1}, + {2407, 2}, {2409, 2}, {2411, 2}, {2413, 1}, {2414, 1}, {2415, 1}, {2416, 1}, {2417, 6}, {2423, 6}, {2429, 1}, {2430, 1}, {2431, 1}, {2432, 2}, {2434, 1}, {2435, 1}, {2436, 1}, + {2437, 2}, {2439, 2}, {2441, 2}, {2443, 2}, {2445, 1}, {2446, 1}, {2447, 1}, {2448, 1}, {2449, 1}, {2450, 1}, {2451, 1}, {2452, 1}, {2453, 1}, {2454, 1}, {2455, 1}, {2456, 1}, + {2457, 1}, {2458, 1}, {2459, 1}, {2460, 1}, {2461, 1}, {2462, 1}, {2463, 1}, {2464, 1}, {2465, 1}, }; -u8 const Asm_amd64::raw_encode_forms[39264] = { +u8 const Asm_amd64::raw_encode_forms[39456] = { 0x01, 0x00, 0x05, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x06, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x07, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x89, 0x00, 0x00, 0x08, 0x08, 0x00, 0x01, 0x00, 0x01, 0x05, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x02, 0x06, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x03, 0x07, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x04, 0x08, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x08, 0x08, 0x00, 0x01, 0x00, 0x01, 0x12, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x02, 0x13, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x03, 0x14, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x04, 0x15, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x08, 0x08, 0x00, @@ -1490,18 +1490,21 @@ u8 const Asm_amd64::raw_encode_forms[39264] = { 0xae, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x00, 0x09, 0x08, 0x05, 0x00, 0xaf, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x01, 0x09, 0x00, 0x05, 0x00, 0xaf, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x01, 0x09, 0x08, 0x05, 0x00, 0xb0, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x02, 0x09, 0x00, 0x05, 0x00, 0xb0, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x02, 0x09, 0x08, 0x05, 0x00, 0xb1, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x03, 0x09, 0x00, 0x05, 0x00, 0xb1, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x03, 0x09, 0x08, 0x05, 0x00, 0xb2, 0x04, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x04, 0x09, 0x00, 0x05, 0x00, 0xb2, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x04, 0x09, 0x08, 0x05, 0x00, 0xb3, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc7, 0x07, 0x09, 0x00, 0x05, 0x00, 0xb4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0xb5, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe8, 0x01, 0x00, 0x00, 0x00, - 0xb6, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x05, 0x00, 0xb7, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x06, 0x05, 0x00, 0x05, 0x00, 0xb8, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x06, 0x09, 0x00, 0x05, 0x00, 0xb9, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x06, 0x0d, 0x00, 0x05, 0x00, - 0xba, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x08, 0x00, 0xba, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x08, 0x08, 0x00, 0xbb, 0x04, 0x04, 0x11, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x06, 0x00, 0x08, 0x00, 0xbc, 0x04, 0x04, 0x11, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x0e, 0x00, 0x08, 0x00, - 0xbd, 0x04, 0x04, 0x11, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xbe, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x02, 0x00, 0x08, 0x00, 0xbe, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x02, 0x08, 0x08, 0x00, 0xbf, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x06, 0x00, 0x08, 0x00, - 0xbf, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x06, 0x08, 0x08, 0x00, 0xc0, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0e, 0x00, 0x08, 0x00, 0xc0, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0e, 0x08, 0x08, 0x00, 0xc1, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0a, 0x00, 0x08, 0x00, - 0xc1, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0a, 0x08, 0x08, 0x00, 0xc2, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd5, 0x01, 0x00, 0x00, 0x00, 0xc3, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd6, 0x01, 0x00, 0x00, 0x00, 0xc4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd8, 0x01, 0x00, 0x00, 0x00, - 0xc5, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd9, 0x01, 0x00, 0x00, 0x00, 0xc6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xda, 0x01, 0x00, 0x00, 0x00, 0xc7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdb, 0x01, 0x00, 0x00, 0x00, 0xc8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0x01, 0x00, 0x00, 0x00, - 0xc9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xca, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xde, 0x01, 0x00, 0x00, 0x00, 0xcb, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdf, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0xcd, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x00, 0xce, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x0d, 0x00, 0x00, 0x00, 0xcf, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x09, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x0d, 0x00, 0x00, 0x00, - 0xd1, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x09, 0x00, 0x00, 0x00, 0xd2, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x01, 0x00, 0x00, 0x00, 0xd3, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfa, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0x01, 0x00, 0x00, 0x00, - 0xd5, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfd, 0x01, 0x00, 0x00, 0x00, 0xd6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfa, 0x09, 0x00, 0x00, 0x00, + 0xb6, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x05, 0x00, 0xb7, 0x04, 0x19, 0x12, 0x00, 0x00, 0x09, 0x05, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x24, 0x00, 0xb7, 0x04, 0x1a, 0x12, 0x00, 0x00, 0x09, 0x05, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x10, 0x24, 0x00, 0xb7, 0x04, 0x1b, 0x12, 0x00, 0x00, 0x09, 0x05, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x24, 0x00, + 0xb7, 0x04, 0x19, 0x1e, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x20, 0x00, 0xb7, 0x04, 0x1a, 0x1e, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0xed, 0x00, 0x00, 0x10, 0x20, 0x00, 0xb7, 0x04, 0x1b, 0x1e, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x20, 0x00, 0xb8, 0x04, 0x12, 0x19, 0x00, 0x00, 0x05, 0x09, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x24, 0x00, + 0xb8, 0x04, 0x12, 0x1a, 0x00, 0x00, 0x05, 0x09, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x10, 0x24, 0x00, 0xb8, 0x04, 0x12, 0x1b, 0x00, 0x00, 0x05, 0x09, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x24, 0x00, 0xb8, 0x04, 0x1e, 0x19, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x20, 0x00, 0xb8, 0x04, 0x1e, 0x1a, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0xef, 0x00, 0x00, 0x10, 0x20, 0x00, + 0xb8, 0x04, 0x1e, 0x1b, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x20, 0x00, 0xb9, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x06, 0x05, 0x00, 0x05, 0x00, 0xba, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x06, 0x09, 0x00, 0x05, 0x00, 0xbb, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xae, 0x06, 0x0d, 0x00, 0x05, 0x00, + 0xbc, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x08, 0x00, 0xbc, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x08, 0x08, 0x00, 0xbd, 0x04, 0x04, 0x11, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x06, 0x00, 0x08, 0x00, 0xbe, 0x04, 0x04, 0x11, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x0e, 0x00, 0x08, 0x00, + 0xbf, 0x04, 0x04, 0x11, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xc0, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x02, 0x00, 0x08, 0x00, 0xc0, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x02, 0x08, 0x08, 0x00, 0xc1, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x06, 0x00, 0x08, 0x00, + 0xc1, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x06, 0x08, 0x08, 0x00, 0xc2, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0e, 0x00, 0x08, 0x00, 0xc2, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0e, 0x08, 0x08, 0x00, 0xc3, 0x04, 0x0c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0a, 0x00, 0x08, 0x00, + 0xc3, 0x04, 0x0d, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x0a, 0x08, 0x08, 0x00, 0xc4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd5, 0x01, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd6, 0x01, 0x00, 0x00, 0x00, 0xc6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd8, 0x01, 0x00, 0x00, 0x00, + 0xc7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd9, 0x01, 0x00, 0x00, 0x00, 0xc8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xda, 0x01, 0x00, 0x00, 0x00, 0xc9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdb, 0x01, 0x00, 0x00, 0x00, 0xca, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0x01, 0x00, 0x00, 0x00, + 0xcb, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xde, 0x01, 0x00, 0x00, 0x00, 0xcd, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdf, 0x01, 0x00, 0x00, 0x00, 0xce, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x01, 0x00, 0x00, 0x00, + 0xcf, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x0d, 0x00, 0x00, 0x00, 0xd1, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x09, 0x00, 0x00, 0x00, 0xd2, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x0d, 0x00, 0x00, 0x00, + 0xd3, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x09, 0x00, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x01, 0x00, 0x00, 0x00, 0xd5, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfa, 0x01, 0x00, 0x00, 0x00, 0xd6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0x01, 0x00, 0x00, 0x00, + 0xd7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfd, 0x01, 0x00, 0x00, 0x00, 0xd8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfa, 0x09, 0x00, 0x00, 0x00, }; -u8 const Asm_amd64::raw_clobber_forms[39264] = { +u8 const Asm_amd64::raw_clobber_forms[39456] = { 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -2106,7 +2109,10 @@ u8 const Asm_amd64::raw_clobber_forms[39264] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, diff --git a/src/check_asm.cpp b/src/check_asm.cpp index 47309ad07..1b121f539 100644 --- a/src/check_asm.cpp +++ b/src/check_asm.cpp @@ -849,7 +849,9 @@ enum CheckMnemomicResult { template gb_internal CheckMnemomicResult check_mnemonic_name(AsmCtx *asm_ctx, AstAsmInstruction *instr, u16 *mnemonic_) { - String name = instr->name->Ident.token.string; + Token token = instr->name->Ident.token; + GB_ASSERT(token.kind == Ast_Ident || token_is_keyword(token.kind)); + String name = token.string; auto p = asm_ctx->prefix_lookup(name); if (p) { if (mnemonic_) *mnemonic_ = cast(u16)p; @@ -929,6 +931,10 @@ gb_internal void check_mnemonic(AsmCtx *asm_ctx, CheckerContext *ctx, Entity *tm min_count = gb_max(min_count, 0); max_count = gb_max(max_count, 0); + if (mnemonic == asm_ctx->M_IN) { + GB_PANIC("in %d %d", min_count, max_count); + } + // A prefix that none of this mnemonic's forms can take is unconditionally wrong, // independent of whether the operands match — catch it even on a match failure. if (previous_prefix > 0) {