From 0e90e5babf657c186b83c0c8a34183ebbb303e0c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 15 Jun 2026 23:02:19 +0100 Subject: [PATCH] Update the binary tables --- core/rexcode/x86/encoding_types.odin | 4 +- core/rexcode/x86/tablegen/gen.odin | 8 +- .../x86/tablegen/generated/encode_tables.odin | 306 +++++++++--------- core/rexcode/x86/tables/x86.encode_forms.bin | Bin 37680 -> 37680 bytes core/rexcode/x86/tables/x86.evex.bin | Bin 8360 -> 8360 bytes core/rexcode/x86/tables/x86.legacy.bin | Bin 25400 -> 25400 bytes core/rexcode/x86/tables/x86.vex.bin | Bin 13340 -> 13340 bytes 7 files changed, 159 insertions(+), 159 deletions(-) diff --git a/core/rexcode/x86/encoding_types.odin b/core/rexcode/x86/encoding_types.odin index fe6ad9ac4..ea537b6f4 100644 --- a/core/rexcode/x86/encoding_types.odin +++ b/core/rexcode/x86/encoding_types.odin @@ -259,10 +259,10 @@ Encoding_Flags :: bit_field u32 { modrm_reg_ext: bool | 1, // ModR/M reg field is opcode extension (use ext field) mode_32_only: bool | 1, // only valid in Mode._32 (e.g. short-form INC/DEC at 0x40-0x4F) - explicit_count: u8 | 2, // 0..<4 non-implicit operands + explicit_count: u8 | 3, // 0..<4 non-implicit operands has_implicit: bool | 1, // any implicit operand - op_count: u8 | 2, // total operands including implicit (0..<4) + op_count: u8 | 3, // total operands including implicit (0..<4) needs_modrm: bool | 1, // any enc is .MR/.REG/.VVVV } diff --git a/core/rexcode/x86/tablegen/gen.odin b/core/rexcode/x86/tablegen/gen.odin index 303d9f206..0a9ccc038 100644 --- a/core/rexcode/x86/tablegen/gen.odin +++ b/core/rexcode/x86/tablegen/gen.odin @@ -385,11 +385,11 @@ write_flags :: proc(sb: ^strings.Builder, enc: union{lib.Encoding, Collected_Ent switch e in enc { case lib.Encoding: encoding_operand_count: u8 = 0 - has_implict := false + has_implicit := false for op_type in e.ops { if op_type == .NONE { break } if lib.is_implicit_op_inline(op_type) { - has_implict = true + has_implicit = true } else { encoding_operand_count += 1 } @@ -397,8 +397,8 @@ write_flags :: proc(sb: ^strings.Builder, enc: union{lib.Encoding, Collected_Ent if encoding_operand_count > 0 { append(&parts, fmt.tprintf("explicit_count=%d", encoding_operand_count)) } - if has_implict { - append(&parts, "has_implict=true") + if has_implicit { + append(&parts, "has_implicit=true") } case Collected_Entry: diff --git a/core/rexcode/x86/tablegen/generated/encode_tables.odin b/core/rexcode/x86/tablegen/generated/encode_tables.odin index 5acf93a23..11d45ce67 100644 --- a/core/rexcode/x86/tablegen/generated/encode_tables.odin +++ b/core/rexcode/x86/tablegen/generated/encode_tables.odin @@ -26,14 +26,14 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.MOV, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0xC7, 0, {modrm_reg_ext=true, explicit_count=2}}, {.MOV, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0xC7, 0, {modrm_reg_ext=true, explicit_count=2}}, {.MOV, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0xC7, 0, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, - {.MOV, {.AL_IMPL, .MOFFS8, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA0, 0, {explicit_count=1, has_implict=true}}, - {.MOV, {.AX_IMPL, .MOFFS16, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implict=true}}, - {.MOV, {.EAX_IMPL, .MOFFS32, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implict=true}}, - {.MOV, {.RAX_IMPL, .MOFFS64, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, - {.MOV, {.MOFFS8, .AL_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA2, 0, {explicit_count=1, has_implict=true}}, - {.MOV, {.MOFFS16, .AX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implict=true}}, - {.MOV, {.MOFFS32, .EAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implict=true}}, - {.MOV, {.MOFFS64, .RAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.MOV, {.AL_IMPL, .MOFFS8, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA0, 0, {explicit_count=1, has_implicit=true}}, + {.MOV, {.AX_IMPL, .MOFFS16, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implicit=true}}, + {.MOV, {.EAX_IMPL, .MOFFS32, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implicit=true}}, + {.MOV, {.RAX_IMPL, .MOFFS64, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, + {.MOV, {.MOFFS8, .AL_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA2, 0, {explicit_count=1, has_implicit=true}}, + {.MOV, {.MOFFS16, .AX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implicit=true}}, + {.MOV, {.MOFFS32, .EAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implicit=true}}, + {.MOV, {.MOFFS64, .RAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.MOV, {.RM16, .SREG, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x8C, 0, {explicit_count=2}}, {.MOV, {.RM64, .SREG, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x8C, 0, {force_rex_w=true, explicit_count=2}}, {.MOV, {.SREG, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x8E, 0, {explicit_count=2}}, @@ -44,14 +44,14 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.MOV, {.DR, .R64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x23, 0, {esc=._0F, explicit_count=2}}, // .MOVABS {.MOVABS, {.R64, .IMM64, .NONE, .NONE}, {.OP_R, .IQ, .NONE, .NONE}, 0xB8, 0, {force_rex_w=true, explicit_count=2}}, - {.MOVABS, {.AL_IMPL, .MOFFS8, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA0, 0, {explicit_count=1, has_implict=true}}, - {.MOVABS, {.AX_IMPL, .MOFFS16, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implict=true}}, - {.MOVABS, {.EAX_IMPL, .MOFFS32, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implict=true}}, - {.MOVABS, {.RAX_IMPL, .MOFFS64, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, - {.MOVABS, {.MOFFS8, .AL_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA2, 0, {explicit_count=1, has_implict=true}}, - {.MOVABS, {.MOFFS16, .AX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implict=true}}, - {.MOVABS, {.MOFFS32, .EAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implict=true}}, - {.MOVABS, {.MOFFS64, .RAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.MOVABS, {.AL_IMPL, .MOFFS8, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA0, 0, {explicit_count=1, has_implicit=true}}, + {.MOVABS, {.AX_IMPL, .MOFFS16, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implicit=true}}, + {.MOVABS, {.EAX_IMPL, .MOFFS32, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {explicit_count=1, has_implicit=true}}, + {.MOVABS, {.RAX_IMPL, .MOFFS64, .NONE, .NONE}, {.IMPL, .IQ, .NONE, .NONE}, 0xA1, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, + {.MOVABS, {.MOFFS8, .AL_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA2, 0, {explicit_count=1, has_implicit=true}}, + {.MOVABS, {.MOFFS16, .AX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implicit=true}}, + {.MOVABS, {.MOFFS32, .EAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {explicit_count=1, has_implicit=true}}, + {.MOVABS, {.MOFFS64, .RAX_IMPL, .NONE, .NONE}, {.IQ, .IMPL, .NONE, .NONE}, 0xA3, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, // .MOVZX {.MOVZX, {.R16, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0xB6, 0, {esc=._0F, explicit_count=2}}, {.MOVZX, {.R32, .RM8, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0xB6, 0, {esc=._0F, explicit_count=2}}, @@ -67,9 +67,9 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .MOVSXD {.MOVSXD, {.R64, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x63, 0, {force_rex_w=true, explicit_count=2}}, // .XCHG - {.XCHG, {.AX_IMPL, .R16, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0x90, 0, {explicit_count=1, has_implict=true}}, - {.XCHG, {.EAX_IMPL, .R32, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0x90, 0, {explicit_count=1, has_implict=true}}, - {.XCHG, {.RAX_IMPL, .R64, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0x90, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.XCHG, {.AX_IMPL, .R16, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0x90, 0, {explicit_count=1, has_implicit=true}}, + {.XCHG, {.EAX_IMPL, .R32, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0x90, 0, {explicit_count=1, has_implicit=true}}, + {.XCHG, {.RAX_IMPL, .R64, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0x90, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.XCHG, {.RM8, .R8, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x86, 0, {lock_ok=true, explicit_count=2}}, {.XCHG, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x87, 0, {lock_ok=true, explicit_count=2}}, {.XCHG, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x87, 0, {lock_ok=true, explicit_count=2}}, @@ -104,10 +104,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.ADD, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x03, 0, {explicit_count=2}}, {.ADD, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x03, 0, {explicit_count=2}}, {.ADD, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x03, 0, {force_rex_w=true, explicit_count=2}}, - {.ADD, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x04, 0, {explicit_count=1, has_implict=true}}, - {.ADD, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x05, 0, {explicit_count=1, has_implict=true}}, - {.ADD, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x05, 0, {explicit_count=1, has_implict=true}}, - {.ADD, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x05, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.ADD, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x04, 0, {explicit_count=1, has_implicit=true}}, + {.ADD, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x05, 0, {explicit_count=1, has_implicit=true}}, + {.ADD, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x05, 0, {explicit_count=1, has_implicit=true}}, + {.ADD, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x05, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.ADD, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 0, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.ADD, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 0, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.ADD, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 0, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, @@ -124,10 +124,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.ADC, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x13, 0, {explicit_count=2}}, {.ADC, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x13, 0, {explicit_count=2}}, {.ADC, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x13, 0, {force_rex_w=true, explicit_count=2}}, - {.ADC, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x14, 0, {explicit_count=1, has_implict=true}}, - {.ADC, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x15, 0, {explicit_count=1, has_implict=true}}, - {.ADC, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x15, 0, {explicit_count=1, has_implict=true}}, - {.ADC, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x15, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.ADC, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x14, 0, {explicit_count=1, has_implicit=true}}, + {.ADC, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x15, 0, {explicit_count=1, has_implicit=true}}, + {.ADC, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x15, 0, {explicit_count=1, has_implicit=true}}, + {.ADC, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x15, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.ADC, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 2, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.ADC, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 2, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.ADC, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 2, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, @@ -144,10 +144,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.SUB, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x2B, 0, {explicit_count=2}}, {.SUB, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x2B, 0, {explicit_count=2}}, {.SUB, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x2B, 0, {force_rex_w=true, explicit_count=2}}, - {.SUB, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x2C, 0, {explicit_count=1, has_implict=true}}, - {.SUB, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x2D, 0, {explicit_count=1, has_implict=true}}, - {.SUB, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x2D, 0, {explicit_count=1, has_implict=true}}, - {.SUB, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x2D, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.SUB, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x2C, 0, {explicit_count=1, has_implicit=true}}, + {.SUB, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x2D, 0, {explicit_count=1, has_implicit=true}}, + {.SUB, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x2D, 0, {explicit_count=1, has_implicit=true}}, + {.SUB, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x2D, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.SUB, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 5, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.SUB, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 5, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.SUB, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 5, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, @@ -164,10 +164,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.SBB, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x1B, 0, {explicit_count=2}}, {.SBB, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x1B, 0, {explicit_count=2}}, {.SBB, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x1B, 0, {force_rex_w=true, explicit_count=2}}, - {.SBB, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x1C, 0, {explicit_count=1, has_implict=true}}, - {.SBB, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x1D, 0, {explicit_count=1, has_implict=true}}, - {.SBB, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x1D, 0, {explicit_count=1, has_implict=true}}, - {.SBB, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x1D, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.SBB, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x1C, 0, {explicit_count=1, has_implicit=true}}, + {.SBB, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x1D, 0, {explicit_count=1, has_implicit=true}}, + {.SBB, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x1D, 0, {explicit_count=1, has_implicit=true}}, + {.SBB, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x1D, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.SBB, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 3, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.SBB, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 3, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.SBB, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 3, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, @@ -232,10 +232,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.CMP, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x3B, 0, {explicit_count=2}}, {.CMP, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x3B, 0, {explicit_count=2}}, {.CMP, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x3B, 0, {force_rex_w=true, explicit_count=2}}, - {.CMP, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x3C, 0, {explicit_count=1, has_implict=true}}, - {.CMP, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x3D, 0, {explicit_count=1, has_implict=true}}, - {.CMP, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x3D, 0, {explicit_count=1, has_implict=true}}, - {.CMP, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x3D, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.CMP, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x3C, 0, {explicit_count=1, has_implicit=true}}, + {.CMP, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x3D, 0, {explicit_count=1, has_implicit=true}}, + {.CMP, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x3D, 0, {explicit_count=1, has_implicit=true}}, + {.CMP, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x3D, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.CMP, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 7, {modrm_reg_ext=true, explicit_count=2}}, {.CMP, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 7, {modrm_reg_ext=true, explicit_count=2}}, {.CMP, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 7, {modrm_reg_ext=true, explicit_count=2}}, @@ -252,10 +252,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.AND, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x23, 0, {explicit_count=2}}, {.AND, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x23, 0, {explicit_count=2}}, {.AND, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x23, 0, {force_rex_w=true, explicit_count=2}}, - {.AND, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x24, 0, {explicit_count=1, has_implict=true}}, - {.AND, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x25, 0, {explicit_count=1, has_implict=true}}, - {.AND, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x25, 0, {explicit_count=1, has_implict=true}}, - {.AND, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x25, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.AND, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x24, 0, {explicit_count=1, has_implicit=true}}, + {.AND, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x25, 0, {explicit_count=1, has_implicit=true}}, + {.AND, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x25, 0, {explicit_count=1, has_implicit=true}}, + {.AND, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x25, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.AND, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 4, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.AND, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 4, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.AND, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 4, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, @@ -272,10 +272,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.OR, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x0B, 0, {explicit_count=2}}, {.OR, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x0B, 0, {explicit_count=2}}, {.OR, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x0B, 0, {force_rex_w=true, explicit_count=2}}, - {.OR, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x0C, 0, {explicit_count=1, has_implict=true}}, - {.OR, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x0D, 0, {explicit_count=1, has_implict=true}}, - {.OR, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x0D, 0, {explicit_count=1, has_implict=true}}, - {.OR, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x0D, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.OR, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x0C, 0, {explicit_count=1, has_implicit=true}}, + {.OR, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x0D, 0, {explicit_count=1, has_implicit=true}}, + {.OR, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x0D, 0, {explicit_count=1, has_implicit=true}}, + {.OR, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x0D, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.OR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 1, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.OR, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 1, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.OR, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 1, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, @@ -292,10 +292,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.XOR, {.R16, .RM16, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x33, 0, {explicit_count=2}}, {.XOR, {.R32, .RM32, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x33, 0, {explicit_count=2}}, {.XOR, {.R64, .RM64, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0x33, 0, {force_rex_w=true, explicit_count=2}}, - {.XOR, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x34, 0, {explicit_count=1, has_implict=true}}, - {.XOR, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x35, 0, {explicit_count=1, has_implict=true}}, - {.XOR, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x35, 0, {explicit_count=1, has_implict=true}}, - {.XOR, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x35, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.XOR, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0x34, 0, {explicit_count=1, has_implicit=true}}, + {.XOR, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0x35, 0, {explicit_count=1, has_implicit=true}}, + {.XOR, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x35, 0, {explicit_count=1, has_implicit=true}}, + {.XOR, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0x35, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.XOR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0x80, 6, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.XOR, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0x81, 6, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, {.XOR, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0x81, 6, {lock_ok=true, modrm_reg_ext=true, explicit_count=2}}, @@ -313,119 +313,119 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.TEST, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x85, 0, {explicit_count=2}}, {.TEST, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x85, 0, {explicit_count=2}}, {.TEST, {.RM64, .R64, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0x85, 0, {force_rex_w=true, explicit_count=2}}, - {.TEST, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xA8, 0, {explicit_count=1, has_implict=true}}, - {.TEST, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0xA9, 0, {explicit_count=1, has_implict=true}}, - {.TEST, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0xA9, 0, {explicit_count=1, has_implict=true}}, - {.TEST, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0xA9, 0, {force_rex_w=true, explicit_count=1, has_implict=true}}, + {.TEST, {.AL_IMPL, .IMM8, .NONE, .NONE}, {.IMPL, .IB, .NONE, .NONE}, 0xA8, 0, {explicit_count=1, has_implicit=true}}, + {.TEST, {.AX_IMPL, .IMM16, .NONE, .NONE}, {.IMPL, .IW, .NONE, .NONE}, 0xA9, 0, {explicit_count=1, has_implicit=true}}, + {.TEST, {.EAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0xA9, 0, {explicit_count=1, has_implicit=true}}, + {.TEST, {.RAX_IMPL, .IMM32, .NONE, .NONE}, {.IMPL, .ID, .NONE, .NONE}, 0xA9, 0, {force_rex_w=true, explicit_count=1, has_implicit=true}}, {.TEST, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xF6, 0, {modrm_reg_ext=true, explicit_count=2}}, {.TEST, {.RM16, .IMM16, .NONE, .NONE}, {.MR, .IW, .NONE, .NONE}, 0xF7, 0, {modrm_reg_ext=true, explicit_count=2}}, {.TEST, {.RM32, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0xF7, 0, {modrm_reg_ext=true, explicit_count=2}}, {.TEST, {.RM64, .IMM32, .NONE, .NONE}, {.MR, .ID, .NONE, .NONE}, 0xF7, 0, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .SHL - {.SHL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 4, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHL, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 4, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 4, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHL, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 4, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHL, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC0, 4, {modrm_reg_ext=true, explicit_count=2}}, - {.SHL, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 4, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHL, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 4, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHL, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 4, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHL, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 4, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHL, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 4, {modrm_reg_ext=true, explicit_count=2}}, - {.SHL, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 4, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHL, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 4, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHL, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 4, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHL, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 4, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHL, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 4, {modrm_reg_ext=true, explicit_count=2}}, - {.SHL, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 4, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHL, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 4, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHL, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 4, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHL, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 4, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHL, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 4, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .SHR - {.SHR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 5, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 5, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 5, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 5, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC0, 5, {modrm_reg_ext=true, explicit_count=2}}, - {.SHR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 5, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 5, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 5, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 5, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHR, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 5, {modrm_reg_ext=true, explicit_count=2}}, - {.SHR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 5, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 5, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 5, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 5, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHR, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 5, {modrm_reg_ext=true, explicit_count=2}}, - {.SHR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 5, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SHR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 5, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SHR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 5, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SHR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 5, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SHR, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 5, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .SAR - {.SAR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 7, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SAR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 7, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SAR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 7, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SAR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 7, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SAR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC0, 7, {modrm_reg_ext=true, explicit_count=2}}, - {.SAR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 7, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SAR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 7, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SAR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 7, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SAR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 7, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SAR, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 7, {modrm_reg_ext=true, explicit_count=2}}, - {.SAR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 7, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SAR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 7, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SAR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 7, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SAR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 7, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SAR, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 7, {modrm_reg_ext=true, explicit_count=2}}, - {.SAR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 7, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.SAR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 7, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.SAR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 7, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.SAR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 7, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.SAR, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 7, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .ROL - {.ROL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 0, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROL, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 0, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 0, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROL, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 0, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROL, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC0, 0, {modrm_reg_ext=true, explicit_count=2}}, - {.ROL, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 0, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROL, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 0, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROL, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 0, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROL, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 0, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROL, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 0, {modrm_reg_ext=true, explicit_count=2}}, - {.ROL, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 0, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROL, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 0, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROL, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 0, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROL, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 0, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROL, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 0, {modrm_reg_ext=true, explicit_count=2}}, - {.ROL, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 0, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROL, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 0, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROL, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 0, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROL, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 0, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROL, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 0, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .ROR - {.ROR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 1, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 1, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 1, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 1, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC0, 1, {modrm_reg_ext=true, explicit_count=2}}, - {.ROR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 1, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 1, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 1, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 1, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROR, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 1, {modrm_reg_ext=true, explicit_count=2}}, - {.ROR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 1, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 1, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 1, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 1, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROR, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 1, {modrm_reg_ext=true, explicit_count=2}}, - {.ROR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 1, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.ROR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 1, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.ROR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 1, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.ROR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 1, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.ROR, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 1, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .RCL - {.RCL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 2, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCL, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 2, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCL, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 2, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCL, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 2, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCL, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC0, 2, {modrm_reg_ext=true, explicit_count=2}}, - {.RCL, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 2, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCL, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 2, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCL, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 2, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCL, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 2, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCL, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 2, {modrm_reg_ext=true, explicit_count=2}}, - {.RCL, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 2, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCL, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 2, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCL, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 2, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCL, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 2, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCL, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 2, {modrm_reg_ext=true, explicit_count=2}}, - {.RCL, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 2, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCL, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 2, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCL, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 2, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCL, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 2, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCL, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 2, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .RCR - {.RCR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 3, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 3, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCR, {.RM8, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD0, 3, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCR, {.RM8, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD2, 3, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCR, {.RM8, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC0, 3, {modrm_reg_ext=true, explicit_count=2}}, - {.RCR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 3, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 3, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCR, {.RM16, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 3, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCR, {.RM16, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 3, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCR, {.RM16, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 3, {modrm_reg_ext=true, explicit_count=2}}, - {.RCR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 3, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 3, {modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCR, {.RM32, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 3, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCR, {.RM32, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 3, {modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCR, {.RM32, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 3, {modrm_reg_ext=true, explicit_count=2}}, - {.RCR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 3, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, - {.RCR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 3, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implict=true}}, + {.RCR, {.RM64, .ONE_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD1, 3, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, + {.RCR, {.RM64, .CL_IMPL, .NONE, .NONE}, {.MR, .IMPL, .NONE, .NONE}, 0xD3, 3, {force_rex_w=true, modrm_reg_ext=true, explicit_count=1, has_implicit=true}}, {.RCR, {.RM64, .IMM8, .NONE, .NONE}, {.MR, .IB, .NONE, .NONE}, 0xC1, 3, {force_rex_w=true, modrm_reg_ext=true, explicit_count=2}}, // .SHLD {.SHLD, {.RM16, .R16, .IMM8, .NONE}, {.MR, .REG, .IB, .NONE}, 0xA4, 0, {esc=._0F, explicit_count=3}}, {.SHLD, {.RM32, .R32, .IMM8, .NONE}, {.MR, .REG, .IB, .NONE}, 0xA4, 0, {esc=._0F, explicit_count=3}}, {.SHLD, {.RM64, .R64, .IMM8, .NONE}, {.MR, .REG, .IB, .NONE}, 0xA4, 0, {esc=._0F, force_rex_w=true, explicit_count=3}}, - {.SHLD, {.RM16, .R16, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xA5, 0, {esc=._0F, explicit_count=2, has_implict=true}}, - {.SHLD, {.RM32, .R32, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xA5, 0, {esc=._0F, explicit_count=2, has_implict=true}}, - {.SHLD, {.RM64, .R64, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xA5, 0, {esc=._0F, force_rex_w=true, explicit_count=2, has_implict=true}}, + {.SHLD, {.RM16, .R16, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xA5, 0, {esc=._0F, explicit_count=2, has_implicit=true}}, + {.SHLD, {.RM32, .R32, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xA5, 0, {esc=._0F, explicit_count=2, has_implicit=true}}, + {.SHLD, {.RM64, .R64, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xA5, 0, {esc=._0F, force_rex_w=true, explicit_count=2, has_implicit=true}}, // .SHRD {.SHRD, {.RM16, .R16, .IMM8, .NONE}, {.MR, .REG, .IB, .NONE}, 0xAC, 0, {esc=._0F, explicit_count=3}}, {.SHRD, {.RM32, .R32, .IMM8, .NONE}, {.MR, .REG, .IB, .NONE}, 0xAC, 0, {esc=._0F, explicit_count=3}}, {.SHRD, {.RM64, .R64, .IMM8, .NONE}, {.MR, .REG, .IB, .NONE}, 0xAC, 0, {esc=._0F, force_rex_w=true, explicit_count=3}}, - {.SHRD, {.RM16, .R16, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xAD, 0, {esc=._0F, explicit_count=2, has_implict=true}}, - {.SHRD, {.RM32, .R32, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xAD, 0, {esc=._0F, explicit_count=2, has_implict=true}}, - {.SHRD, {.RM64, .R64, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xAD, 0, {esc=._0F, force_rex_w=true, explicit_count=2, has_implict=true}}, + {.SHRD, {.RM16, .R16, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xAD, 0, {esc=._0F, explicit_count=2, has_implicit=true}}, + {.SHRD, {.RM32, .R32, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xAD, 0, {esc=._0F, explicit_count=2, has_implicit=true}}, + {.SHRD, {.RM64, .R64, .CL_IMPL, .NONE}, {.MR, .REG, .IMPL, .NONE}, 0xAD, 0, {esc=._0F, force_rex_w=true, explicit_count=2, has_implicit=true}}, // .BT {.BT, {.RM16, .R16, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0xA3, 0, {esc=._0F, explicit_count=2}}, {.BT, {.RM32, .R32, .NONE, .NONE}, {.MR, .REG, .NONE, .NONE}, 0xA3, 0, {esc=._0F, explicit_count=2}}, @@ -1378,13 +1378,13 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .BLENDPD {.BLENDPD, {.XMM, .XMM_M128, .IMM8, .NONE}, {.REG, .MR, .IB, .NONE}, 0x0D, 0, {esc=._0F3A, prefix=1, explicit_count=3}}, // .BLENDVPS - {.BLENDVPS, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0x14, 0, {esc=._0F38, prefix=1, explicit_count=2, has_implict=true}}, + {.BLENDVPS, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0x14, 0, {esc=._0F38, prefix=1, explicit_count=2, has_implicit=true}}, // .BLENDVPD - {.BLENDVPD, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0x15, 0, {esc=._0F38, prefix=1, explicit_count=2, has_implict=true}}, + {.BLENDVPD, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0x15, 0, {esc=._0F38, prefix=1, explicit_count=2, has_implicit=true}}, // .PBLENDW {.PBLENDW, {.XMM, .XMM_M128, .IMM8, .NONE}, {.REG, .MR, .IB, .NONE}, 0x0E, 0, {esc=._0F3A, prefix=1, explicit_count=3}}, // .PBLENDVB - {.PBLENDVB, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0x10, 0, {esc=._0F38, prefix=1, explicit_count=2, has_implict=true}}, + {.PBLENDVB, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0x10, 0, {esc=._0F38, prefix=1, explicit_count=2, has_implicit=true}}, // .DPPS {.DPPS, {.XMM, .XMM_M128, .IMM8, .NONE}, {.REG, .MR, .IB, .NONE}, 0x40, 0, {esc=._0F3A, prefix=1, explicit_count=3}}, // .DPPD @@ -1510,7 +1510,7 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .SHA256MSG2 {.SHA256MSG2, {.XMM, .XMM_M128, .NONE, .NONE}, {.REG, .MR, .NONE, .NONE}, 0xCD, 0, {esc=._0F38, explicit_count=2}}, // .SHA256RNDS2 - {.SHA256RNDS2, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0xCB, 0, {esc=._0F38, explicit_count=2, has_implict=true}}, + {.SHA256RNDS2, {.XMM, .XMM_M128, .XMM0_IMPL, .NONE}, {.REG, .MR, .IMPL, .NONE}, 0xCB, 0, {esc=._0F38, explicit_count=2, has_implicit=true}}, // .VADDPS {.VADDPS, {.XMM, .XMM, .XMM_M128, .NONE}, {.REG, .VVVV, .MR, .NONE}, 0x58, 0, {esc=._0F, vex_type=.VEX, vex_l=.L0, explicit_count=3}}, {.VADDPS, {.YMM, .YMM, .YMM_M256, .NONE}, {.REG, .VVVV, .MR, .NONE}, 0x58, 0, {esc=._0F, vex_type=.VEX, vex_l=.L1, explicit_count=3}}, @@ -3080,10 +3080,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .FADD {.FADD, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xD8, 0, {explicit_count=1}}, {.FADD, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDC, 0, {explicit_count=1}}, - {.FADD, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 192, {explicit_count=1, has_implict=true}}, - {.FADD, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 192, {explicit_count=1, has_implict=true}}, + {.FADD, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 192, {explicit_count=1, has_implicit=true}}, + {.FADD, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 192, {explicit_count=1, has_implicit=true}}, // .FADDP - {.FADDP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 192, {explicit_count=1, has_implict=true}}, + {.FADDP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 192, {explicit_count=1, has_implicit=true}}, {.FADDP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xDE, 193, {}}, // .FIADD {.FIADD, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDE, 0, {explicit_count=1}}, @@ -3091,10 +3091,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .FSUB {.FSUB, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xD8, 4, {modrm_reg_ext=true, explicit_count=1}}, {.FSUB, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDC, 4, {modrm_reg_ext=true, explicit_count=1}}, - {.FSUB, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 224, {explicit_count=1, has_implict=true}}, - {.FSUB, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 232, {explicit_count=1, has_implict=true}}, + {.FSUB, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 224, {explicit_count=1, has_implicit=true}}, + {.FSUB, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 232, {explicit_count=1, has_implicit=true}}, // .FSUBP - {.FSUBP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 232, {explicit_count=1, has_implict=true}}, + {.FSUBP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 232, {explicit_count=1, has_implicit=true}}, {.FSUBP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xDE, 233, {}}, // .FISUB {.FISUB, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDE, 4, {modrm_reg_ext=true, explicit_count=1}}, @@ -3102,10 +3102,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .FSUBR {.FSUBR, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xD8, 5, {modrm_reg_ext=true, explicit_count=1}}, {.FSUBR, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDC, 5, {modrm_reg_ext=true, explicit_count=1}}, - {.FSUBR, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 232, {explicit_count=1, has_implict=true}}, - {.FSUBR, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 224, {explicit_count=1, has_implict=true}}, + {.FSUBR, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 232, {explicit_count=1, has_implicit=true}}, + {.FSUBR, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 224, {explicit_count=1, has_implicit=true}}, // .FSUBRP - {.FSUBRP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 224, {explicit_count=1, has_implict=true}}, + {.FSUBRP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 224, {explicit_count=1, has_implicit=true}}, {.FSUBRP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xDE, 225, {}}, // .FISUBR {.FISUBR, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDE, 5, {modrm_reg_ext=true, explicit_count=1}}, @@ -3113,10 +3113,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .FMUL {.FMUL, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xD8, 1, {modrm_reg_ext=true, explicit_count=1}}, {.FMUL, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDC, 1, {modrm_reg_ext=true, explicit_count=1}}, - {.FMUL, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 200, {explicit_count=1, has_implict=true}}, - {.FMUL, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 200, {explicit_count=1, has_implict=true}}, + {.FMUL, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 200, {explicit_count=1, has_implicit=true}}, + {.FMUL, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 200, {explicit_count=1, has_implicit=true}}, // .FMULP - {.FMULP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 200, {explicit_count=1, has_implict=true}}, + {.FMULP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 200, {explicit_count=1, has_implicit=true}}, {.FMULP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xDE, 201, {}}, // .FIMUL {.FIMUL, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDE, 1, {modrm_reg_ext=true, explicit_count=1}}, @@ -3124,10 +3124,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .FDIV {.FDIV, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xD8, 6, {modrm_reg_ext=true, explicit_count=1}}, {.FDIV, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDC, 6, {modrm_reg_ext=true, explicit_count=1}}, - {.FDIV, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 240, {explicit_count=1, has_implict=true}}, - {.FDIV, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 248, {explicit_count=1, has_implict=true}}, + {.FDIV, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 240, {explicit_count=1, has_implicit=true}}, + {.FDIV, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 248, {explicit_count=1, has_implicit=true}}, // .FDIVP - {.FDIVP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 248, {explicit_count=1, has_implict=true}}, + {.FDIVP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 248, {explicit_count=1, has_implicit=true}}, {.FDIVP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xDE, 249, {}}, // .FIDIV {.FIDIV, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDE, 6, {modrm_reg_ext=true, explicit_count=1}}, @@ -3135,10 +3135,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ // .FDIVR {.FDIVR, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xD8, 7, {modrm_reg_ext=true, explicit_count=1}}, {.FDIVR, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDC, 7, {modrm_reg_ext=true, explicit_count=1}}, - {.FDIVR, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 248, {explicit_count=1, has_implict=true}}, - {.FDIVR, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 240, {explicit_count=1, has_implict=true}}, + {.FDIVR, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xD8, 248, {explicit_count=1, has_implicit=true}}, + {.FDIVR, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDC, 240, {explicit_count=1, has_implicit=true}}, // .FDIVRP - {.FDIVRP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 240, {explicit_count=1, has_implict=true}}, + {.FDIVRP, {.STI, .ST0_IMPL, .NONE, .NONE}, {.OP_R, .IMPL, .NONE, .NONE}, 0xDE, 240, {explicit_count=1, has_implicit=true}}, {.FDIVRP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xDE, 241, {}}, // .FIDIVR {.FIDIVR, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDE, 7, {modrm_reg_ext=true, explicit_count=1}}, @@ -3198,21 +3198,21 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.FXCH, {.STI, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, 0xD9, 200, {explicit_count=1}}, {.FXCH, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xD9, 201, {}}, // .FCMOVB - {.FCMOVB, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 192, {explicit_count=1, has_implict=true}}, + {.FCMOVB, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 192, {explicit_count=1, has_implicit=true}}, // .FCMOVE - {.FCMOVE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 200, {explicit_count=1, has_implict=true}}, + {.FCMOVE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 200, {explicit_count=1, has_implicit=true}}, // .FCMOVBE - {.FCMOVBE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 208, {explicit_count=1, has_implict=true}}, + {.FCMOVBE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 208, {explicit_count=1, has_implicit=true}}, // .FCMOVU - {.FCMOVU, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 216, {explicit_count=1, has_implict=true}}, + {.FCMOVU, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDA, 216, {explicit_count=1, has_implicit=true}}, // .FCMOVNB - {.FCMOVNB, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 192, {explicit_count=1, has_implict=true}}, + {.FCMOVNB, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 192, {explicit_count=1, has_implicit=true}}, // .FCMOVNE - {.FCMOVNE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 200, {explicit_count=1, has_implict=true}}, + {.FCMOVNE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 200, {explicit_count=1, has_implicit=true}}, // .FCMOVNBE - {.FCMOVNBE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 208, {explicit_count=1, has_implict=true}}, + {.FCMOVNBE, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 208, {explicit_count=1, has_implicit=true}}, // .FCMOVNU - {.FCMOVNU, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 216, {explicit_count=1, has_implict=true}}, + {.FCMOVNU, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 216, {explicit_count=1, has_implicit=true}}, // .FCOM {.FCOM, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xD8, 2, {modrm_reg_ext=true, explicit_count=1}}, {.FCOM, {.M64, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDC, 2, {modrm_reg_ext=true, explicit_count=1}}, @@ -3232,13 +3232,13 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.FICOMP, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDE, 3, {modrm_reg_ext=true, explicit_count=1}}, {.FICOMP, {.M32, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDA, 3, {modrm_reg_ext=true, explicit_count=1}}, // .FCOMI - {.FCOMI, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 240, {explicit_count=1, has_implict=true}}, + {.FCOMI, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 240, {explicit_count=1, has_implicit=true}}, // .FCOMIP - {.FCOMIP, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDF, 240, {explicit_count=1, has_implict=true}}, + {.FCOMIP, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDF, 240, {explicit_count=1, has_implicit=true}}, // .FUCOMI - {.FUCOMI, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 232, {explicit_count=1, has_implict=true}}, + {.FUCOMI, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDB, 232, {explicit_count=1, has_implicit=true}}, // .FUCOMIP - {.FUCOMIP, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDF, 232, {explicit_count=1, has_implict=true}}, + {.FUCOMIP, {.ST0_IMPL, .STI, .NONE, .NONE}, {.IMPL, .OP_R, .NONE, .NONE}, 0xDF, 232, {explicit_count=1, has_implicit=true}}, // .FUCOM {.FUCOM, {.STI, .NONE, .NONE, .NONE}, {.OP_R, .NONE, .NONE, .NONE}, 0xDD, 224, {explicit_count=1}}, {.FUCOM, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xDD, 225, {}}, @@ -3319,10 +3319,10 @@ ENCODE_FORMS := [2355]lib.Encoding{ {.FRSTOR, {.M, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDD, 4, {modrm_reg_ext=true, explicit_count=1}}, // .FSTSW {.FSTSW, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDD, 7, {modrm_reg_ext=true, explicit_count=1}}, - {.FSTSW, {.AX_IMPL, .NONE, .NONE, .NONE}, {.IMPL, .NONE, .NONE, .NONE}, 0xDF, 224, {has_implict=true}}, + {.FSTSW, {.AX_IMPL, .NONE, .NONE, .NONE}, {.IMPL, .NONE, .NONE, .NONE}, 0xDF, 224, {has_implicit=true}}, // .FNSTSW {.FNSTSW, {.M16, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xDD, 7, {modrm_reg_ext=true, explicit_count=1}}, - {.FNSTSW, {.AX_IMPL, .NONE, .NONE, .NONE}, {.IMPL, .NONE, .NONE, .NONE}, 0xDF, 224, {has_implict=true}}, + {.FNSTSW, {.AX_IMPL, .NONE, .NONE, .NONE}, {.IMPL, .NONE, .NONE, .NONE}, 0xDF, 224, {has_implicit=true}}, // .FXSAVE {.FXSAVE, {.M512, .NONE, .NONE, .NONE}, {.MR, .NONE, .NONE, .NONE}, 0xAE, 0, {esc=._0F, modrm_reg_ext=true, explicit_count=1}}, // .FXSAVE64 diff --git a/core/rexcode/x86/tables/x86.encode_forms.bin b/core/rexcode/x86/tables/x86.encode_forms.bin index f5d461a38f200d4946796911b1b56519cdbe1f1a..0dd6a2e4ec68fe08a43d551504fd38669a1965e6 100644 GIT binary patch literal 37680 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 Zl;6R?Fdd;DT>eZ)sE6|5>e)f{2LR%56mtLo diff --git a/core/rexcode/x86/tables/x86.evex.bin b/core/rexcode/x86/tables/x86.evex.bin index 564994f9856432a3edd87ca33e53470675ea439e..c072f66a3d3676394a1be9a971f3a18484c60903 100644 GIT binary patch literal 8360 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 literal 25400 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 UlKx-D5KI1l2}A7u|J!I{01C60d;kCd diff --git a/core/rexcode/x86/tables/x86.vex.bin b/core/rexcode/x86/tables/x86.vex.bin index 529b79967081d077627715e3f175a317254dc9d5..2834c6692be5abae3db970570c4e32cbf1f2da23 100644 GIT binary patch literal 13340 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