7835 lines
392 KiB
Diff
7835 lines
392 KiB
Diff
|
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
|||
|
From: Keith Seitz <keiths@redhat.com>
|
|||
|
Date: Wed, 15 May 2024 09:59:51 -0700
|
|||
|
Subject: gdb-rhel-36527-apx-disasm.patch
|
|||
|
|
|||
|
;; Update x86 disassembler
|
|||
|
|
|||
|
Update x86 disassembler with APX improvements by syncing
|
|||
|
with gdb-15.1 release candidate.
|
|||
|
|
|||
|
Resolves: RHEL-36527
|
|||
|
|
|||
|
diff --git a/include/opcode/i386.h b/include/opcode/i386.h
|
|||
|
--- a/include/opcode/i386.h
|
|||
|
+++ b/include/opcode/i386.h
|
|||
|
@@ -1,5 +1,5 @@
|
|||
|
/* opcode/i386.h -- Intel 80386 opcode macros
|
|||
|
- Copyright (C) 1989-2023 Free Software Foundation, Inc.
|
|||
|
+ Copyright (C) 1989-2024 Free Software Foundation, Inc.
|
|||
|
|
|||
|
This file is part of GAS, the GNU Assembler, and GDB, the GNU Debugger.
|
|||
|
|
|||
|
@@ -112,9 +112,13 @@
|
|||
|
/* x86-64 extension prefix. */
|
|||
|
#define REX_OPCODE 0x40
|
|||
|
|
|||
|
+#define REX2_OPCODE 0xd5
|
|||
|
+
|
|||
|
/* Non-zero if OPCODE is the rex prefix. */
|
|||
|
#define REX_PREFIX_P(opcode) (((opcode) & 0xf0) == REX_OPCODE)
|
|||
|
|
|||
|
+/* M0 in rex2 prefix represents map0 or map1. */
|
|||
|
+#define REX2_M 0x8
|
|||
|
/* Indicates 64 bit operand size. */
|
|||
|
#define REX_W 8
|
|||
|
/* High extension to reg field of modrm byte. */
|
|||
|
diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h
|
|||
|
--- a/opcodes/i386-dis-evex-mod.h
|
|||
|
+++ b/opcodes/i386-dis-evex-mod.h
|
|||
|
@@ -1 +1,10 @@
|
|||
|
-/* Nothing at present. */
|
|||
|
+ /* MOD_EVEX_MAP4_F8_P1 */
|
|||
|
+ {
|
|||
|
+ { "enqcmds", { Gva, M }, 0 },
|
|||
|
+ { VEX_W_TABLE (EVEX_W_MAP4_F8_P1_M_1) },
|
|||
|
+ },
|
|||
|
+ /* MOD_EVEX_MAP4_F8_P3 */
|
|||
|
+ {
|
|||
|
+ { "enqcmd", { Gva, M }, 0 },
|
|||
|
+ { VEX_W_TABLE (EVEX_W_MAP4_F8_P3_M_1) },
|
|||
|
+ },
|
|||
|
diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h
|
|||
|
--- a/opcodes/i386-dis-evex-prefix.h
|
|||
|
+++ b/opcodes/i386-dis-evex-prefix.h
|
|||
|
@@ -338,6 +338,29 @@
|
|||
|
{ "vcmpp%XH", { MaskG, Vex, EXxh, EXxEVexS, CMP }, 0 },
|
|||
|
{ "vcmps%XH", { MaskG, VexScalar, EXw, EXxEVexS, CMP }, 0 },
|
|||
|
},
|
|||
|
+ /* PREFIX_EVEX_MAP4_F0 */
|
|||
|
+ {
|
|||
|
+ { "crc32A", { Gdq, Eb }, 0 },
|
|||
|
+ { "invept", { Gm, Mo }, 0 },
|
|||
|
+ },
|
|||
|
+ /* PREFIX_EVEX_MAP4_F1 */
|
|||
|
+ {
|
|||
|
+ { "crc32Q", { Gdq, Ev }, 0 },
|
|||
|
+ { "invvpid", { Gm, Mo }, 0 },
|
|||
|
+ { "crc32Q", { Gdq, Ev }, 0 },
|
|||
|
+ },
|
|||
|
+ /* PREFIX_EVEX_MAP4_F2 */
|
|||
|
+ {
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "invpcid", { Gm, M }, 0 },
|
|||
|
+ },
|
|||
|
+ /* PREFIX_EVEX_MAP4_F8 */
|
|||
|
+ {
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { MOD_TABLE (MOD_EVEX_MAP4_F8_P_1) },
|
|||
|
+ { "movdir64b", { Gva, M }, 0 },
|
|||
|
+ { MOD_TABLE (MOD_EVEX_MAP4_F8_P_3) },
|
|||
|
+ },
|
|||
|
/* PREFIX_EVEX_MAP5_10 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
diff --git a/opcodes/i386-dis-evex-reg.h b/opcodes/i386-dis-evex-reg.h
|
|||
|
--- a/opcodes/i386-dis-evex-reg.h
|
|||
|
+++ b/opcodes/i386-dis-evex-reg.h
|
|||
|
@@ -49,3 +49,74 @@
|
|||
|
{ "vscatterpf0qp%XW", { MVexVSIBQWpX }, PREFIX_DATA },
|
|||
|
{ "vscatterpf1qp%XW", { MVexVSIBQWpX }, PREFIX_DATA },
|
|||
|
},
|
|||
|
+ /* REG_EVEX_MAP4_80 */
|
|||
|
+ {
|
|||
|
+ { "%NFaddA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NForA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "adcA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "sbbA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFandA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFsubA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFxorA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ },
|
|||
|
+ /* REG_EVEX_MAP4_81 */
|
|||
|
+ {
|
|||
|
+ { "%NFaddQ", { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NForQ", { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "adcQ", { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "sbbQ", { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFandQ", { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFsubQ", { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFxorQ", { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ },
|
|||
|
+ /* REG_EVEX_MAP4_83 */
|
|||
|
+ {
|
|||
|
+ { "%NFaddQ", { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NForQ", { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "adcQ", { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "sbbQ", { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFandQ", { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFsubQ", { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFxorQ", { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ },
|
|||
|
+ /* REG_EVEX_MAP4_8F */
|
|||
|
+ {
|
|||
|
+ { VEX_W_TABLE (EVEX_W_MAP4_8F_R_0) },
|
|||
|
+ },
|
|||
|
+ /* REG_EVEX_MAP4_F6 */
|
|||
|
+ {
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "notA", { VexGb, Eb }, NO_PREFIX },
|
|||
|
+ { "%NFnegA", { VexGb, Eb }, NO_PREFIX },
|
|||
|
+ { "%NFmulA", { Eb }, NO_PREFIX },
|
|||
|
+ { "%NFimulA", { Eb }, NO_PREFIX },
|
|||
|
+ { "%NFdivA", { Eb }, NO_PREFIX },
|
|||
|
+ { "%NFidivA", { Eb }, NO_PREFIX },
|
|||
|
+ },
|
|||
|
+ /* REG_EVEX_MAP4_F7 */
|
|||
|
+ {
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "notQ", { VexGv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFnegQ", { VexGv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFmulQ", { Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFimulQ", { Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFdivQ", { Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFidivQ", { Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ },
|
|||
|
+ /* REG_EVEX_MAP4_FE */
|
|||
|
+ {
|
|||
|
+ { "%NFincA", { VexGb, Eb }, NO_PREFIX },
|
|||
|
+ { "%NFdecA", { VexGb, Eb }, NO_PREFIX },
|
|||
|
+ },
|
|||
|
+ /* REG_EVEX_MAP4_FF */
|
|||
|
+ {
|
|||
|
+ { "%NFincQ", { VexGv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFdecQ", { VexGv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { VEX_W_TABLE (EVEX_W_MAP4_FF_R_6) },
|
|||
|
+ },
|
|||
|
diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h
|
|||
|
--- a/opcodes/i386-dis-evex-w.h
|
|||
|
+++ b/opcodes/i386-dis-evex-w.h
|
|||
|
@@ -442,6 +442,24 @@
|
|||
|
{ Bad_Opcode },
|
|||
|
{ "vpshrdw", { XM, Vex, EXx, Ib }, 0 },
|
|||
|
},
|
|||
|
+ /* EVEX_W_MAP4_8F_R_0 */
|
|||
|
+ {
|
|||
|
+ { "pop2", { { PUSH2_POP2_Fixup, q_mode}, Eq }, NO_PREFIX },
|
|||
|
+ { "pop2p", { { PUSH2_POP2_Fixup, q_mode}, Eq }, NO_PREFIX },
|
|||
|
+ },
|
|||
|
+ /* EVEX_W_MAP4_F8_P1_M_1 */
|
|||
|
+ {
|
|||
|
+ { "uwrmsr", { Gq, Eq }, 0 },
|
|||
|
+ },
|
|||
|
+ /* EVEX_W_MAP4_F8_P3_M_1 */
|
|||
|
+ {
|
|||
|
+ { "urdmsr", { Eq, Gq }, 0 },
|
|||
|
+ },
|
|||
|
+ /* EVEX_W_MAP4_FF_R_6 */
|
|||
|
+ {
|
|||
|
+ { "push2", { { PUSH2_POP2_Fixup, q_mode}, Eq }, 0 },
|
|||
|
+ { "push2p", { { PUSH2_POP2_Fixup, q_mode}, Eq }, 0 },
|
|||
|
+ },
|
|||
|
/* EVEX_W_MAP5_5B_P_0 */
|
|||
|
{
|
|||
|
{ "vcvtdq2ph%XY", { XMxmmq, EXx, EXxEVexR }, 0 },
|
|||
|
diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h
|
|||
|
--- a/opcodes/i386-dis-evex.h
|
|||
|
+++ b/opcodes/i386-dis-evex.h
|
|||
|
@@ -164,10 +164,10 @@ static const struct dis386 evex_table[][256] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
/* 90 */
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_W_TABLE (VEX_W_0F90_L_0) },
|
|||
|
+ { X86_64_EVEX_W_TABLE (VEX_W_0F91_L_0) },
|
|||
|
+ { X86_64_EVEX_W_TABLE (VEX_W_0F92_L_0) },
|
|||
|
+ { X86_64_EVEX_W_TABLE (VEX_W_0F93_L_0) },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
@@ -375,9 +375,9 @@ static const struct dis386 evex_table[][256] = {
|
|||
|
{ "vpsllv%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
|||
|
/* 48 */
|
|||
|
{ Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_MEM_W_TABLE (VEX_W_0F3849_X86_64_L_0) },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_MEM_W_TABLE (VEX_W_0F384B_X86_64_L_0) },
|
|||
|
{ "vrcp14p%XW", { XM, EXx }, PREFIX_DATA },
|
|||
|
{ "vrcp14s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
|||
|
{ "vrsqrt14p%XW", { XM, EXx }, 0 },
|
|||
|
@@ -545,32 +545,32 @@ static const struct dis386 evex_table[][256] = {
|
|||
|
{ "%XEvaesdecY", { XM, Vex, EXx }, PREFIX_DATA },
|
|||
|
{ "%XEvaesdeclastY", { XM, Vex, EXx }, PREFIX_DATA },
|
|||
|
/* E0 */
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E0) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E1) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E2) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E3) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E4) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E5) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E6) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E7) },
|
|||
|
/* E8 */
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E8) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38E9) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38EA) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38EB) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38EC) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38ED) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38EE) },
|
|||
|
+ { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F38EF) },
|
|||
|
/* F0 */
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F2_L_0) },
|
|||
|
+ { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F3_L_0) },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
- { Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F5_L_0) },
|
|||
|
+ { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F6_L_0) },
|
|||
|
+ { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F7_L_0) },
|
|||
|
/* F8 */
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
@@ -854,7 +854,7 @@ static const struct dis386 evex_table[][256] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
/* F0 */
|
|||
|
- { Bad_Opcode },
|
|||
|
+ { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F3AF0_L_0) },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
@@ -872,6 +872,297 @@ static const struct dis386 evex_table[][256] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
},
|
|||
|
+ /* EVEX_MAP4_ */
|
|||
|
+ {
|
|||
|
+ /* 00 */
|
|||
|
+ { "%NFaddB", { VexGb, Eb, Gb }, NO_PREFIX },
|
|||
|
+ { "%NFaddS", { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFaddB", { VexGb, Gb, EbS }, NO_PREFIX },
|
|||
|
+ { "%NFaddS", { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 08 */
|
|||
|
+ { "%NForB", { VexGb, Eb, Gb }, NO_PREFIX },
|
|||
|
+ { "%NForS", { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NForB", { VexGb, Gb, EbS }, NO_PREFIX },
|
|||
|
+ { "%NForS", { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 10 */
|
|||
|
+ { "adcB", { VexGb, Eb, Gb }, NO_PREFIX },
|
|||
|
+ { "adcS", { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "adcB", { VexGb, Gb, EbS }, NO_PREFIX },
|
|||
|
+ { "adcS", { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 18 */
|
|||
|
+ { "sbbB", { VexGb, Eb, Gb }, NO_PREFIX },
|
|||
|
+ { "sbbS", { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "sbbB", { VexGb, Gb, EbS }, NO_PREFIX },
|
|||
|
+ { "sbbS", { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 20 */
|
|||
|
+ { "%NFandB", { VexGb, Eb, Gb }, NO_PREFIX },
|
|||
|
+ { "%NFandS", { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFandB", { VexGb, Gb, EbS }, NO_PREFIX },
|
|||
|
+ { "%NFandS", { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshldS", { VexGv, Ev, Gv, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 28 */
|
|||
|
+ { "%NFsubB", { VexGb, Eb, Gb }, NO_PREFIX },
|
|||
|
+ { "%NFsubS", { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFsubB", { VexGb, Gb, EbS }, NO_PREFIX },
|
|||
|
+ { "%NFsubS", { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshrdS", { VexGv, Ev, Gv, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 30 */
|
|||
|
+ { "%NFxorB", { VexGb, Eb, Gb }, NO_PREFIX },
|
|||
|
+ { "%NFxorS", { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFxorB", { VexGb, Gb, EbS }, NO_PREFIX },
|
|||
|
+ { "%NFxorS", { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 38 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 40 */
|
|||
|
+ { "%CFcmovoS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovnoS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovbS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovaeS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmoveS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovneS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovbeS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovaS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ /* 48 */
|
|||
|
+ { "%CFcmovsS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovnsS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovpS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovnpS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovlS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovgeS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovleS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%CFcmovgS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ /* 50 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 58 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 60 */
|
|||
|
+ { "%MEmovbeS", { Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%MEmovbeS", { Ev, Gv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "wrussK", { M, Gdq }, PREFIX_DATA },
|
|||
|
+ { PREFIX_TABLE (PREFIX_0F38F6) },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 68 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "%NFimulS", { Gv, Ev, Iv }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "%NFimulS", { Gv, Ev, sIb }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 70 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 78 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 80 */
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_80) },
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_81) },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_83) },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 88 */
|
|||
|
+ { "%NFpopcntS", { Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_8F) },
|
|||
|
+ /* 90 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* 98 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* A0 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "%NFshldS", { VexGv, Ev, Gv, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* A8 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "%NFshrdS", { VexGv, Ev, Gv, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "%NFimulS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ /* B0 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* B8 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* C0 */
|
|||
|
+ { REG_TABLE (REG_C0) },
|
|||
|
+ { REG_TABLE (REG_C1) },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* C8 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* D0 */
|
|||
|
+ { REG_TABLE (REG_D0) },
|
|||
|
+ { REG_TABLE (REG_D1) },
|
|||
|
+ { REG_TABLE (REG_D2) },
|
|||
|
+ { REG_TABLE (REG_D3) },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* D8 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* E0 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* E8 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ /* F0 */
|
|||
|
+ { PREFIX_TABLE (PREFIX_EVEX_MAP4_F0) },
|
|||
|
+ { PREFIX_TABLE (PREFIX_EVEX_MAP4_F1) },
|
|||
|
+ { PREFIX_TABLE (PREFIX_EVEX_MAP4_F2) },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "%NFtzcntS", { Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFlzcntS", { Gv, Ev }, PREFIX_NP_OR_DATA },
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_F6) },
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_F7) },
|
|||
|
+ /* F8 */
|
|||
|
+ { PREFIX_TABLE (PREFIX_EVEX_MAP4_F8) },
|
|||
|
+ { "movdiri", { Mdq, Gdq }, NO_PREFIX },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { PREFIX_TABLE (PREFIX_0F38FC) },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_FE) },
|
|||
|
+ { REG_TABLE (REG_EVEX_MAP4_FF) },
|
|||
|
+ },
|
|||
|
/* EVEX_MAP5_ */
|
|||
|
{
|
|||
|
/* 00 */
|
|||
|
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
|
|||
|
--- a/opcodes/i386-dis.c
|
|||
|
+++ b/opcodes/i386-dis.c
|
|||
|
@@ -1,5 +1,5 @@
|
|||
|
/* Print i386 instructions for GDB, the GNU debugger.
|
|||
|
- Copyright (C) 1988-2023 Free Software Foundation, Inc.
|
|||
|
+ Copyright (C) 1988-2024 Free Software Foundation, Inc.
|
|||
|
|
|||
|
This file is part of the GNU opcodes library.
|
|||
|
|
|||
|
@@ -105,6 +105,8 @@ static bool FXSAVE_Fixup (instr_info *, int, int);
|
|||
|
static bool MOVSXD_Fixup (instr_info *, int, int);
|
|||
|
static bool DistinctDest_Fixup (instr_info *, int, int);
|
|||
|
static bool PREFETCHI_Fixup (instr_info *, int, int);
|
|||
|
+static bool PUSH2_POP2_Fixup (instr_info *, int, int);
|
|||
|
+static bool JMPABS_Fixup (instr_info *, int, int);
|
|||
|
|
|||
|
static void ATTRIBUTE_PRINTF_3 i386_dis_printf (const disassemble_info *,
|
|||
|
enum disassembler_style,
|
|||
|
@@ -132,6 +134,13 @@ enum x86_64_isa
|
|||
|
intel64
|
|||
|
};
|
|||
|
|
|||
|
+enum evex_type
|
|||
|
+{
|
|||
|
+ evex_default = 0,
|
|||
|
+ evex_from_legacy,
|
|||
|
+ evex_from_vex,
|
|||
|
+};
|
|||
|
+
|
|||
|
struct instr_info
|
|||
|
{
|
|||
|
enum address_mode address_mode;
|
|||
|
@@ -144,6 +153,12 @@ struct instr_info
|
|||
|
/* Bits of REX we've already used. */
|
|||
|
uint8_t rex_used;
|
|||
|
|
|||
|
+ /* Record W R4 X4 B4 bits for rex2. */
|
|||
|
+ unsigned char rex2;
|
|||
|
+ /* Bits of rex2 we've already used. */
|
|||
|
+ unsigned char rex2_used;
|
|||
|
+ unsigned char rex2_payload;
|
|||
|
+
|
|||
|
bool need_modrm;
|
|||
|
unsigned char need_vex;
|
|||
|
bool has_sib;
|
|||
|
@@ -169,6 +184,7 @@ struct instr_info
|
|||
|
signed char last_data_prefix;
|
|||
|
signed char last_addr_prefix;
|
|||
|
signed char last_rex_prefix;
|
|||
|
+ signed char last_rex2_prefix;
|
|||
|
signed char last_seg_prefix;
|
|||
|
signed char fwait_prefix;
|
|||
|
/* The active segment register prefix. */
|
|||
|
@@ -205,14 +221,19 @@ struct instr_info
|
|||
|
int ll;
|
|||
|
bool w;
|
|||
|
bool evex;
|
|||
|
- bool r;
|
|||
|
bool v;
|
|||
|
bool zeroing;
|
|||
|
bool b;
|
|||
|
bool no_broadcast;
|
|||
|
+ bool nf;
|
|||
|
}
|
|||
|
vex;
|
|||
|
|
|||
|
+/* For APX EVEX-promoted prefix, EVEX.ND shares the same bit as vex.b. */
|
|||
|
+#define nd b
|
|||
|
+
|
|||
|
+ enum evex_type evex_type;
|
|||
|
+
|
|||
|
/* Remember if the current op is a jump instruction. */
|
|||
|
bool op_is_jump;
|
|||
|
|
|||
|
@@ -221,6 +242,9 @@ struct instr_info
|
|||
|
/* Record whether EVEX masking is used incorrectly. */
|
|||
|
bool illegal_masking;
|
|||
|
|
|||
|
+ /* Record whether the modrm byte has been skipped. */
|
|||
|
+ bool has_skipped_modrm;
|
|||
|
+
|
|||
|
unsigned char op_ad;
|
|||
|
signed char op_index[MAX_OPERANDS];
|
|||
|
bool op_riprel[MAX_OPERANDS];
|
|||
|
@@ -262,8 +286,13 @@ struct dis_private {
|
|||
|
{ \
|
|||
|
if (value) \
|
|||
|
{ \
|
|||
|
- if ((ins->rex & value)) \
|
|||
|
+ if (ins->rex & value) \
|
|||
|
ins->rex_used |= (value) | REX_OPCODE; \
|
|||
|
+ if (ins->rex2 & value) \
|
|||
|
+ { \
|
|||
|
+ ins->rex2_used |= (value); \
|
|||
|
+ ins->rex_used |= REX_OPCODE; \
|
|||
|
+ } \
|
|||
|
} \
|
|||
|
else \
|
|||
|
ins->rex_used |= REX_OPCODE; \
|
|||
|
@@ -273,6 +302,10 @@ struct dis_private {
|
|||
|
#define EVEX_b_used 1
|
|||
|
#define EVEX_len_used 2
|
|||
|
|
|||
|
+
|
|||
|
+/* {rex2} is not printed when the REX2_SPECIAL is set. */
|
|||
|
+#define REX2_SPECIAL 16
|
|||
|
+
|
|||
|
/* Flags stored in PREFIXES. */
|
|||
|
#define PREFIX_REPZ 1
|
|||
|
#define PREFIX_REPNZ 2
|
|||
|
@@ -286,6 +319,9 @@ struct dis_private {
|
|||
|
#define PREFIX_DATA 0x200
|
|||
|
#define PREFIX_ADDR 0x400
|
|||
|
#define PREFIX_FWAIT 0x800
|
|||
|
+#define PREFIX_REX2 0x1000
|
|||
|
+#define PREFIX_NP_OR_DATA 0x2000
|
|||
|
+#define NO_PREFIX 0x4000
|
|||
|
|
|||
|
/* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive)
|
|||
|
to ADDR (exclusive) are valid. Returns true for success, false
|
|||
|
@@ -367,6 +403,7 @@ fetch_error (const instr_info *ins)
|
|||
|
#define PREFIX_IGNORED_DATA (PREFIX_DATA << PREFIX_IGNORED_SHIFT)
|
|||
|
#define PREFIX_IGNORED_ADDR (PREFIX_ADDR << PREFIX_IGNORED_SHIFT)
|
|||
|
#define PREFIX_IGNORED_LOCK (PREFIX_LOCK << PREFIX_IGNORED_SHIFT)
|
|||
|
+#define PREFIX_REX2_ILLEGAL (PREFIX_REX2 << PREFIX_IGNORED_SHIFT)
|
|||
|
|
|||
|
/* Opcode prefixes. */
|
|||
|
#define PREFIX_OPCODE (PREFIX_REPZ \
|
|||
|
@@ -418,6 +455,7 @@ fetch_error (const instr_info *ins)
|
|||
|
#define Gv { OP_G, v_mode }
|
|||
|
#define Gd { OP_G, d_mode }
|
|||
|
#define Gdq { OP_G, dq_mode }
|
|||
|
+#define Gq { OP_G, q_mode }
|
|||
|
#define Gm { OP_G, m_mode }
|
|||
|
#define Gva { OP_G, va_mode }
|
|||
|
#define Gw { OP_G, w_mode }
|
|||
|
@@ -527,7 +565,8 @@ fetch_error (const instr_info *ins)
|
|||
|
#define EXEvexXNoBcst { OP_EX, evex_x_nobcst_mode }
|
|||
|
#define Rd { OP_R, d_mode }
|
|||
|
#define Rdq { OP_R, dq_mode }
|
|||
|
-#define Nq { OP_R, q_mode }
|
|||
|
+#define Rq { OP_R, q_mode }
|
|||
|
+#define Nq { OP_R, q_mm_mode }
|
|||
|
#define Ux { OP_R, x_mode }
|
|||
|
#define Uxmm { OP_R, xmm_mode }
|
|||
|
#define Rxmmq { OP_R, xmmq_mode }
|
|||
|
@@ -548,6 +587,8 @@ fetch_error (const instr_info *ins)
|
|||
|
#define VexGatherD { OP_VEX, vex_vsib_d_w_dq_mode }
|
|||
|
#define VexGatherQ { OP_VEX, vex_vsib_q_w_dq_mode }
|
|||
|
#define VexGdq { OP_VEX, dq_mode }
|
|||
|
+#define VexGb { OP_VEX, b_mode }
|
|||
|
+#define VexGv { OP_VEX, v_mode }
|
|||
|
#define VexTmm { OP_VEX, tmm_mode }
|
|||
|
#define XMVexI4 { OP_REG_VexI4, x_mode }
|
|||
|
#define XMVexScalarI4 { OP_REG_VexI4, scalar_mode }
|
|||
|
@@ -624,6 +665,8 @@ enum
|
|||
|
d_swap_mode,
|
|||
|
/* quad word operand */
|
|||
|
q_mode,
|
|||
|
+ /* 8-byte MM operand */
|
|||
|
+ q_mm_mode,
|
|||
|
/* quad word operand with operand swapped */
|
|||
|
q_swap_mode,
|
|||
|
/* ten-byte operand */
|
|||
|
@@ -778,6 +821,10 @@ enum
|
|||
|
USE_RM_TABLE,
|
|||
|
USE_PREFIX_TABLE,
|
|||
|
USE_X86_64_TABLE,
|
|||
|
+ USE_X86_64_EVEX_FROM_VEX_TABLE,
|
|||
|
+ USE_X86_64_EVEX_PFX_TABLE,
|
|||
|
+ USE_X86_64_EVEX_W_TABLE,
|
|||
|
+ USE_X86_64_EVEX_MEM_W_TABLE,
|
|||
|
USE_3BYTE_TABLE,
|
|||
|
USE_XOP_8F_TABLE,
|
|||
|
USE_VEX_C4_TABLE,
|
|||
|
@@ -796,6 +843,11 @@ enum
|
|||
|
#define RM_TABLE(I) DIS386 (USE_RM_TABLE, (I))
|
|||
|
#define PREFIX_TABLE(I) DIS386 (USE_PREFIX_TABLE, (I))
|
|||
|
#define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I))
|
|||
|
+#define X86_64_EVEX_FROM_VEX_TABLE(I) \
|
|||
|
+ DIS386 (USE_X86_64_EVEX_FROM_VEX_TABLE, (I))
|
|||
|
+#define X86_64_EVEX_PFX_TABLE(I) DIS386 (USE_X86_64_EVEX_PFX_TABLE, (I))
|
|||
|
+#define X86_64_EVEX_W_TABLE(I) DIS386 (USE_X86_64_EVEX_W_TABLE, (I))
|
|||
|
+#define X86_64_EVEX_MEM_W_TABLE(I) DIS386 (USE_X86_64_EVEX_MEM_W_TABLE, (I))
|
|||
|
#define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I))
|
|||
|
#define XOP_8F_TABLE() DIS386 (USE_XOP_8F_TABLE, 0)
|
|||
|
#define VEX_C4_TABLE() DIS386 (USE_VEX_C4_TABLE, 0)
|
|||
|
@@ -844,7 +896,8 @@ enum
|
|||
|
REG_VEX_0F73,
|
|||
|
REG_VEX_0FAE,
|
|||
|
REG_VEX_0F3849_X86_64_L_0_W_0_M_1_P_0,
|
|||
|
- REG_VEX_0F38F3_L_0,
|
|||
|
+ REG_VEX_0F38F3_L_0_P_0,
|
|||
|
+ REG_VEX_MAP7_F8_L_0_W_0,
|
|||
|
|
|||
|
REG_XOP_09_01_L_0,
|
|||
|
REG_XOP_09_02_L_0,
|
|||
|
@@ -855,7 +908,15 @@ enum
|
|||
|
REG_EVEX_0F72,
|
|||
|
REG_EVEX_0F73,
|
|||
|
REG_EVEX_0F38C6_L_2,
|
|||
|
- REG_EVEX_0F38C7_L_2
|
|||
|
+ REG_EVEX_0F38C7_L_2,
|
|||
|
+ REG_EVEX_MAP4_80,
|
|||
|
+ REG_EVEX_MAP4_81,
|
|||
|
+ REG_EVEX_MAP4_83,
|
|||
|
+ REG_EVEX_MAP4_8F,
|
|||
|
+ REG_EVEX_MAP4_F6,
|
|||
|
+ REG_EVEX_MAP4_F7,
|
|||
|
+ REG_EVEX_MAP4_FE,
|
|||
|
+ REG_EVEX_MAP4_FF,
|
|||
|
};
|
|||
|
|
|||
|
enum
|
|||
|
@@ -893,8 +954,12 @@ enum
|
|||
|
MOD_0FC7_REG_6,
|
|||
|
MOD_0FC7_REG_7,
|
|||
|
MOD_0F38DC_PREFIX_1,
|
|||
|
+ MOD_0F38F8,
|
|||
|
|
|||
|
MOD_VEX_0F3849_X86_64_L_0_W_0,
|
|||
|
+
|
|||
|
+ MOD_EVEX_MAP4_F8_P_1,
|
|||
|
+ MOD_EVEX_MAP4_F8_P_3,
|
|||
|
};
|
|||
|
|
|||
|
enum
|
|||
|
@@ -1010,7 +1075,8 @@ enum
|
|||
|
PREFIX_0F38F0,
|
|||
|
PREFIX_0F38F1,
|
|||
|
PREFIX_0F38F6,
|
|||
|
- PREFIX_0F38F8,
|
|||
|
+ PREFIX_0F38F8_M_0,
|
|||
|
+ PREFIX_0F38F8_M_1_X86_64,
|
|||
|
PREFIX_0F38FA,
|
|||
|
PREFIX_0F38FB,
|
|||
|
PREFIX_0F38FC,
|
|||
|
@@ -1069,10 +1135,13 @@ enum
|
|||
|
PREFIX_VEX_0F38CC,
|
|||
|
PREFIX_VEX_0F38CD,
|
|||
|
PREFIX_VEX_0F38DA_W_0,
|
|||
|
+ PREFIX_VEX_0F38F2_L_0,
|
|||
|
+ PREFIX_VEX_0F38F3_L_0,
|
|||
|
PREFIX_VEX_0F38F5_L_0,
|
|||
|
PREFIX_VEX_0F38F6_L_0,
|
|||
|
PREFIX_VEX_0F38F7_L_0,
|
|||
|
PREFIX_VEX_0F3AF0_L_0,
|
|||
|
+ PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64,
|
|||
|
|
|||
|
PREFIX_EVEX_0F5B,
|
|||
|
PREFIX_EVEX_0F6F,
|
|||
|
@@ -1130,6 +1199,11 @@ enum
|
|||
|
PREFIX_EVEX_0F3A67,
|
|||
|
PREFIX_EVEX_0F3AC2,
|
|||
|
|
|||
|
+ PREFIX_EVEX_MAP4_F0,
|
|||
|
+ PREFIX_EVEX_MAP4_F1,
|
|||
|
+ PREFIX_EVEX_MAP4_F2,
|
|||
|
+ PREFIX_EVEX_MAP4_F8,
|
|||
|
+
|
|||
|
PREFIX_EVEX_MAP5_10,
|
|||
|
PREFIX_EVEX_MAP5_11,
|
|||
|
PREFIX_EVEX_MAP5_1D,
|
|||
|
@@ -1217,6 +1291,7 @@ enum
|
|||
|
X86_64_0F18_REG_7_MOD_0,
|
|||
|
X86_64_0F24,
|
|||
|
X86_64_0F26,
|
|||
|
+ X86_64_0F38F8_M_1,
|
|||
|
X86_64_0FC7_REG_6_MOD_3_PREFIX_1,
|
|||
|
|
|||
|
X86_64_VEX_0F3849,
|
|||
|
@@ -1240,6 +1315,8 @@ enum
|
|||
|
X86_64_VEX_0F38ED,
|
|||
|
X86_64_VEX_0F38EE,
|
|||
|
X86_64_VEX_0F38EF,
|
|||
|
+
|
|||
|
+ X86_64_VEX_MAP7_F8_L_0_W_0_R_0,
|
|||
|
};
|
|||
|
|
|||
|
enum
|
|||
|
@@ -1259,7 +1336,8 @@ enum
|
|||
|
{
|
|||
|
VEX_0F = 0,
|
|||
|
VEX_0F38,
|
|||
|
- VEX_0F3A
|
|||
|
+ VEX_0F3A,
|
|||
|
+ VEX_MAP7,
|
|||
|
};
|
|||
|
|
|||
|
enum
|
|||
|
@@ -1267,8 +1345,10 @@ enum
|
|||
|
EVEX_0F = 0,
|
|||
|
EVEX_0F38,
|
|||
|
EVEX_0F3A,
|
|||
|
+ EVEX_MAP4,
|
|||
|
EVEX_MAP5,
|
|||
|
EVEX_MAP6,
|
|||
|
+ EVEX_MAP7,
|
|||
|
};
|
|||
|
|
|||
|
enum
|
|||
|
@@ -1350,6 +1430,7 @@ enum
|
|||
|
VEX_LEN_0F3ADE_W_0,
|
|||
|
VEX_LEN_0F3ADF,
|
|||
|
VEX_LEN_0F3AF0,
|
|||
|
+ VEX_LEN_MAP7_F8,
|
|||
|
VEX_LEN_XOP_08_85,
|
|||
|
VEX_LEN_XOP_08_86,
|
|||
|
VEX_LEN_XOP_08_87,
|
|||
|
@@ -1510,6 +1591,7 @@ enum
|
|||
|
VEX_W_0F3ACE,
|
|||
|
VEX_W_0F3ACF,
|
|||
|
VEX_W_0F3ADE,
|
|||
|
+ VEX_W_MAP7_F8_L_0,
|
|||
|
|
|||
|
VEX_W_XOP_08_85_L_0,
|
|||
|
VEX_W_XOP_08_86_L_0,
|
|||
|
@@ -1656,6 +1738,11 @@ enum
|
|||
|
EVEX_W_0F3A70,
|
|||
|
EVEX_W_0F3A72,
|
|||
|
|
|||
|
+ EVEX_W_MAP4_8F_R_0,
|
|||
|
+ EVEX_W_MAP4_F8_P1_M_1,
|
|||
|
+ EVEX_W_MAP4_F8_P3_M_1,
|
|||
|
+ EVEX_W_MAP4_FF_R_6,
|
|||
|
+
|
|||
|
EVEX_W_MAP5_5B_P_0,
|
|||
|
EVEX_W_MAP5_7A_P_3,
|
|||
|
};
|
|||
|
@@ -1673,7 +1760,7 @@ struct dis386 {
|
|||
|
};
|
|||
|
|
|||
|
/* Upper case letters in the instruction names here are macros.
|
|||
|
- 'A' => print 'b' if no register operands or suffix_always is true
|
|||
|
+ 'A' => print 'b' if no (suitable) register operand or suffix_always is true
|
|||
|
'B' => print 'b' if suffix_always is true
|
|||
|
'C' => print 's' or 'l' ('w' or 'd' in Intel mode) depending on operand
|
|||
|
size prefix
|
|||
|
@@ -1686,14 +1773,14 @@ struct dis386 {
|
|||
|
'I' unused.
|
|||
|
'J' unused.
|
|||
|
'K' => print 'd' or 'q' if rex prefix is present.
|
|||
|
- 'L' unused.
|
|||
|
+ 'L' => print 'l' or 'q' if suffix_always is true
|
|||
|
'M' => print 'r' if intel_mnemonic is false.
|
|||
|
'N' => print 'n' if instruction has no wait "prefix"
|
|||
|
'O' => print 'd' or 'o' (or 'q' in Intel mode)
|
|||
|
'P' => behave as 'T' except with register operand outside of suffix_always
|
|||
|
mode
|
|||
|
- 'Q' => print 'w', 'l' or 'q' for memory operand or suffix_always
|
|||
|
- is true
|
|||
|
+ 'Q' => print 'w', 'l' or 'q' if no (suitable) register operand or
|
|||
|
+ suffix_always is true
|
|||
|
'R' => print 'w', 'l' or 'q' ('d' for 'l' and 'e' in Intel mode)
|
|||
|
'S' => print 'w', 'l' or 'q' if suffix_always is true
|
|||
|
'T' => print 'w', 'l'/'d', or 'q' if instruction has an operand size
|
|||
|
@@ -1724,6 +1811,11 @@ struct dis386 {
|
|||
|
"XV" => print "{vex} " pseudo prefix
|
|||
|
"XE" => print "{evex} " pseudo prefix if no EVEX-specific functionality is
|
|||
|
is used by an EVEX-encoded (AVX512VL) instruction.
|
|||
|
+ "ME" => print "{evex} " pseudo prefix for ins->modrm.mod != 3,if no
|
|||
|
+ EVEX-specific functionality is used by an EVEX-encoded (AVX512VL)
|
|||
|
+ instruction.
|
|||
|
+ "NF" => print "{nf} " pseudo prefix when EVEX.NF = 1 and print "{evex} "
|
|||
|
+ pseudo prefix when instructions without NF, EGPR and VVVV,
|
|||
|
"YK" keep unused, to avoid ambiguity with the combined use of Y and K.
|
|||
|
"YX" keep unused, to avoid ambiguity with the combined use of Y and X.
|
|||
|
"LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand, cond
|
|||
|
@@ -1836,23 +1928,23 @@ static const struct dis386 dis386[] = {
|
|||
|
{ "dec{S|}", { RMeSI }, 0 },
|
|||
|
{ "dec{S|}", { RMeDI }, 0 },
|
|||
|
/* 50 */
|
|||
|
- { "push{!P|}", { RMrAX }, 0 },
|
|||
|
- { "push{!P|}", { RMrCX }, 0 },
|
|||
|
- { "push{!P|}", { RMrDX }, 0 },
|
|||
|
- { "push{!P|}", { RMrBX }, 0 },
|
|||
|
- { "push{!P|}", { RMrSP }, 0 },
|
|||
|
- { "push{!P|}", { RMrBP }, 0 },
|
|||
|
- { "push{!P|}", { RMrSI }, 0 },
|
|||
|
- { "push{!P|}", { RMrDI }, 0 },
|
|||
|
+ { "push!P", { RMrAX }, 0 },
|
|||
|
+ { "push!P", { RMrCX }, 0 },
|
|||
|
+ { "push!P", { RMrDX }, 0 },
|
|||
|
+ { "push!P", { RMrBX }, 0 },
|
|||
|
+ { "push!P", { RMrSP }, 0 },
|
|||
|
+ { "push!P", { RMrBP }, 0 },
|
|||
|
+ { "push!P", { RMrSI }, 0 },
|
|||
|
+ { "push!P", { RMrDI }, 0 },
|
|||
|
/* 58 */
|
|||
|
- { "pop{!P|}", { RMrAX }, 0 },
|
|||
|
- { "pop{!P|}", { RMrCX }, 0 },
|
|||
|
- { "pop{!P|}", { RMrDX }, 0 },
|
|||
|
- { "pop{!P|}", { RMrBX }, 0 },
|
|||
|
- { "pop{!P|}", { RMrSP }, 0 },
|
|||
|
- { "pop{!P|}", { RMrBP }, 0 },
|
|||
|
- { "pop{!P|}", { RMrSI }, 0 },
|
|||
|
- { "pop{!P|}", { RMrDI }, 0 },
|
|||
|
+ { "pop!P", { RMrAX }, 0 },
|
|||
|
+ { "pop!P", { RMrCX }, 0 },
|
|||
|
+ { "pop!P", { RMrDX }, 0 },
|
|||
|
+ { "pop!P", { RMrBX }, 0 },
|
|||
|
+ { "pop!P", { RMrSP }, 0 },
|
|||
|
+ { "pop!P", { RMrBP }, 0 },
|
|||
|
+ { "pop!P", { RMrSI }, 0 },
|
|||
|
+ { "pop!P", { RMrDI }, 0 },
|
|||
|
/* 60 */
|
|||
|
{ X86_64_TABLE (X86_64_60) },
|
|||
|
{ X86_64_TABLE (X86_64_61) },
|
|||
|
@@ -1872,23 +1964,23 @@ static const struct dis386 dis386[] = {
|
|||
|
{ "outs{b|}", { indirDXr, Xb }, 0 },
|
|||
|
{ X86_64_TABLE (X86_64_6F) },
|
|||
|
/* 70 */
|
|||
|
- { "joH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jnoH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jbH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jaeH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jeH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jneH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jbeH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jaH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
+ { "joH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jnoH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jbH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jaeH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jeH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jneH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jbeH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jaH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* 78 */
|
|||
|
- { "jsH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jnsH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jpH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jnpH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jlH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jgeH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jleH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jgH", { Jb, BND, cond_jump_flag }, 0 },
|
|||
|
+ { "jsH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jnsH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jpH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jnpH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jlH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jgeH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jleH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jgH", { Jb, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* 80 */
|
|||
|
{ REG_TABLE (REG_80) },
|
|||
|
{ REG_TABLE (REG_81) },
|
|||
|
@@ -1926,23 +2018,23 @@ static const struct dis386 dis386[] = {
|
|||
|
{ "sahf", { XX }, 0 },
|
|||
|
{ "lahf", { XX }, 0 },
|
|||
|
/* a0 */
|
|||
|
- { "mov%LB", { AL, Ob }, 0 },
|
|||
|
- { "mov%LS", { eAX, Ov }, 0 },
|
|||
|
- { "mov%LB", { Ob, AL }, 0 },
|
|||
|
- { "mov%LS", { Ov, eAX }, 0 },
|
|||
|
- { "movs{b|}", { Ybr, Xb }, 0 },
|
|||
|
- { "movs{R|}", { Yvr, Xv }, 0 },
|
|||
|
- { "cmps{b|}", { Xb, Yb }, 0 },
|
|||
|
- { "cmps{R|}", { Xv, Yv }, 0 },
|
|||
|
+ { "mov%LB", { AL, Ob }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "mov%LS", { { JMPABS_Fixup, eAX_reg }, { JMPABS_Fixup, v_mode } }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "mov%LB", { Ob, AL }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "mov%LS", { Ov, eAX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "movs{b|}", { Ybr, Xb }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "movs{R|}", { Yvr, Xv }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "cmps{b|}", { Xb, Yb }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "cmps{R|}", { Xv, Yv }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* a8 */
|
|||
|
- { "testB", { AL, Ib }, 0 },
|
|||
|
- { "testS", { eAX, Iv }, 0 },
|
|||
|
- { "stosB", { Ybr, AL }, 0 },
|
|||
|
- { "stosS", { Yvr, eAX }, 0 },
|
|||
|
- { "lodsB", { ALr, Xb }, 0 },
|
|||
|
- { "lodsS", { eAXr, Xv }, 0 },
|
|||
|
- { "scasB", { AL, Yb }, 0 },
|
|||
|
- { "scasS", { eAX, Yv }, 0 },
|
|||
|
+ { "testB", { AL, Ib }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "testS", { eAX, Iv }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "stosB", { Ybr, AL }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "stosS", { Yvr, eAX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "lodsB", { ALr, Xb }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "lodsS", { eAXr, Xv }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "scasB", { AL, Yb }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "scasS", { eAX, Yv }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* b0 */
|
|||
|
{ "movB", { RMAL, Ib }, 0 },
|
|||
|
{ "movB", { RMCL, Ib }, 0 },
|
|||
|
@@ -1998,23 +2090,23 @@ static const struct dis386 dis386[] = {
|
|||
|
{ FLOAT },
|
|||
|
{ FLOAT },
|
|||
|
/* e0 */
|
|||
|
- { "loopneFH", { Jb, XX, loop_jcxz_flag }, 0 },
|
|||
|
- { "loopeFH", { Jb, XX, loop_jcxz_flag }, 0 },
|
|||
|
- { "loopFH", { Jb, XX, loop_jcxz_flag }, 0 },
|
|||
|
- { "jEcxzH", { Jb, XX, loop_jcxz_flag }, 0 },
|
|||
|
- { "inB", { AL, Ib }, 0 },
|
|||
|
- { "inG", { zAX, Ib }, 0 },
|
|||
|
- { "outB", { Ib, AL }, 0 },
|
|||
|
- { "outG", { Ib, zAX }, 0 },
|
|||
|
+ { "loopneFH", { Jb, XX, loop_jcxz_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "loopeFH", { Jb, XX, loop_jcxz_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "loopFH", { Jb, XX, loop_jcxz_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jEcxzH", { Jb, XX, loop_jcxz_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "inB", { AL, Ib }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "inG", { zAX, Ib }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "outB", { Ib, AL }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "outG", { Ib, zAX }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* e8 */
|
|||
|
{ X86_64_TABLE (X86_64_E8) },
|
|||
|
{ X86_64_TABLE (X86_64_E9) },
|
|||
|
{ X86_64_TABLE (X86_64_EA) },
|
|||
|
- { "jmp", { Jb, BND }, 0 },
|
|||
|
- { "inB", { AL, indirDX }, 0 },
|
|||
|
- { "inG", { zAX, indirDX }, 0 },
|
|||
|
- { "outB", { indirDX, AL }, 0 },
|
|||
|
- { "outG", { indirDX, zAX }, 0 },
|
|||
|
+ { "jmp", { Jb, BND }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "inB", { AL, indirDX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "inG", { zAX, indirDX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "outB", { indirDX, AL }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "outG", { indirDX, zAX }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* f0 */
|
|||
|
{ Bad_Opcode }, /* lock prefix */
|
|||
|
{ "int1", { XX }, 0 },
|
|||
|
@@ -2091,12 +2183,12 @@ static const struct dis386 dis386_twobyte[] = {
|
|||
|
{ PREFIX_TABLE (PREFIX_0F2E) },
|
|||
|
{ PREFIX_TABLE (PREFIX_0F2F) },
|
|||
|
/* 30 */
|
|||
|
- { "wrmsr", { XX }, 0 },
|
|||
|
- { "rdtsc", { XX }, 0 },
|
|||
|
- { "rdmsr", { XX }, 0 },
|
|||
|
- { "rdpmc", { XX }, 0 },
|
|||
|
- { "sysenter", { SEP }, 0 },
|
|||
|
- { "sysexit%LQ", { SEP }, 0 },
|
|||
|
+ { "wrmsr", { XX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "rdtsc", { XX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "rdmsr", { XX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "rdpmc", { XX }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "sysenter", { SEP }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "sysexit%LQ", { SEP }, PREFIX_REX2_ILLEGAL },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ "getsec", { XX }, 0 },
|
|||
|
/* 38 */
|
|||
|
@@ -2181,23 +2273,23 @@ static const struct dis386 dis386_twobyte[] = {
|
|||
|
{ PREFIX_TABLE (PREFIX_0F7E) },
|
|||
|
{ PREFIX_TABLE (PREFIX_0F7F) },
|
|||
|
/* 80 */
|
|||
|
- { "joH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jnoH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jbH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jaeH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jeH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jneH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jbeH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jaH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
+ { "joH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jnoH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jbH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jaeH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jeH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jneH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jbeH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jaH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* 88 */
|
|||
|
- { "jsH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jnsH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jpH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jnpH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jlH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jgeH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jleH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
- { "jgH", { Jv, BND, cond_jump_flag }, 0 },
|
|||
|
+ { "jsH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jnsH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jpH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jnpH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jlH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jgeH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jleH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "jgH", { Jv, BND, cond_jump_flag }, PREFIX_REX2_ILLEGAL },
|
|||
|
/* 90 */
|
|||
|
{ "seto", { Eb }, 0 },
|
|||
|
{ "setno", { Eb }, 0 },
|
|||
|
@@ -2390,22 +2482,30 @@ static const char intel_index16[][6] = {
|
|||
|
|
|||
|
static const char att_names64[][8] = {
|
|||
|
"%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi",
|
|||
|
- "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
|
|||
|
+ "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15",
|
|||
|
+ "%r16", "%r17", "%r18", "%r19", "%r20", "%r21", "%r22", "%r23",
|
|||
|
+ "%r24", "%r25", "%r26", "%r27", "%r28", "%r29", "%r30", "%r31",
|
|||
|
};
|
|||
|
static const char att_names32[][8] = {
|
|||
|
"%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi",
|
|||
|
- "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d"
|
|||
|
+ "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d",
|
|||
|
+ "%r16d", "%r17d", "%r18d", "%r19d", "%r20d", "%r21d", "%r22d", "%r23d",
|
|||
|
+ "%r24d", "%r25d", "%r26d", "%r27d", "%r28d", "%r29d", "%r30d", "%r31d",
|
|||
|
};
|
|||
|
static const char att_names16[][8] = {
|
|||
|
"%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di",
|
|||
|
- "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w"
|
|||
|
+ "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w",
|
|||
|
+ "%r16w", "%r17w", "%r18w", "%r19w", "%r20w", "%r21w", "%r22w", "%r23w",
|
|||
|
+ "%r24w", "%r25w", "%r26w", "%r27w", "%r28w", "%r29w", "%r30w", "%r31w",
|
|||
|
};
|
|||
|
static const char att_names8[][8] = {
|
|||
|
"%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh",
|
|||
|
};
|
|||
|
static const char att_names8rex[][8] = {
|
|||
|
"%al", "%cl", "%dl", "%bl", "%spl", "%bpl", "%sil", "%dil",
|
|||
|
- "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b"
|
|||
|
+ "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b",
|
|||
|
+ "%r16b", "%r17b", "%r18b", "%r19b", "%r20b", "%r21b", "%r22b", "%r23b",
|
|||
|
+ "%r24b", "%r25b", "%r26b", "%r27b", "%r28b", "%r29b", "%r30b", "%r31b",
|
|||
|
};
|
|||
|
static const char att_names_seg[][4] = {
|
|||
|
"%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?",
|
|||
|
@@ -2520,25 +2620,25 @@ static const struct dis386 reg_table[][8] = {
|
|||
|
},
|
|||
|
/* REG_C0 */
|
|||
|
{
|
|||
|
- { "rolA", { Eb, Ib }, 0 },
|
|||
|
- { "rorA", { Eb, Ib }, 0 },
|
|||
|
- { "rclA", { Eb, Ib }, 0 },
|
|||
|
- { "rcrA", { Eb, Ib }, 0 },
|
|||
|
- { "shlA", { Eb, Ib }, 0 },
|
|||
|
- { "shrA", { Eb, Ib }, 0 },
|
|||
|
- { "shlA", { Eb, Ib }, 0 },
|
|||
|
- { "sarA", { Eb, Ib }, 0 },
|
|||
|
+ { "%NFrolA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFrorA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "rclA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "rcrA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFshlA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFshrA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFshlA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
+ { "%NFsarA", { VexGb, Eb, Ib }, NO_PREFIX },
|
|||
|
},
|
|||
|
/* REG_C1 */
|
|||
|
{
|
|||
|
- { "rolQ", { Ev, Ib }, 0 },
|
|||
|
- { "rorQ", { Ev, Ib }, 0 },
|
|||
|
- { "rclQ", { Ev, Ib }, 0 },
|
|||
|
- { "rcrQ", { Ev, Ib }, 0 },
|
|||
|
- { "shlQ", { Ev, Ib }, 0 },
|
|||
|
- { "shrQ", { Ev, Ib }, 0 },
|
|||
|
- { "shlQ", { Ev, Ib }, 0 },
|
|||
|
- { "sarQ", { Ev, Ib }, 0 },
|
|||
|
+ { "%NFrolQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFrorQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "rclQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "rcrQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshlQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshrQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshlQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFsarQ", { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
|
|||
|
},
|
|||
|
/* REG_C6 */
|
|||
|
{
|
|||
|
@@ -2564,47 +2664,47 @@ static const struct dis386 reg_table[][8] = {
|
|||
|
},
|
|||
|
/* REG_D0 */
|
|||
|
{
|
|||
|
- { "rolA", { Eb, I1 }, 0 },
|
|||
|
- { "rorA", { Eb, I1 }, 0 },
|
|||
|
- { "rclA", { Eb, I1 }, 0 },
|
|||
|
- { "rcrA", { Eb, I1 }, 0 },
|
|||
|
- { "shlA", { Eb, I1 }, 0 },
|
|||
|
- { "shrA", { Eb, I1 }, 0 },
|
|||
|
- { "shlA", { Eb, I1 }, 0 },
|
|||
|
- { "sarA", { Eb, I1 }, 0 },
|
|||
|
+ { "%NFrolA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
+ { "%NFrorA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
+ { "rclA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
+ { "rcrA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
+ { "%NFshlA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
+ { "%NFshrA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
+ { "%NFshlA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
+ { "%NFsarA", { VexGb, Eb, I1 }, NO_PREFIX },
|
|||
|
},
|
|||
|
/* REG_D1 */
|
|||
|
{
|
|||
|
- { "rolQ", { Ev, I1 }, 0 },
|
|||
|
- { "rorQ", { Ev, I1 }, 0 },
|
|||
|
- { "rclQ", { Ev, I1 }, 0 },
|
|||
|
- { "rcrQ", { Ev, I1 }, 0 },
|
|||
|
- { "shlQ", { Ev, I1 }, 0 },
|
|||
|
- { "shrQ", { Ev, I1 }, 0 },
|
|||
|
- { "shlQ", { Ev, I1 }, 0 },
|
|||
|
- { "sarQ", { Ev, I1 }, 0 },
|
|||
|
+ { "%NFrolQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFrorQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "rclQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "rcrQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshlQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshrQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshlQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFsarQ", { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
|
|||
|
},
|
|||
|
/* REG_D2 */
|
|||
|
{
|
|||
|
- { "rolA", { Eb, CL }, 0 },
|
|||
|
- { "rorA", { Eb, CL }, 0 },
|
|||
|
- { "rclA", { Eb, CL }, 0 },
|
|||
|
- { "rcrA", { Eb, CL }, 0 },
|
|||
|
- { "shlA", { Eb, CL }, 0 },
|
|||
|
- { "shrA", { Eb, CL }, 0 },
|
|||
|
- { "shlA", { Eb, CL }, 0 },
|
|||
|
- { "sarA", { Eb, CL }, 0 },
|
|||
|
+ { "%NFrolA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
+ { "%NFrorA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
+ { "rclA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
+ { "rcrA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
+ { "%NFshlA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
+ { "%NFshrA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
+ { "%NFshlA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
+ { "%NFsarA", { VexGb, Eb, CL }, NO_PREFIX },
|
|||
|
},
|
|||
|
/* REG_D3 */
|
|||
|
{
|
|||
|
- { "rolQ", { Ev, CL }, 0 },
|
|||
|
- { "rorQ", { Ev, CL }, 0 },
|
|||
|
- { "rclQ", { Ev, CL }, 0 },
|
|||
|
- { "rcrQ", { Ev, CL }, 0 },
|
|||
|
- { "shlQ", { Ev, CL }, 0 },
|
|||
|
- { "shrQ", { Ev, CL }, 0 },
|
|||
|
- { "shlQ", { Ev, CL }, 0 },
|
|||
|
- { "sarQ", { Ev, CL }, 0 },
|
|||
|
+ { "%NFrolQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFrorQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "rclQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "rcrQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshlQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshrQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFshlQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
+ { "%NFsarQ", { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
|
|||
|
},
|
|||
|
/* REG_F6 */
|
|||
|
{
|
|||
|
@@ -2794,9 +2894,9 @@ static const struct dis386 reg_table[][8] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "xrstors", { FXSAVE }, 0 },
|
|||
|
- { "xsavec", { FXSAVE }, 0 },
|
|||
|
- { "xsaves", { FXSAVE }, 0 },
|
|||
|
+ { "xrstors", { FXSAVE }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "xsavec", { FXSAVE }, PREFIX_REX2_ILLEGAL },
|
|||
|
+ { "xsaves", { FXSAVE }, PREFIX_REX2_ILLEGAL },
|
|||
|
{ MOD_TABLE (MOD_0FC7_REG_6) },
|
|||
|
{ MOD_TABLE (MOD_0FC7_REG_7) },
|
|||
|
},
|
|||
|
@@ -2842,12 +2942,16 @@ static const struct dis386 reg_table[][8] = {
|
|||
|
{
|
|||
|
{ RM_TABLE (RM_VEX_0F3849_X86_64_L_0_W_0_M_1_P_0_R_0) },
|
|||
|
},
|
|||
|
- /* REG_VEX_0F38F3_L_0 */
|
|||
|
+ /* REG_VEX_0F38F3_L_0_P_0 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "blsrS", { VexGdq, Edq }, PREFIX_OPCODE },
|
|||
|
- { "blsmskS", { VexGdq, Edq }, PREFIX_OPCODE },
|
|||
|
- { "blsiS", { VexGdq, Edq }, PREFIX_OPCODE },
|
|||
|
+ { "%NFblsrS", { VexGdq, Edq }, 0 },
|
|||
|
+ { "%NFblsmskS", { VexGdq, Edq }, 0 },
|
|||
|
+ { "%NFblsiS", { VexGdq, Edq }, 0 },
|
|||
|
+ },
|
|||
|
+ /* REG_VEX_MAP7_F8_L_0_W_0 */
|
|||
|
+ {
|
|||
|
+ { X86_64_TABLE (X86_64_VEX_MAP7_F8_L_0_W_0_R_0) },
|
|||
|
},
|
|||
|
/* REG_XOP_09_01_L_0 */
|
|||
|
{
|
|||
|
@@ -3364,7 +3468,7 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
|
|||
|
/* PREFIX_0FAE_REG_4_MOD_0 */
|
|||
|
{
|
|||
|
- { "xsave", { FXSAVE }, 0 },
|
|||
|
+ { "xsave", { FXSAVE }, PREFIX_REX2_ILLEGAL },
|
|||
|
{ "ptwrite{%LQ|}", { Edq }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
@@ -3382,7 +3486,7 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
|
|||
|
/* PREFIX_0FAE_REG_6_MOD_0 */
|
|||
|
{
|
|||
|
- { "xsaveopt", { FXSAVE }, PREFIX_OPCODE },
|
|||
|
+ { "xsaveopt", { FXSAVE }, PREFIX_OPCODE | PREFIX_REX2_ILLEGAL },
|
|||
|
{ "clrssbsy", { Mq }, PREFIX_OPCODE },
|
|||
|
{ "clwb", { Mb }, PREFIX_OPCODE },
|
|||
|
},
|
|||
|
@@ -3550,18 +3654,27 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
/* PREFIX_0F38F6 */
|
|||
|
{
|
|||
|
{ "wrssK", { M, Gdq }, 0 },
|
|||
|
- { "adoxS", { Gdq, Edq}, 0 },
|
|||
|
- { "adcxS", { Gdq, Edq}, 0 },
|
|||
|
+ { "adoxL", { VexGdq, Gdq, Edq }, 0 },
|
|||
|
+ { "adcxL", { VexGdq, Gdq, Edq }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
},
|
|||
|
|
|||
|
- /* PREFIX_0F38F8 */
|
|||
|
+ /* PREFIX_0F38F8_M_0 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
{ "enqcmds", { Gva, M }, 0 },
|
|||
|
{ "movdir64b", { Gva, M }, 0 },
|
|||
|
{ "enqcmd", { Gva, M }, 0 },
|
|||
|
},
|
|||
|
+
|
|||
|
+ /* PREFIX_0F38F8_M_1_X86_64 */
|
|||
|
+ {
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "uwrmsr", { Gq, Rq }, 0 },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "urdmsr", { Rq, Gq }, 0 },
|
|||
|
+ },
|
|||
|
+
|
|||
|
/* PREFIX_0F38FA */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
@@ -3768,38 +3881,38 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
|
|||
|
/* PREFIX_VEX_0F90_L_0_W_0 */
|
|||
|
{
|
|||
|
- { "kmovw", { MaskG, MaskE }, 0 },
|
|||
|
+ { "%XEkmovw", { MaskG, MaskE }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovb", { MaskG, MaskBDE }, 0 },
|
|||
|
+ { "%XEkmovb", { MaskG, MaskBDE }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F90_L_0_W_1 */
|
|||
|
{
|
|||
|
- { "kmovq", { MaskG, MaskE }, 0 },
|
|||
|
+ { "%XEkmovq", { MaskG, MaskE }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovd", { MaskG, MaskBDE }, 0 },
|
|||
|
+ { "%XEkmovd", { MaskG, MaskBDE }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F91_L_0_W_0 */
|
|||
|
{
|
|||
|
- { "kmovw", { Mw, MaskG }, 0 },
|
|||
|
+ { "%XEkmovw", { Mw, MaskG }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovb", { Mb, MaskG }, 0 },
|
|||
|
+ { "%XEkmovb", { Mb, MaskG }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F91_L_0_W_1 */
|
|||
|
{
|
|||
|
- { "kmovq", { Mq, MaskG }, 0 },
|
|||
|
+ { "%XEkmovq", { Mq, MaskG }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovd", { Md, MaskG }, 0 },
|
|||
|
+ { "%XEkmovd", { Md, MaskG }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F92_L_0_W_0 */
|
|||
|
{
|
|||
|
- { "kmovw", { MaskG, Rdq }, 0 },
|
|||
|
+ { "%XEkmovw", { MaskG, Rdq }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovb", { MaskG, Rdq }, 0 },
|
|||
|
- { "kmovd", { MaskG, Rdq }, 0 },
|
|||
|
+ { "%XEkmovb", { MaskG, Rdq }, 0 },
|
|||
|
+ { "%XEkmovd", { MaskG, Rdq }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F92_L_0_W_1 */
|
|||
|
@@ -3807,15 +3920,15 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovK", { MaskG, Rdq }, 0 },
|
|||
|
+ { "%XEkmovK", { MaskG, Rdq }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F93_L_0_W_0 */
|
|||
|
{
|
|||
|
- { "kmovw", { Gdq, MaskR }, 0 },
|
|||
|
+ { "%XEkmovw", { Gdq, MaskR }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovb", { Gdq, MaskR }, 0 },
|
|||
|
- { "kmovd", { Gdq, MaskR }, 0 },
|
|||
|
+ { "%XEkmovb", { Gdq, MaskR }, 0 },
|
|||
|
+ { "%XEkmovd", { Gdq, MaskR }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F93_L_0_W_1 */
|
|||
|
@@ -3823,7 +3936,7 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "kmovK", { Gdq, MaskR }, 0 },
|
|||
|
+ { "%XEkmovK", { Gdq, MaskR }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F98_L_0_W_0 */
|
|||
|
@@ -3982,12 +4095,22 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
{ "vsm4rnds4", { XM, Vex, EXx }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
+ /* PREFIX_VEX_0F38F2_L_0 */
|
|||
|
+ {
|
|||
|
+ { "%NFandnS", { Gdq, VexGdq, Edq }, 0 },
|
|||
|
+ },
|
|||
|
+
|
|||
|
+ /* PREFIX_VEX_0F38F3_L_0 */
|
|||
|
+ {
|
|||
|
+ { REG_TABLE (REG_VEX_0F38F3_L_0_P_0) },
|
|||
|
+ },
|
|||
|
+
|
|||
|
/* PREFIX_VEX_0F38F5_L_0 */
|
|||
|
{
|
|||
|
- { "bzhiS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
- { "pextS", { Gdq, VexGdq, Edq }, 0 },
|
|||
|
+ { "%NFbzhiS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
+ { "%XEpextS", { Gdq, VexGdq, Edq }, 0 },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "pdepS", { Gdq, VexGdq, Edq }, 0 },
|
|||
|
+ { "%XEpdepS", { Gdq, VexGdq, Edq }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F38F6_L_0 */
|
|||
|
@@ -3995,15 +4118,15 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "mulxS", { Gdq, VexGdq, Edq }, 0 },
|
|||
|
+ { "%XEmulxS", { Gdq, VexGdq, Edq }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F38F7_L_0 */
|
|||
|
{
|
|||
|
- { "bextrS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
- { "sarxS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
- { "shlxS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
- { "shrxS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
+ { "%NFbextrS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
+ { "%XEsarxS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
+ { "%XEshlxS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
+ { "%XEshrxS", { Gdq, Edq, VexGdq }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
/* PREFIX_VEX_0F3AF0_L_0 */
|
|||
|
@@ -4011,7 +4134,15 @@ static const struct dis386 prefix_table[][4] = {
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "rorxS", { Gdq, Edq, Ib }, 0 },
|
|||
|
+ { "%XErorxS", { Gdq, Edq, Ib }, 0 },
|
|||
|
+ },
|
|||
|
+
|
|||
|
+ /* PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64 */
|
|||
|
+ {
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "uwrmsr", { Skip_MODRM, Id, Rq }, 0 },
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { "urdmsr", { Rq, Id }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
#include "i386-dis-evex-prefix.h"
|
|||
|
@@ -4160,13 +4291,13 @@ static const struct dis386 x86_64_table[][2] = {
|
|||
|
/* X86_64_E8 */
|
|||
|
{
|
|||
|
{ "callP", { Jv, BND }, 0 },
|
|||
|
- { "call@", { Jv, BND }, 0 }
|
|||
|
+ { "call@", { Jv, BND }, PREFIX_REX2_ILLEGAL }
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_E9 */
|
|||
|
{
|
|||
|
{ "jmpP", { Jv, BND }, 0 },
|
|||
|
- { "jmp@", { Jv, BND }, 0 }
|
|||
|
+ { "jmp@", { Jv, BND }, PREFIX_REX2_ILLEGAL }
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_EA */
|
|||
|
@@ -4322,6 +4453,12 @@ static const struct dis386 x86_64_table[][2] = {
|
|||
|
{ "movZ", { Td, Em }, 0 },
|
|||
|
},
|
|||
|
|
|||
|
+ {
|
|||
|
+ /* X86_64_0F38F8_M_1 */
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { PREFIX_TABLE (PREFIX_0F38F8_M_1_X86_64) },
|
|||
|
+ },
|
|||
|
+
|
|||
|
/* X86_64_0FC7_REG_6_MOD_3_PREFIX_1 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
@@ -4361,97 +4498,103 @@ static const struct dis386 x86_64_table[][2] = {
|
|||
|
/* X86_64_VEX_0F38E0 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpoxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpoxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E1 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnoxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnoxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E2 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpbxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpbxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E3 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnbxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnbxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E4 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpzxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpzxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E5 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnzxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnzxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E6 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpbexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpbexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E7 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnbexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnbexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E8 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpsxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpsxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38E9 */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnsxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnsxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38EA */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmppxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmppxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38EB */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnpxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnpxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38EC */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmplxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmplxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38ED */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnlxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnlxadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38EE */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmplexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmplexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
},
|
|||
|
|
|||
|
/* X86_64_VEX_0F38EF */
|
|||
|
{
|
|||
|
{ Bad_Opcode },
|
|||
|
- { "cmpnlexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ { "%XEcmpnlexadd", { Mdq, Gdq, VexGdq }, PREFIX_DATA },
|
|||
|
+ },
|
|||
|
+
|
|||
|
+ /* X86_64_VEX_MAP7_F8_L_0_W_0_R_0 */
|
|||
|
+ {
|
|||
|
+ { Bad_Opcode },
|
|||
|
+ { PREFIX_TABLE (PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64) },
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
@@ -4739,7 +4882,7 @@ static const struct dis386 three_byte_table[][256] = {
|
|||
|
{ PREFIX_TABLE (PREFIX_0F38F6) },
|
|||
|
{ Bad_Opcode },
|
|||
|
/* f8 */
|
|||
|
- { PREFIX_TABLE (PREFIX_0F38F8) },
|
|||
|
+ { MOD_TABLE (MOD_0F38F8) },
|
|||
|
{ "movdiri", { Mdq, Gdq }, PREFIX_OPCODE },
|
|||
|
{ PREFIX_TABLE (PREFIX_0F38FA) },
|
|||
|
{ PREFIX_TABLE (PREFIX_0F38FB) },
|
|||
|
@@ -7039,12 +7182,12 @@ static const struct dis386 vex_len_table[][2] = {
|
|||
|
|
|||
|
/* VEX_LEN_0F38F2 */
|
|||
|
{
|
|||
|
- { "andnS", { Gdq, VexGdq, Edq }, PREFIX_OPCODE },
|
|||
|
+ { PREFIX_TABLE (PREFIX_VEX_0F38F2_L_0) },
|
|||
|
},
|
|||
|
|
|||
|
/* VEX_LEN_0F38F3 */
|
|||
|
{
|
|||
|
- { REG_TABLE(REG_VEX_0F38F3_L_0) },
|
|||
|
+ { PREFIX_TABLE (PREFIX_VEX_0F38F3_L_0) },
|
|||
|
},
|
|||
|
|
|||
|
/* VEX_LEN_0F38F5 */
|
|||
|
@@ -7205,6 +7348,11 @@ static const struct dis386 vex_len_table[][2] = {
|
|||
|
{ PREFIX_TABLE (PREFIX_VEX_0F3AF0_L_0) },
|
|||
|
},
|
|||
|
|
|||
|
+ /* VEX_LEN_MAP7_F8 */
|
|||
|
+ {
|
|||
|
+ { VEX_W_TABLE (VEX_W_MAP7_F8_L_0) },
|
|||
|
+ },
|
|||
|
+
|
|||
|
/* VEX_LEN_XOP_08_85 */
|
|||
|
{
|
|||
|
{ VEX_W_TABLE (VEX_W_XOP_08_85_L_0) },
|
|||
|
@@ -7811,6 +7959,10 @@ static const struct dis386 vex_w_table[][2] = {
|
|||
|
/* VEX_W_0F3ADE */
|
|||
|
{ VEX_LEN_TABLE (VEX_LEN_0F3ADE_W_0) },
|
|||
|
},
|
|||
|
+ {
|
|||
|
+ /* VEX_W_MAP7_F8_L_0 */
|
|||
|
+ { REG_TABLE (REG_VEX_MAP7_F8_L_0_W_0) },
|
|||
|
+ },
|
|||
|
/* VEX_W_XOP_08_85_L_0 */
|
|||
|
{
|
|||
|
{ "vpmacssww", { XM, Vex, EXx, XMVexI4 }, 0 },
|
|||
|
@@ -8125,7 +8277,7 @@ static const struct dis386 mod_table[][2] = {
|
|||
|
},
|
|||
|
{
|
|||
|
/* MOD_0FAE_REG_5 */
|
|||
|
- { "xrstor", { FXSAVE }, PREFIX_OPCODE },
|
|||
|
+ { "xrstor", { FXSAVE }, PREFIX_OPCODE | PREFIX_REX2_ILLEGAL },
|
|||
|
{ PREFIX_TABLE (PREFIX_0FAE_REG_5_MOD_3) },
|
|||
|
},
|
|||
|
{
|
|||
|
@@ -8153,6 +8305,11 @@ static const struct dis386 mod_table[][2] = {
|
|||
|
{ "aesenc128kl", { XM, M }, 0 },
|
|||
|
{ "loadiwkey", { XM, EXx }, 0 },
|
|||
|
},
|
|||
|
+ /* MOD_0F38F8 */
|
|||
|
+ {
|
|||
|
+ { PREFIX_TABLE (PREFIX_0F38F8_M_0) },
|
|||
|
+ { X86_64_TABLE (X86_64_0F38F8_M_1) },
|
|||
|
+ },
|
|||
|
{
|
|||
|
/* MOD_VEX_0F3849_X86_64_L_0_W_0 */
|
|||
|
{ PREFIX_TABLE (PREFIX_VEX_0F3849_X86_64_L_0_W_0_M_0) },
|
|||
|
@@ -8323,6 +8480,24 @@ ckprefix (instr_info *ins)
|
|||
|
return ckp_okay;
|
|||
|
ins->last_rex_prefix = i;
|
|||
|
break;
|
|||
|
+ /* REX2 must be the last prefix. */
|
|||
|
+ case REX2_OPCODE:
|
|||
|
+ if (ins->address_mode == mode_64bit)
|
|||
|
+ {
|
|||
|
+ if (ins->last_rex_prefix >= 0)
|
|||
|
+ return ckp_bogus;
|
|||
|
+
|
|||
|
+ ins->codep++;
|
|||
|
+ if (!fetch_code (ins->info, ins->codep + 1))
|
|||
|
+ return ckp_fetch_error;
|
|||
|
+ ins->rex2_payload = *ins->codep;
|
|||
|
+ ins->rex2 = ins->rex2_payload >> 4;
|
|||
|
+ ins->rex = (ins->rex2_payload & 0xf) | REX_OPCODE;
|
|||
|
+ ins->codep++;
|
|||
|
+ ins->last_rex2_prefix = i;
|
|||
|
+ ins->all_prefixes[i] = REX2_OPCODE;
|
|||
|
+ }
|
|||
|
+ return ckp_okay;
|
|||
|
case 0xf3:
|
|||
|
ins->prefixes |= PREFIX_REPZ;
|
|||
|
ins->last_repz_prefix = i;
|
|||
|
@@ -8490,6 +8665,8 @@ prefix_name (enum address_mode mode, uint8_t pref, int sizeflag)
|
|||
|
return "bnd";
|
|||
|
case NOTRACK_PREFIX:
|
|||
|
return "notrack";
|
|||
|
+ case REX2_OPCODE:
|
|||
|
+ return "rex2";
|
|||
|
default:
|
|||
|
return NULL;
|
|||
|
}
|
|||
|
@@ -8507,10 +8684,10 @@ with the -M switch (multiple options should be separated by commas):\n"));
|
|||
|
fprintf (stream, _(" i8086 Disassemble in 16bit mode\n"));
|
|||
|
fprintf (stream, _(" att Display instruction in AT&T syntax\n"));
|
|||
|
fprintf (stream, _(" intel Display instruction in Intel syntax\n"));
|
|||
|
- fprintf (stream, _(" att-mnemonic\n"
|
|||
|
- " Display instruction in AT&T mnemonic\n"));
|
|||
|
- fprintf (stream, _(" intel-mnemonic\n"
|
|||
|
- " Display instruction in Intel mnemonic\n"));
|
|||
|
+ fprintf (stream, _(" att-mnemonic (AT&T syntax only)\n"
|
|||
|
+ " Display instruction with AT&T mnemonic\n"));
|
|||
|
+ fprintf (stream, _(" intel-mnemonic (AT&T syntax only)\n"
|
|||
|
+ " Display instruction with Intel mnemonic\n"));
|
|||
|
fprintf (stream, _(" addr64 Assume 64bit address size\n"));
|
|||
|
fprintf (stream, _(" addr32 Assume 32bit address size\n"));
|
|||
|
fprintf (stream, _(" addr16 Assume 16bit address size\n"));
|
|||
|
@@ -8527,6 +8704,8 @@ static const struct dis386 bad_opcode = { "(bad)", { XX }, 0 };
|
|||
|
/* Fetch error indicator. */
|
|||
|
static const struct dis386 err_opcode = { NULL, { XX }, 0 };
|
|||
|
|
|||
|
+static const struct dis386 map7_f8_opcode = { VEX_LEN_TABLE (VEX_LEN_MAP7_F8) };
|
|||
|
+
|
|||
|
/* Get a pointer to struct dis386 with a valid name. */
|
|||
|
|
|||
|
static const struct dis386 *
|
|||
|
@@ -8553,6 +8732,7 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
break;
|
|||
|
|
|||
|
case USE_PREFIX_TABLE:
|
|||
|
+ use_prefix_table:
|
|||
|
if (ins->need_vex)
|
|||
|
{
|
|||
|
/* The prefix in VEX is implicit. */
|
|||
|
@@ -8622,12 +8802,40 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
dp = &prefix_table[dp->op[1].bytemode][vindex];
|
|||
|
break;
|
|||
|
|
|||
|
+ case USE_X86_64_EVEX_FROM_VEX_TABLE:
|
|||
|
+ case USE_X86_64_EVEX_PFX_TABLE:
|
|||
|
+ case USE_X86_64_EVEX_W_TABLE:
|
|||
|
+ case USE_X86_64_EVEX_MEM_W_TABLE:
|
|||
|
+ ins->evex_type = evex_from_vex;
|
|||
|
+ /* EVEX from VEX instructions are 64-bit only and require that EVEX.z,
|
|||
|
+ EVEX.L'L, EVEX.b, and the lower 2 bits of EVEX.aaa must be 0. */
|
|||
|
+ if (ins->address_mode != mode_64bit
|
|||
|
+ || (ins->vex.mask_register_specifier & 0x3) != 0
|
|||
|
+ || ins->vex.ll != 0
|
|||
|
+ || ins->vex.zeroing != 0
|
|||
|
+ || ins->vex.b)
|
|||
|
+ return &bad_opcode;
|
|||
|
+
|
|||
|
+ if (dp->op[0].bytemode == USE_X86_64_EVEX_PFX_TABLE)
|
|||
|
+ goto use_prefix_table;
|
|||
|
+ if (dp->op[0].bytemode == USE_X86_64_EVEX_W_TABLE)
|
|||
|
+ goto use_vex_w_table;
|
|||
|
+ if (dp->op[0].bytemode == USE_X86_64_EVEX_MEM_W_TABLE)
|
|||
|
+ {
|
|||
|
+ if (ins->modrm.mod == 3)
|
|||
|
+ return &bad_opcode;
|
|||
|
+ goto use_vex_w_table;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ /* Fall through. */
|
|||
|
case USE_X86_64_TABLE:
|
|||
|
vindex = ins->address_mode == mode_64bit ? 1 : 0;
|
|||
|
dp = &x86_64_table[dp->op[1].bytemode][vindex];
|
|||
|
break;
|
|||
|
|
|||
|
case USE_3BYTE_TABLE:
|
|||
|
+ if (ins->last_rex2_prefix >= 0)
|
|||
|
+ return &err_opcode;
|
|||
|
if (!fetch_code (ins->info, ins->codep + 2))
|
|||
|
return &err_opcode;
|
|||
|
vindex = *ins->codep++;
|
|||
|
@@ -8769,6 +8977,9 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
case 0x3:
|
|||
|
vex_table_index = VEX_0F3A;
|
|||
|
break;
|
|||
|
+ case 0x7:
|
|||
|
+ vex_table_index = VEX_MAP7;
|
|||
|
+ break;
|
|||
|
}
|
|||
|
ins->codep++;
|
|||
|
ins->vex.w = *ins->codep & 0x80;
|
|||
|
@@ -8803,7 +9014,12 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
ins->need_vex = 3;
|
|||
|
ins->codep++;
|
|||
|
vindex = *ins->codep++;
|
|||
|
- dp = &vex_table[vex_table_index][vindex];
|
|||
|
+ if (vex_table_index != VEX_MAP7)
|
|||
|
+ dp = &vex_table[vex_table_index][vindex];
|
|||
|
+ else if (vindex == 0xf8)
|
|||
|
+ dp = &map7_f8_opcode;
|
|||
|
+ else
|
|||
|
+ dp = &bad_opcode;
|
|||
|
ins->end_codep = ins->codep;
|
|||
|
/* There is no MODRM byte for VEX0F 77. */
|
|||
|
if ((vex_table_index != VEX_0F || vindex != 0x77)
|
|||
|
@@ -8846,6 +9062,7 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
break;
|
|||
|
|
|||
|
case USE_VEX_W_TABLE:
|
|||
|
+ use_vex_w_table:
|
|||
|
if (!ins->need_vex)
|
|||
|
abort ();
|
|||
|
|
|||
|
@@ -8859,9 +9076,13 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
if (!fetch_code (ins->info, ins->codep + 4))
|
|||
|
return &err_opcode;
|
|||
|
/* The first byte after 0x62. */
|
|||
|
+ if (*ins->codep & 0x8)
|
|||
|
+ ins->rex2 |= REX_B;
|
|||
|
+ if (!(*ins->codep & 0x10))
|
|||
|
+ ins->rex2 |= REX_R;
|
|||
|
+
|
|||
|
ins->rex = ~(*ins->codep >> 5) & 0x7;
|
|||
|
- ins->vex.r = *ins->codep & 0x10;
|
|||
|
- switch ((*ins->codep & 0xf))
|
|||
|
+ switch (*ins->codep & 0x7)
|
|||
|
{
|
|||
|
default:
|
|||
|
return &bad_opcode;
|
|||
|
@@ -8874,12 +9095,21 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
case 0x3:
|
|||
|
vex_table_index = EVEX_0F3A;
|
|||
|
break;
|
|||
|
+ case 0x4:
|
|||
|
+ vex_table_index = EVEX_MAP4;
|
|||
|
+ ins->evex_type = evex_from_legacy;
|
|||
|
+ if (ins->address_mode != mode_64bit)
|
|||
|
+ return &bad_opcode;
|
|||
|
+ break;
|
|||
|
case 0x5:
|
|||
|
vex_table_index = EVEX_MAP5;
|
|||
|
break;
|
|||
|
case 0x6:
|
|||
|
vex_table_index = EVEX_MAP6;
|
|||
|
break;
|
|||
|
+ case 0x7:
|
|||
|
+ vex_table_index = EVEX_MAP7;
|
|||
|
+ break;
|
|||
|
}
|
|||
|
|
|||
|
/* The second byte after 0x62. */
|
|||
|
@@ -8890,9 +9120,8 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
|
|||
|
ins->vex.register_specifier = (~(*ins->codep >> 3)) & 0xf;
|
|||
|
|
|||
|
- /* The U bit. */
|
|||
|
if (!(*ins->codep & 0x4))
|
|||
|
- return &bad_opcode;
|
|||
|
+ ins->rex2 |= REX_X;
|
|||
|
|
|||
|
switch ((*ins->codep & 0x3))
|
|||
|
{
|
|||
|
@@ -8919,24 +9148,54 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
|
|||
|
ins->vex.v = *ins->codep & 0x8;
|
|||
|
ins->vex.mask_register_specifier = *ins->codep & 0x7;
|
|||
|
ins->vex.zeroing = *ins->codep & 0x80;
|
|||
|
+ /* Set the NF bit for EVEX-Promoted instructions, this bit will be cleared
|
|||
|
+ when it's an evex_default one. */
|
|||
|
+ ins->vex.nf = *ins->codep & 0x4;
|
|||
|
|
|||
|
if (ins->address_mode != mode_64bit)
|
|||
|
{
|
|||
|
+ /* Report bad for !evex_default and when two fixed values of evex
|
|||
|
+ change.. */
|
|||
|
+ if (ins->evex_type != evex_default
|
|||
|
+ || (ins->rex2 & (REX_B | REX_X)))
|
|||
|
+ return &bad_opcode;
|
|||
|
/* In 16/32-bit mode silently ignore following bits. */
|
|||
|
ins->rex &= ~REX_B;
|
|||
|
- ins->vex.r = true;
|
|||
|
+ ins->rex2 &= ~REX_R;
|
|||
|
}
|
|||
|
|
|||
|
+ /* EVEX from legacy instructions, when the EVEX.ND bit is 0,
|
|||
|
+ all bits of EVEX.vvvv and EVEX.V' must be 1. */
|
|||
|
+ if (ins->evex_type == evex_from_legacy && !ins->vex.nd
|
|||
|
+ && (ins->vex.register_specifier || !ins->vex.v))
|
|||
|
+ return &bad_opcode;
|
|||
|
+
|
|||
|
ins->need_vex = 4;
|
|||
|
+
|
|||
|
+ /* EVEX from legacy instructions require that EVEX.z, EVEX.L’L and the
|
|||
|
+ lower 2 bits of EVEX.aaa must be 0. */
|
|||
|
+ if (ins->evex_type == evex_from_legacy
|
|||
|
+ && ((ins->vex.mask_register_specifier & 0x3) != 0
|
|||
|
+ || ins->vex.ll != 0
|
|||
|
+ || ins->vex.zeroing != 0))
|
|||
|
+ return &bad_opcode;
|
|||
|
+
|
|||
|
ins->codep++;
|
|||
|
vindex = *ins->codep++;
|
|||
|
- dp = &evex_table[vex_table_index][vindex];
|
|||
|
+ if (vex_table_index != EVEX_MAP7)
|
|||
|
+ dp = &evex_table[vex_table_index][vindex];
|
|||
|
+ else if (vindex == 0xf8)
|
|||
|
+ dp = &map7_f8_opcode;
|
|||
|
+ else
|
|||
|
+ dp = &bad_opcode;
|
|||
|
ins->end_codep = ins->codep;
|
|||
|
if (!fetch_modrm (ins))
|
|||
|
return &err_opcode;
|
|||
|
|
|||
|
- /* Set vector length. */
|
|||
|
- if (ins->modrm.mod == 3 && ins->vex.b)
|
|||
|
+ /* Set vector length. For EVEX-promoted instructions, evex.ll == 0b00,
|
|||
|
+ which has the same encoding as vex.length == 128 and they can share
|
|||
|
+ the same processing with vex.length in OP_VEX. */
|
|||
|
+ if (ins->modrm.mod == 3 && ins->vex.b && ins->evex_type != evex_from_legacy)
|
|||
|
ins->vex.length = 512;
|
|||
|
else
|
|||
|
{
|
|||
|
@@ -9128,6 +9387,7 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
.last_data_prefix = -1,
|
|||
|
.last_addr_prefix = -1,
|
|||
|
.last_rex_prefix = -1,
|
|||
|
+ .last_rex2_prefix = -1,
|
|||
|
.last_seg_prefix = -1,
|
|||
|
.fwait_prefix = -1,
|
|||
|
};
|
|||
|
@@ -9167,9 +9427,10 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
}
|
|||
|
else if (startswith (p, "intel"))
|
|||
|
{
|
|||
|
- ins.intel_syntax = 1;
|
|||
|
if (startswith (p + 5, "-mnemonic"))
|
|||
|
ins.intel_mnemonic = true;
|
|||
|
+ else
|
|||
|
+ ins.intel_syntax = 1;
|
|||
|
}
|
|||
|
else if (startswith (p, "att"))
|
|||
|
{
|
|||
|
@@ -9292,24 +9553,25 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
goto out;
|
|||
|
}
|
|||
|
|
|||
|
- if (*ins.codep == 0x0f)
|
|||
|
+ /* REX2.M in rex2 prefix represents map0 or map1. */
|
|||
|
+ if (ins.last_rex2_prefix < 0 ? *ins.codep == 0x0f : (ins.rex2 & REX2_M))
|
|||
|
{
|
|||
|
- unsigned char threebyte;
|
|||
|
+ if (!ins.rex2)
|
|||
|
+ {
|
|||
|
+ ins.codep++;
|
|||
|
+ if (!fetch_code (info, ins.codep + 1))
|
|||
|
+ goto fetch_error_out;
|
|||
|
+ }
|
|||
|
|
|||
|
- ins.codep++;
|
|||
|
- if (!fetch_code (info, ins.codep + 1))
|
|||
|
- goto fetch_error_out;
|
|||
|
- threebyte = *ins.codep;
|
|||
|
- dp = &dis386_twobyte[threebyte];
|
|||
|
- ins.need_modrm = twobyte_has_modrm[threebyte];
|
|||
|
- ins.codep++;
|
|||
|
+ dp = &dis386_twobyte[*ins.codep];
|
|||
|
+ ins.need_modrm = twobyte_has_modrm[*ins.codep];
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
dp = &dis386[*ins.codep];
|
|||
|
ins.need_modrm = onebyte_has_modrm[*ins.codep];
|
|||
|
- ins.codep++;
|
|||
|
}
|
|||
|
+ ins.codep++;
|
|||
|
|
|||
|
/* Save sizeflag for printing the extra ins.prefixes later before updating
|
|||
|
it for mnemonic and operand processing. The prefix names depend
|
|||
|
@@ -9335,6 +9597,22 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
dp = get_valid_dis386 (dp, &ins);
|
|||
|
if (dp == &err_opcode)
|
|||
|
goto fetch_error_out;
|
|||
|
+
|
|||
|
+ /* For APX instructions promoted from legacy maps 0/1, embedded prefix
|
|||
|
+ is interpreted as the operand size override. */
|
|||
|
+ if (ins.evex_type == evex_from_legacy
|
|||
|
+ && ins.vex.prefix == DATA_PREFIX_OPCODE)
|
|||
|
+ sizeflag ^= DFLAG;
|
|||
|
+
|
|||
|
+ if(ins.evex_type == evex_default)
|
|||
|
+ ins.vex.nf = false;
|
|||
|
+ else
|
|||
|
+ /* For EVEX-promoted formats, we need to clear EVEX.NF (ccmp and ctest
|
|||
|
+ are cleared separately.) in mask_register_specifier and keep the low
|
|||
|
+ 2 bits of mask_register_specifier to report errors for invalid cases
|
|||
|
+ . */
|
|||
|
+ ins.vex.mask_register_specifier &= 0x3;
|
|||
|
+
|
|||
|
if (dp != NULL && putop (&ins, dp->name, sizeflag) == 0)
|
|||
|
{
|
|||
|
if (!get_sib (&ins, sizeflag))
|
|||
|
@@ -9387,10 +9665,13 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
oappend (&ins, "/(bad)");
|
|||
|
}
|
|||
|
}
|
|||
|
+ /* vex.nf is cleared after being consumed. */
|
|||
|
+ if (ins.vex.nf)
|
|||
|
+ oappend (&ins, "{bad-nf}");
|
|||
|
|
|||
|
/* Check whether rounding control was enabled for an insn not
|
|||
|
- supporting it. */
|
|||
|
- if (ins.modrm.mod == 3 && ins.vex.b
|
|||
|
+ supporting it, when evex.b is not treated as evex.nd. */
|
|||
|
+ if (ins.modrm.mod == 3 && ins.vex.b && ins.evex_type == evex_default
|
|||
|
&& !(ins.evex_used & EVEX_b_used))
|
|||
|
{
|
|||
|
for (i = 0; i < MAX_OPERANDS; ++i)
|
|||
|
@@ -9454,7 +9735,15 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
goto out;
|
|||
|
}
|
|||
|
|
|||
|
- switch (dp->prefix_requirement)
|
|||
|
+ if ((dp->prefix_requirement & PREFIX_REX2_ILLEGAL)
|
|||
|
+ && ins.last_rex2_prefix >= 0 && (ins.rex2 & REX2_SPECIAL) == 0)
|
|||
|
+ {
|
|||
|
+ i386_dis_printf (info, dis_style_text, "(bad)");
|
|||
|
+ ret = ins.end_codep - priv.the_buffer;
|
|||
|
+ goto out;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ switch (dp->prefix_requirement & ~PREFIX_REX2_ILLEGAL)
|
|||
|
{
|
|||
|
case PREFIX_DATA:
|
|||
|
/* If only the data prefix is marked as mandatory, its absence renders
|
|||
|
@@ -9506,6 +9795,25 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
if (ins.last_repnz_prefix >= 0)
|
|||
|
ins.all_prefixes[ins.last_repnz_prefix] = 0xf2;
|
|||
|
break;
|
|||
|
+
|
|||
|
+ case PREFIX_NP_OR_DATA:
|
|||
|
+ if (ins.vex.prefix == REPE_PREFIX_OPCODE
|
|||
|
+ || ins.vex.prefix == REPNE_PREFIX_OPCODE)
|
|||
|
+ {
|
|||
|
+ i386_dis_printf (info, dis_style_text, "(bad)");
|
|||
|
+ ret = ins.end_codep - priv.the_buffer;
|
|||
|
+ goto out;
|
|||
|
+ }
|
|||
|
+ break;
|
|||
|
+
|
|||
|
+ case NO_PREFIX:
|
|||
|
+ if (ins.vex.prefix)
|
|||
|
+ {
|
|||
|
+ i386_dis_printf (info, dis_style_text, "(bad)");
|
|||
|
+ ret = ins.end_codep - priv.the_buffer;
|
|||
|
+ goto out;
|
|||
|
+ }
|
|||
|
+ break;
|
|||
|
}
|
|||
|
|
|||
|
/* Check if the REX prefix is used. */
|
|||
|
@@ -9513,6 +9821,14 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
&& !ins.need_vex && ins.last_rex_prefix >= 0)
|
|||
|
ins.all_prefixes[ins.last_rex_prefix] = 0;
|
|||
|
|
|||
|
+ /* Check if the REX2 prefix is used. */
|
|||
|
+ if (ins.last_rex2_prefix >= 0
|
|||
|
+ && ((ins.rex2 & REX2_SPECIAL)
|
|||
|
+ || (((ins.rex2 & 7) ^ (ins.rex2_used & 7)) == 0
|
|||
|
+ && (ins.rex ^ ins.rex_used) == 0
|
|||
|
+ && (ins.rex2 & 7))))
|
|||
|
+ ins.all_prefixes[ins.last_rex2_prefix] = 0;
|
|||
|
+
|
|||
|
/* Check if the SEG prefix is used. */
|
|||
|
if ((ins.prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS | PREFIX_ES
|
|||
|
| PREFIX_FS | PREFIX_GS)) != 0
|
|||
|
@@ -9541,7 +9857,11 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
|
|||
|
if (name == NULL)
|
|||
|
abort ();
|
|||
|
prefix_length += strlen (name) + 1;
|
|||
|
- i386_dis_printf (info, dis_style_mnemonic, "%s ", name);
|
|||
|
+ if (ins.all_prefixes[i] == REX2_OPCODE)
|
|||
|
+ i386_dis_printf (info, dis_style_mnemonic, "{%s 0x%x} ", name,
|
|||
|
+ (unsigned int) ins.rex2_payload);
|
|||
|
+ else
|
|||
|
+ i386_dis_printf (info, dis_style_mnemonic, "%s ", name);
|
|||
|
}
|
|||
|
|
|||
|
/* Check maximum code length. */
|
|||
|
@@ -10077,6 +10397,16 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
int cond = 1;
|
|||
|
unsigned int l = 0, len = 0;
|
|||
|
char last[4];
|
|||
|
+ bool evex_printed = false;
|
|||
|
+
|
|||
|
+ /* We don't want to add any prefix or suffix to (bad), so return early. */
|
|||
|
+ if (!strncmp (in_template, "(bad)", 5))
|
|||
|
+ {
|
|||
|
+ oappend (ins, "(bad)");
|
|||
|
+ *ins->obufp = 0;
|
|||
|
+ ins->mnemonicendp = ins->obufp;
|
|||
|
+ return 0;
|
|||
|
+ }
|
|||
|
|
|||
|
for (p = in_template; *p; p++)
|
|||
|
{
|
|||
|
@@ -10090,6 +10420,12 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
switch (*p)
|
|||
|
{
|
|||
|
default:
|
|||
|
+ if (ins->evex_type == evex_from_legacy && !ins->vex.nd
|
|||
|
+ && !(ins->rex2 & 7) && !evex_printed)
|
|||
|
+ {
|
|||
|
+ oappend (ins, "{evex} ");
|
|||
|
+ evex_printed = true;
|
|||
|
+ }
|
|||
|
*ins->obufp++ = *p;
|
|||
|
break;
|
|||
|
case '%':
|
|||
|
@@ -10120,7 +10456,7 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
case 'A':
|
|||
|
if (ins->intel_syntax)
|
|||
|
break;
|
|||
|
- if ((ins->need_modrm && ins->modrm.mod != 3)
|
|||
|
+ if ((ins->need_modrm && ins->modrm.mod != 3 && !ins->vex.nd)
|
|||
|
|| (sizeflag & SUFFIX_ALWAYS))
|
|||
|
*ins->obufp++ = 'b';
|
|||
|
break;
|
|||
|
@@ -10204,7 +10540,7 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
{
|
|||
|
case 'X':
|
|||
|
if (!ins->vex.evex || ins->vex.b || ins->vex.ll >= 2
|
|||
|
- || !ins->vex.r
|
|||
|
+ || (ins->rex2 & 7)
|
|||
|
|| (ins->modrm.mod == 3 && (ins->rex & REX_X))
|
|||
|
|| !ins->vex.v || ins->vex.mask_register_specifier)
|
|||
|
break;
|
|||
|
@@ -10226,6 +10562,11 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
*ins->obufp++ = '}';
|
|||
|
*ins->obufp++ = ' ';
|
|||
|
break;
|
|||
|
+ case 'M':
|
|||
|
+ if (ins->modrm.mod != 3 && !(ins->rex2 & 7))
|
|||
|
+ oappend (ins, "{evex} ");
|
|||
|
+ evex_printed = true;
|
|||
|
+ break;
|
|||
|
default:
|
|||
|
abort ();
|
|||
|
}
|
|||
|
@@ -10245,16 +10586,39 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
|
|||
|
break;
|
|||
|
case 'F':
|
|||
|
- if (ins->intel_syntax)
|
|||
|
+ if (l == 0)
|
|||
|
+ {
|
|||
|
+ if (ins->intel_syntax)
|
|||
|
+ break;
|
|||
|
+ if ((ins->prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS))
|
|||
|
+ {
|
|||
|
+ if (sizeflag & AFLAG)
|
|||
|
+ *ins->obufp++ = ins->address_mode == mode_64bit ? 'q' : 'l';
|
|||
|
+ else
|
|||
|
+ *ins->obufp++ = ins->address_mode == mode_64bit ? 'l' : 'w';
|
|||
|
+ ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
|
|||
|
+ }
|
|||
|
+ }
|
|||
|
+ else if (l == 1 && last[0] == 'C')
|
|||
|
break;
|
|||
|
- if ((ins->prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS))
|
|||
|
+ else if (l == 1 && last[0] == 'N')
|
|||
|
{
|
|||
|
- if (sizeflag & AFLAG)
|
|||
|
- *ins->obufp++ = ins->address_mode == mode_64bit ? 'q' : 'l';
|
|||
|
- else
|
|||
|
- *ins->obufp++ = ins->address_mode == mode_64bit ? 'l' : 'w';
|
|||
|
- ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
|
|||
|
+ if (ins->vex.nf)
|
|||
|
+ {
|
|||
|
+ oappend (ins, "{nf} ");
|
|||
|
+ /* This bit needs to be cleared after it is consumed. */
|
|||
|
+ ins->vex.nf = false;
|
|||
|
+ evex_printed = true;
|
|||
|
+ }
|
|||
|
+ else if (ins->evex_type == evex_from_vex && !(ins->rex2 & 7)
|
|||
|
+ && ins->vex.v)
|
|||
|
+ {
|
|||
|
+ oappend (ins, "{evex} ");
|
|||
|
+ evex_printed = true;
|
|||
|
+ }
|
|||
|
}
|
|||
|
+ else
|
|||
|
+ abort ();
|
|||
|
break;
|
|||
|
case 'G':
|
|||
|
if (ins->intel_syntax || (ins->obufp[-1] != 's'
|
|||
|
@@ -10311,7 +10675,16 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
*ins->obufp++ = 'd';
|
|||
|
break;
|
|||
|
case 'L':
|
|||
|
- abort ();
|
|||
|
+ if (ins->intel_syntax)
|
|||
|
+ break;
|
|||
|
+ if (sizeflag & SUFFIX_ALWAYS)
|
|||
|
+ {
|
|||
|
+ if (ins->rex & REX_W)
|
|||
|
+ *ins->obufp++ = 'q';
|
|||
|
+ else
|
|||
|
+ *ins->obufp++ = 'l';
|
|||
|
+ }
|
|||
|
+ break;
|
|||
|
case 'M':
|
|||
|
if (ins->intel_mnemonic != cond)
|
|||
|
*ins->obufp++ = 'r';
|
|||
|
@@ -10346,6 +10719,19 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
case 'P':
|
|||
|
if (l == 0)
|
|||
|
{
|
|||
|
+ if (!cond && ins->last_rex2_prefix >= 0 && (ins->rex & REX_W))
|
|||
|
+ {
|
|||
|
+ /* For pushp and popp, p is printed and do not print {rex2}
|
|||
|
+ for them. */
|
|||
|
+ *ins->obufp++ = 'p';
|
|||
|
+ ins->rex2 |= REX2_SPECIAL;
|
|||
|
+ break;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ /* For "!P" print nothing else in Intel syntax. */
|
|||
|
+ if (!cond && ins->intel_syntax)
|
|||
|
+ break;
|
|||
|
+
|
|||
|
if ((ins->modrm.mod == 3 || !cond)
|
|||
|
&& !(sizeflag & SUFFIX_ALWAYS))
|
|||
|
break;
|
|||
|
@@ -10390,7 +10776,7 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
|
|||
|
if (ins->intel_syntax && !alt)
|
|||
|
break;
|
|||
|
USED_REX (REX_W);
|
|||
|
- if ((ins->need_modrm && ins->modrm.mod != 3)
|
|||
|
+ if ((ins->need_modrm && ins->modrm.mod != 3 && !ins->vex.nd)
|
|||
|
|| (sizeflag & SUFFIX_ALWAYS))
|
|||
|
{
|
|||
|
if (ins->rex & REX_W)
|
|||
|
@@ -10818,7 +11204,8 @@ print_displacement (instr_info *ins, bfd_signed_vma val)
|
|||
|
static void
|
|||
|
intel_operand_size (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
{
|
|||
|
- if (ins->vex.b)
|
|||
|
+ /* Check if there is a broadcast, when evex.b is not treated as evex.nd. */
|
|||
|
+ if (ins->vex.b && ins->evex_type == evex_default)
|
|||
|
{
|
|||
|
if (!ins->vex.no_broadcast)
|
|||
|
switch (bytemode)
|
|||
|
@@ -11088,6 +11475,8 @@ print_register (instr_info *ins, unsigned int reg, unsigned int rexmask,
|
|||
|
USED_REX (rexmask);
|
|||
|
if (ins->rex & rexmask)
|
|||
|
reg += 8;
|
|||
|
+ if (ins->rex2 & rexmask)
|
|||
|
+ reg += 16;
|
|||
|
|
|||
|
switch (bytemode)
|
|||
|
{
|
|||
|
@@ -11095,7 +11484,7 @@ print_register (instr_info *ins, unsigned int reg, unsigned int rexmask,
|
|||
|
case b_swap_mode:
|
|||
|
if (reg & 4)
|
|||
|
USED_REX (0);
|
|||
|
- if (ins->rex)
|
|||
|
+ if (ins->rex || ins->rex2)
|
|||
|
names = att_names8rex;
|
|||
|
else
|
|||
|
names = att_names8;
|
|||
|
@@ -11300,6 +11689,7 @@ OP_Skip_MODRM (instr_info *ins, int bytemode ATTRIBUTE_UNUSED,
|
|||
|
/* Skip mod/rm byte. */
|
|||
|
MODRM_CHECK;
|
|||
|
ins->codep++;
|
|||
|
+ ins->has_skipped_modrm = true;
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
@@ -11310,7 +11700,10 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
int riprel = 0;
|
|||
|
int shift;
|
|||
|
|
|||
|
- if (ins->vex.evex)
|
|||
|
+ add += (ins->rex2 & REX_B) ? 16 : 0;
|
|||
|
+
|
|||
|
+ /* Handles EVEX other than APX EVEX-promoted instructions. */
|
|||
|
+ if (ins->vex.evex && ins->evex_type == evex_default)
|
|||
|
{
|
|||
|
|
|||
|
/* Zeroing-masking is invalid for memory destinations. Set the flag
|
|||
|
@@ -11454,6 +11847,13 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
abort ();
|
|||
|
if (ins->vex.evex)
|
|||
|
{
|
|||
|
+ /* S/G EVEX insns require EVEX.X4 not to be set. */
|
|||
|
+ if (ins->rex2 & REX_X)
|
|||
|
+ {
|
|||
|
+ oappend (ins, "(bad)");
|
|||
|
+ return true;
|
|||
|
+ }
|
|||
|
+
|
|||
|
if (!ins->vex.v)
|
|||
|
vindex += 16;
|
|||
|
check_gather = ins->obufp == ins->op_out[1];
|
|||
|
@@ -11483,6 +11883,9 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
+ if (ins->rex2 & REX_X)
|
|||
|
+ vindex += 16;
|
|||
|
+
|
|||
|
if (vindex != 4)
|
|||
|
indexes = ins->address_mode == mode_64bit && !addr32flag
|
|||
|
? att_names64 : att_names32;
|
|||
|
@@ -11653,7 +12056,7 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
|
|||
|
if (ins->rex & REX_R)
|
|||
|
modrm_reg += 8;
|
|||
|
- if (!ins->vex.r)
|
|||
|
+ if (ins->rex2 & REX_R)
|
|||
|
modrm_reg += 16;
|
|||
|
if (vindex == modrm_reg)
|
|||
|
oappend (ins, "/(bad)");
|
|||
|
@@ -11735,7 +12138,7 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
print_operand_value (ins, disp & 0xffff, dis_style_text);
|
|||
|
}
|
|||
|
}
|
|||
|
- if (ins->vex.b)
|
|||
|
+ if (ins->vex.b && ins->evex_type == evex_default)
|
|||
|
{
|
|||
|
ins->evex_used |= EVEX_b_used;
|
|||
|
|
|||
|
@@ -11818,7 +12221,11 @@ OP_E (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
{
|
|||
|
/* Skip mod/rm byte. */
|
|||
|
MODRM_CHECK;
|
|||
|
- ins->codep++;
|
|||
|
+ if (!ins->has_skipped_modrm)
|
|||
|
+ {
|
|||
|
+ ins->codep++;
|
|||
|
+ ins->has_skipped_modrm = true;
|
|||
|
+ }
|
|||
|
|
|||
|
if (ins->modrm.mod == 3)
|
|||
|
{
|
|||
|
@@ -11855,10 +12262,7 @@ OP_indirE (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
static bool
|
|||
|
OP_G (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
{
|
|||
|
- if (ins->vex.evex && !ins->vex.r && ins->address_mode == mode_64bit)
|
|||
|
- oappend (ins, "(bad)");
|
|||
|
- else
|
|||
|
- print_register (ins, ins->modrm.reg, REX_R, bytemode, sizeflag);
|
|||
|
+ print_register (ins, ins->modrm.reg, REX_R, bytemode, sizeflag);
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
@@ -11866,7 +12270,7 @@ static bool
|
|||
|
OP_REG (instr_info *ins, int code, int sizeflag)
|
|||
|
{
|
|||
|
const char *s;
|
|||
|
- int add;
|
|||
|
+ int add = 0;
|
|||
|
|
|||
|
switch (code)
|
|||
|
{
|
|||
|
@@ -11879,8 +12283,8 @@ OP_REG (instr_info *ins, int code, int sizeflag)
|
|||
|
USED_REX (REX_B);
|
|||
|
if (ins->rex & REX_B)
|
|||
|
add = 8;
|
|||
|
- else
|
|||
|
- add = 0;
|
|||
|
+ if (ins->rex2 & REX_B)
|
|||
|
+ add += 16;
|
|||
|
|
|||
|
switch (code)
|
|||
|
{
|
|||
|
@@ -12011,6 +12415,8 @@ OP_I (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
case const_1_mode:
|
|||
|
if (ins->intel_syntax)
|
|||
|
oappend (ins, "1");
|
|||
|
+ else
|
|||
|
+ oappend (ins, "$1");
|
|||
|
return true;
|
|||
|
default:
|
|||
|
oappend (ins, INTERNAL_DISASSEMBLER_ERROR);
|
|||
|
@@ -12487,7 +12893,7 @@ OP_XMM (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
|
|||
|
reg += 8;
|
|||
|
if (ins->vex.evex)
|
|||
|
{
|
|||
|
- if (!ins->vex.r)
|
|||
|
+ if (ins->rex2 & REX_R)
|
|||
|
reg += 16;
|
|||
|
}
|
|||
|
|
|||
|
@@ -12592,6 +12998,8 @@ OP_EX (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
USED_REX (REX_B);
|
|||
|
if (ins->rex & REX_B)
|
|||
|
reg += 8;
|
|||
|
+ if (ins->rex2 & REX_B)
|
|||
|
+ reg += 16;
|
|||
|
if (ins->vex.evex)
|
|||
|
{
|
|||
|
USED_REX (REX_X);
|
|||
|
@@ -12623,9 +13031,10 @@ OP_R (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
{
|
|||
|
case d_mode:
|
|||
|
case dq_mode:
|
|||
|
+ case q_mode:
|
|||
|
case mask_mode:
|
|||
|
return OP_E (ins, bytemode, sizeflag);
|
|||
|
- case q_mode:
|
|||
|
+ case q_mm_mode:
|
|||
|
return OP_EM (ins, x_mode, sizeflag);
|
|||
|
case xmm_mode:
|
|||
|
if (ins->vex.length <= 128)
|
|||
|
@@ -13095,6 +13504,13 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
|
|||
|
if (!ins->need_vex)
|
|||
|
return true;
|
|||
|
|
|||
|
+ if (ins->evex_type == evex_from_legacy)
|
|||
|
+ {
|
|||
|
+ ins->evex_used |= EVEX_b_used;
|
|||
|
+ if (!ins->vex.nd)
|
|||
|
+ return true;
|
|||
|
+ }
|
|||
|
+
|
|||
|
reg = ins->vex.register_specifier;
|
|||
|
ins->vex.register_specifier = 0;
|
|||
|
if (ins->address_mode != mode_64bit)
|
|||
|
@@ -13186,12 +13602,22 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
|
|||
|
names = att_names_xmm;
|
|||
|
ins->evex_used |= EVEX_len_used;
|
|||
|
break;
|
|||
|
+ case v_mode:
|
|||
|
case dq_mode:
|
|||
|
if (ins->rex & REX_W)
|
|||
|
names = att_names64;
|
|||
|
+ else if (bytemode == v_mode
|
|||
|
+ && !(sizeflag & DFLAG))
|
|||
|
+ names = att_names16;
|
|||
|
else
|
|||
|
names = att_names32;
|
|||
|
break;
|
|||
|
+ case b_mode:
|
|||
|
+ names = att_names8rex;
|
|||
|
+ break;
|
|||
|
+ case q_mode:
|
|||
|
+ names = att_names64;
|
|||
|
+ break;
|
|||
|
case mask_bd_mode:
|
|||
|
case mask_mode:
|
|||
|
if (reg > 0x7)
|
|||
|
@@ -13491,7 +13917,7 @@ DistinctDest_Fixup (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
/* Calc destination register number. */
|
|||
|
if (ins->rex & REX_R)
|
|||
|
modrm_reg += 8;
|
|||
|
- if (!ins->vex.r)
|
|||
|
+ if (ins->rex2 & REX_R)
|
|||
|
modrm_reg += 16;
|
|||
|
|
|||
|
/* Calc src1 register number. */
|
|||
|
@@ -13576,3 +14002,58 @@ PREFETCHI_Fixup (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
|
|||
|
return OP_M (ins, bytemode, sizeflag);
|
|||
|
}
|
|||
|
+
|
|||
|
+static bool
|
|||
|
+PUSH2_POP2_Fixup (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
+{
|
|||
|
+ if (ins->modrm.mod != 3)
|
|||
|
+ return true;
|
|||
|
+
|
|||
|
+ unsigned int vvvv_reg = ins->vex.register_specifier
|
|||
|
+ | (!ins->vex.v << 4);
|
|||
|
+ unsigned int rm_reg = ins->modrm.rm + (ins->rex & REX_B ? 8 : 0)
|
|||
|
+ + (ins->rex2 & REX_B ? 16 : 0);
|
|||
|
+
|
|||
|
+ /* Push2/Pop2 cannot use RSP and Pop2 cannot pop two same registers. */
|
|||
|
+ if (!ins->vex.nd || vvvv_reg == 0x4 || rm_reg == 0x4
|
|||
|
+ || (!ins->modrm.reg
|
|||
|
+ && vvvv_reg == rm_reg))
|
|||
|
+ {
|
|||
|
+ oappend (ins, "(bad)");
|
|||
|
+ return true;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ return OP_VEX (ins, bytemode, sizeflag);
|
|||
|
+}
|
|||
|
+
|
|||
|
+static bool
|
|||
|
+JMPABS_Fixup (instr_info *ins, int bytemode, int sizeflag)
|
|||
|
+{
|
|||
|
+ if (ins->last_rex2_prefix >= 0)
|
|||
|
+ {
|
|||
|
+ uint64_t op;
|
|||
|
+
|
|||
|
+ if ((ins->prefixes & (PREFIX_OPCODE | PREFIX_ADDR | PREFIX_LOCK)) != 0x0
|
|||
|
+ || (ins->rex & REX_W) != 0x0)
|
|||
|
+ {
|
|||
|
+ oappend (ins, "(bad)");
|
|||
|
+ return true;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ if (bytemode == eAX_reg)
|
|||
|
+ return true;
|
|||
|
+
|
|||
|
+ if (!get64 (ins, &op))
|
|||
|
+ return false;
|
|||
|
+
|
|||
|
+ ins->mnemonicendp = stpcpy (ins->obuf, "jmpabs");
|
|||
|
+ ins->rex2 |= REX2_SPECIAL;
|
|||
|
+ oappend_immediate (ins, op);
|
|||
|
+
|
|||
|
+ return true;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ if (bytemode == eAX_reg)
|
|||
|
+ return OP_IMREG (ins, bytemode, sizeflag);
|
|||
|
+ return OP_OFF64 (ins, bytemode, sizeflag);
|
|||
|
+}
|
|||
|
diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c
|
|||
|
--- a/opcodes/i386-gen.c
|
|||
|
+++ b/opcodes/i386-gen.c
|
|||
|
@@ -1,4 +1,4 @@
|
|||
|
-/* Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
|||
|
+/* Copyright (C) 2007-2024 Free Software Foundation, Inc.
|
|||
|
|
|||
|
This file is part of the GNU opcodes library.
|
|||
|
|
|||
|
@@ -63,7 +63,7 @@ static const dependency isa_dependencies[] =
|
|||
|
{ "NOCONA",
|
|||
|
"GENERIC64|FISTTP|SSE3|MONITOR|CX16" },
|
|||
|
{ "CORE",
|
|||
|
- "P4|FISTTP|SSE3|MONITOR|CX16" },
|
|||
|
+ "P4|FISTTP|SSE3|MONITOR" },
|
|||
|
{ "CORE2",
|
|||
|
"NOCONA|SSSE3" },
|
|||
|
{ "COREI7",
|
|||
|
@@ -94,6 +94,8 @@ static const dependency isa_dependencies[] =
|
|||
|
"ZNVER2|INVLPGB|TLBSYNC|VAES|VPCLMULQDQ|INVPCID|SNP|OSPKE" },
|
|||
|
{ "ZNVER4",
|
|||
|
"ZNVER3|AVX512F|AVX512DQ|AVX512IFMA|AVX512CD|AVX512BW|AVX512VL|AVX512_BF16|AVX512VBMI|AVX512_VBMI2|AVX512_VNNI|AVX512_BITALG|AVX512_VPOPCNTDQ|GFNI|RMPQUERY" },
|
|||
|
+ { "ZNVER5",
|
|||
|
+ "ZNVER4|AVX_VNNI|MOVDIRI|MOVDIR64B|AVX512_VP2INTERSECT|PREFETCHI" },
|
|||
|
{ "BTVER1",
|
|||
|
"GENERIC64|FISTTP|MONITOR|CX16|LAHF_SAHF|Rdtscp|SSSE3|SSE4A|ABM|PRFCHW|Clflush|FISTTP|SVME" },
|
|||
|
{ "BTVER2",
|
|||
|
@@ -166,6 +168,10 @@ static const dependency isa_dependencies[] =
|
|||
|
"AVX2" },
|
|||
|
{ "AVX_NE_CONVERT",
|
|||
|
"AVX2" },
|
|||
|
+ { "CX16",
|
|||
|
+ "64" },
|
|||
|
+ { "LKGS",
|
|||
|
+ "64" },
|
|||
|
{ "FRED",
|
|||
|
"LKGS" },
|
|||
|
{ "AVX512F",
|
|||
|
@@ -240,13 +246,13 @@ static const dependency isa_dependencies[] =
|
|||
|
{ "SNP",
|
|||
|
"SEV_ES" },
|
|||
|
{ "RMPQUERY",
|
|||
|
- "SNP" },
|
|||
|
+ "SNP|64" },
|
|||
|
{ "TSX",
|
|||
|
"RTM|HLE" },
|
|||
|
{ "TSXLDTRK",
|
|||
|
"RTM" },
|
|||
|
{ "AMX_TILE",
|
|||
|
- "XSAVE" },
|
|||
|
+ "XSAVE|64" },
|
|||
|
{ "AMX_INT8",
|
|||
|
"AMX_TILE" },
|
|||
|
{ "AMX_BF16",
|
|||
|
@@ -259,6 +265,20 @@ static const dependency isa_dependencies[] =
|
|||
|
"SSE2" },
|
|||
|
{ "WIDEKL",
|
|||
|
"KL" },
|
|||
|
+ { "PBNDKB",
|
|||
|
+ "64" },
|
|||
|
+ { "UINTR",
|
|||
|
+ "64" },
|
|||
|
+ { "PREFETCHI",
|
|||
|
+ "64" },
|
|||
|
+ { "CMPCCXADD",
|
|||
|
+ "64" },
|
|||
|
+ { "MSRLIST",
|
|||
|
+ "64" },
|
|||
|
+ { "USER_MSR",
|
|||
|
+ "64" },
|
|||
|
+ { "APX_F",
|
|||
|
+ "XSAVE|64" },
|
|||
|
};
|
|||
|
|
|||
|
/* This array is populated as process_i386_initializers() walks cpu_flags[]. */
|
|||
|
@@ -380,6 +400,8 @@ static bitfield cpu_flags[] =
|
|||
|
BITFIELD (RAO_INT),
|
|||
|
BITFIELD (FRED),
|
|||
|
BITFIELD (LKGS),
|
|||
|
+ BITFIELD (USER_MSR),
|
|||
|
+ BITFIELD (APX_F),
|
|||
|
BITFIELD (MWAITX),
|
|||
|
BITFIELD (CLZERO),
|
|||
|
BITFIELD (OSPKE),
|
|||
|
@@ -463,12 +485,12 @@ static bitfield opcode_modifiers[] =
|
|||
|
BITFIELD (StaticRounding),
|
|||
|
BITFIELD (SAE),
|
|||
|
BITFIELD (Disp8MemShift),
|
|||
|
- BITFIELD (Vsz),
|
|||
|
BITFIELD (Optimize),
|
|||
|
- BITFIELD (ATTMnemonic),
|
|||
|
- BITFIELD (ATTSyntax),
|
|||
|
- BITFIELD (IntelSyntax),
|
|||
|
+ BITFIELD (Dialect),
|
|||
|
BITFIELD (ISA64),
|
|||
|
+ BITFIELD (NoEgpr),
|
|||
|
+ BITFIELD (NF),
|
|||
|
+ BITFIELD (Rex2),
|
|||
|
};
|
|||
|
|
|||
|
#define CLASS(n) #n, n
|
|||
|
@@ -587,7 +609,7 @@ static void
|
|||
|
process_copyright (FILE *fp)
|
|||
|
{
|
|||
|
fprintf (fp, "/* This file is automatically generated by i386-gen. Do not edit! */\n\
|
|||
|
-/* Copyright (C) 2007-2023 Free Software Foundation, Inc.\n\
|
|||
|
+/* Copyright (C) 2007-2024 Free Software Foundation, Inc.\n\
|
|||
|
\n\
|
|||
|
This file is part of the GNU opcodes library.\n\
|
|||
|
\n\
|
|||
|
@@ -771,8 +793,10 @@ add_isa_dependencies (bitfield *flags, const char *f, int value,
|
|||
|
}
|
|||
|
free (deps);
|
|||
|
|
|||
|
- /* ISA extensions with dependencies need CPU_ANY_*_FLAGS emitted. */
|
|||
|
- if (reverse < ARRAY_SIZE (isa_reverse_deps[0]))
|
|||
|
+ /* ISA extensions with dependencies need CPU_ANY_*_FLAGS emitted,
|
|||
|
+ unless the sole dependency is the "64-bit mode only" one. */
|
|||
|
+ if (reverse < ARRAY_SIZE (isa_reverse_deps[0])
|
|||
|
+ && strcmp (isa_dependencies[i].deps, "64"))
|
|||
|
isa_reverse_deps[reverse][reverse] = 1;
|
|||
|
|
|||
|
is_avx = orig_is_avx;
|
|||
|
@@ -787,15 +811,16 @@ add_isa_dependencies (bitfield *flags, const char *f, int value,
|
|||
|
|
|||
|
static void
|
|||
|
output_cpu_flags (FILE *table, bitfield *flags, unsigned int size,
|
|||
|
- int macro, const char *comma, const char *indent, int lineno)
|
|||
|
+ int mode, const char *comma, const char *indent, int lineno)
|
|||
|
{
|
|||
|
unsigned int i = 0, j = 0;
|
|||
|
|
|||
|
- memset (&active_cpu_flags, 0, sizeof(active_cpu_flags));
|
|||
|
+ if (mode < 0)
|
|||
|
+ memset (&active_cpu_flags, 0, sizeof(active_cpu_flags));
|
|||
|
|
|||
|
fprintf (table, "%s{ { ", indent);
|
|||
|
|
|||
|
- if (!macro)
|
|||
|
+ if (mode <= 0)
|
|||
|
{
|
|||
|
for (j = ~0u; i < CpuAttrEnums; i++)
|
|||
|
{
|
|||
|
@@ -806,7 +831,8 @@ output_cpu_flags (FILE *table, bitfield *flags, unsigned int size,
|
|||
|
fail ("%s: %d: invalid combination of CPU identifiers\n",
|
|||
|
filename, lineno);
|
|||
|
j = i;
|
|||
|
- active_cpu_flags.array[i / 32] |= 1U << (i % 32);
|
|||
|
+ if (mode)
|
|||
|
+ active_cpu_flags.array[i / 32] |= 1U << (i % 32);
|
|||
|
}
|
|||
|
|
|||
|
/* Write 0 to indicate "no associated flag". */
|
|||
|
@@ -824,16 +850,25 @@ output_cpu_flags (FILE *table, bitfield *flags, unsigned int size,
|
|||
|
if (((j + 1) % 20) == 0)
|
|||
|
{
|
|||
|
/* We need \\ for macro. */
|
|||
|
- if (macro)
|
|||
|
+ if (mode > 0)
|
|||
|
fprintf (table, " \\\n %s", indent);
|
|||
|
else
|
|||
|
fprintf (table, "\n %s", indent);
|
|||
|
}
|
|||
|
- if (flags[i].value)
|
|||
|
+ if (mode < 0 && flags[i].value)
|
|||
|
active_cpu_flags.array[i / 32] |= 1U << (i % 32);
|
|||
|
}
|
|||
|
|
|||
|
- fprintf (table, "%d } }%s\n", flags[i].value, comma);
|
|||
|
+#if defined(CpuAttrUnused) != defined(CpuUnused)
|
|||
|
+ if (mode <= 0)
|
|||
|
+# ifdef CpuUnused
|
|||
|
+ fprintf (table, " } }%s\n", comma);
|
|||
|
+# else
|
|||
|
+ fprintf (table, "%d, 0 } }%s\n", flags[i].value, comma);
|
|||
|
+# endif
|
|||
|
+ else
|
|||
|
+#endif
|
|||
|
+ fprintf (table, "%d } }%s\n", flags[i].value, comma);
|
|||
|
}
|
|||
|
|
|||
|
static void
|
|||
|
@@ -846,15 +881,17 @@ process_i386_cpu_flag (FILE *table, char *flag,
|
|||
|
unsigned int i;
|
|||
|
int value = 1;
|
|||
|
bool is_isa = false;
|
|||
|
- bitfield flags [ARRAY_SIZE (cpu_flags)];
|
|||
|
+ bitfield all [ARRAY_SIZE (cpu_flags)];
|
|||
|
+ bitfield any [ARRAY_SIZE (cpu_flags)];
|
|||
|
|
|||
|
/* Copy the default cpu flags. */
|
|||
|
- memcpy (flags, cpu_flags, sizeof (cpu_flags));
|
|||
|
+ memcpy (all, cpu_flags, sizeof (cpu_flags));
|
|||
|
+ memcpy (any, cpu_flags, sizeof (cpu_flags));
|
|||
|
|
|||
|
if (flag == NULL)
|
|||
|
{
|
|||
|
for (i = 0; i < ARRAY_SIZE (isa_reverse_deps[0]); ++i)
|
|||
|
- flags[i].value = isa_reverse_deps[reverse][i];
|
|||
|
+ any[i].value = isa_reverse_deps[reverse][i];
|
|||
|
goto output;
|
|||
|
}
|
|||
|
|
|||
|
@@ -876,9 +913,9 @@ process_i386_cpu_flag (FILE *table, char *flag,
|
|||
|
|
|||
|
/* First we turn on everything except for cpuno64 and - if
|
|||
|
present - the padding field. */
|
|||
|
- for (i = 0; i < ARRAY_SIZE (flags); i++)
|
|||
|
- if (flags[i].position < CpuNo64)
|
|||
|
- flags[i].value = 1;
|
|||
|
+ for (i = 0; i < ARRAY_SIZE (any); i++)
|
|||
|
+ if (any[i].position < CpuNo64)
|
|||
|
+ any[i].value = 1;
|
|||
|
|
|||
|
/* Turn off selective bits. */
|
|||
|
value = 0;
|
|||
|
@@ -886,10 +923,10 @@ process_i386_cpu_flag (FILE *table, char *flag,
|
|||
|
|
|||
|
if (name != NULL && value != 0)
|
|||
|
{
|
|||
|
- for (i = 0; i < ARRAY_SIZE (flags); i++)
|
|||
|
- if (strcasecmp (flags[i].name, name) == 0)
|
|||
|
+ for (i = 0; i < ARRAY_SIZE (any); i++)
|
|||
|
+ if (strcasecmp (any[i].name, name) == 0)
|
|||
|
{
|
|||
|
- add_isa_dependencies (flags, name, 1, reverse);
|
|||
|
+ add_isa_dependencies (any, name, 1, reverse);
|
|||
|
is_isa = true;
|
|||
|
break;
|
|||
|
}
|
|||
|
@@ -897,18 +934,40 @@ process_i386_cpu_flag (FILE *table, char *flag,
|
|||
|
|
|||
|
if (strcmp (flag, "0"))
|
|||
|
{
|
|||
|
+ bool combined = false;
|
|||
|
+
|
|||
|
if (is_isa)
|
|||
|
return;
|
|||
|
|
|||
|
/* Turn on/off selective bits. */
|
|||
|
last = flag + strlen (flag);
|
|||
|
+ if (name == NULL && strchr (flag, '&'))
|
|||
|
+ {
|
|||
|
+ for (; next < last && *next != '('; )
|
|||
|
+ {
|
|||
|
+ str = next_field (next, '&', &next, last);
|
|||
|
+ set_bitfield (str, all, value, ARRAY_SIZE (all), lineno);
|
|||
|
+ }
|
|||
|
+ if (*next == '(')
|
|||
|
+ {
|
|||
|
+ if (*--last != ')')
|
|||
|
+ fail ("%s: %d: missing `)' in bitfield: %s\n", filename,
|
|||
|
+ lineno, flag);
|
|||
|
+ ++next;
|
|||
|
+ *last = '\0';
|
|||
|
+ }
|
|||
|
+ combined = true;
|
|||
|
+ }
|
|||
|
for (; next && next < last; )
|
|||
|
{
|
|||
|
str = next_field (next, '|', &next, last);
|
|||
|
- if (name == NULL)
|
|||
|
- set_bitfield (str, flags, value, ARRAY_SIZE (flags), lineno);
|
|||
|
- else
|
|||
|
- add_isa_dependencies (flags, str, value, reverse);
|
|||
|
+ if (name)
|
|||
|
+ add_isa_dependencies (any, str, value, reverse);
|
|||
|
+ else if (combined || next < last)
|
|||
|
+ set_bitfield (str, any, value, ARRAY_SIZE (any), lineno);
|
|||
|
+ else /* Singular specifiers go into "all". */
|
|||
|
+ set_bitfield (str, all, value, ARRAY_SIZE (all), lineno);
|
|||
|
+ combined = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@@ -918,6 +977,15 @@ process_i386_cpu_flag (FILE *table, char *flag,
|
|||
|
size_t len = strlen (name);
|
|||
|
char *upper = xmalloc (len + 1);
|
|||
|
|
|||
|
+ /* Cpu64 is special: It specifies a mode dependency, not an ISA one. Zap
|
|||
|
+ the flag from ISA initializer macros (and from CPU_ANY_64_FLAGS
|
|||
|
+ itself we only care about tracking its dependents. Also don't emit the
|
|||
|
+ (otherwise all zero) CPU_64_FLAGS. */
|
|||
|
+ if (flag != NULL && reverse == Cpu64)
|
|||
|
+ return;
|
|||
|
+ if (is_isa || flag == NULL)
|
|||
|
+ any[Cpu64].value = 0;
|
|||
|
+
|
|||
|
for (i = 0; i < len; ++i)
|
|||
|
{
|
|||
|
/* Don't emit #define-s for auxiliary entries. */
|
|||
|
@@ -930,8 +998,18 @@ process_i386_cpu_flag (FILE *table, char *flag,
|
|||
|
flag != NULL ? "": "ANY_", upper);
|
|||
|
free (upper);
|
|||
|
}
|
|||
|
+ else
|
|||
|
+ {
|
|||
|
+ /* Synthesize "64-bit mode only" dependencies from the dependencies we
|
|||
|
+ have accumulated. */
|
|||
|
+ for (i = 0; i < ARRAY_SIZE (isa_reverse_deps[0]); ++i)
|
|||
|
+ if (all[i].value && isa_reverse_deps[Cpu64][i])
|
|||
|
+ all[Cpu64].value = 1;
|
|||
|
+
|
|||
|
+ output_cpu_flags(table, all, ARRAY_SIZE (all), -1, comma, indent, lineno);
|
|||
|
+ }
|
|||
|
|
|||
|
- output_cpu_flags (table, flags, ARRAY_SIZE (flags), name != NULL,
|
|||
|
+ output_cpu_flags (table, any, ARRAY_SIZE (any), name != NULL,
|
|||
|
comma, indent, lineno);
|
|||
|
}
|
|||
|
|
|||
|
@@ -1008,10 +1086,44 @@ get_element_size (char **opnd, int lineno)
|
|||
|
return elem_size;
|
|||
|
}
|
|||
|
|
|||
|
+static bool
|
|||
|
+rex2_disallowed (const unsigned long long opcode, unsigned int length,
|
|||
|
+ unsigned int space, const char *cpu_flags)
|
|||
|
+{
|
|||
|
+ /* Some opcodes encode a ModR/M-like byte directly in the opcode. */
|
|||
|
+ unsigned int base_opcode = opcode >> (8 * length - 8);
|
|||
|
+
|
|||
|
+ /* All opcodes listed map0 0x4*, 0x7*, 0xa*, 0xe* and map1 0x3*, 0x8*
|
|||
|
+ are reserved under REX2 and triggers #UD when prefixed with REX2 */
|
|||
|
+ if (space == 0)
|
|||
|
+ switch (base_opcode >> 4)
|
|||
|
+ {
|
|||
|
+ case 0x4:
|
|||
|
+ case 0x7:
|
|||
|
+ case 0xA:
|
|||
|
+ case 0xE:
|
|||
|
+ return true;
|
|||
|
+ default:
|
|||
|
+ return false;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ if (space == SPACE_0F)
|
|||
|
+ switch (base_opcode >> 4)
|
|||
|
+ {
|
|||
|
+ case 0x3:
|
|||
|
+ case 0x8:
|
|||
|
+ return true;
|
|||
|
+ default:
|
|||
|
+ return false;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+ return false;
|
|||
|
+}
|
|||
|
+
|
|||
|
static void
|
|||
|
process_i386_opcode_modifier (FILE *table, char *mod, unsigned int space,
|
|||
|
unsigned int prefix, const char *extension_opcode,
|
|||
|
- char **opnd, int lineno)
|
|||
|
+ char **opnd, int lineno, bool rex2_disallowed)
|
|||
|
{
|
|||
|
char *str, *next, *last;
|
|||
|
bitfield modifiers [ARRAY_SIZE (opcode_modifiers)];
|
|||
|
@@ -1021,8 +1133,10 @@ process_i386_opcode_modifier (FILE *table, char *mod, unsigned int space,
|
|||
|
SPACE(0F),
|
|||
|
SPACE(0F38),
|
|||
|
SPACE(0F3A),
|
|||
|
+ SPACE(EVEXMAP4),
|
|||
|
SPACE(EVEXMAP5),
|
|||
|
SPACE(EVEXMAP6),
|
|||
|
+ SPACE(VEXMAP7),
|
|||
|
SPACE(XOP08),
|
|||
|
SPACE(XOP09),
|
|||
|
SPACE(XOP0A),
|
|||
|
@@ -1127,6 +1241,22 @@ process_i386_opcode_modifier (FILE *table, char *mod, unsigned int space,
|
|||
|
fprintf (table, " SPACE_%s, %s,\n",
|
|||
|
spaces[space], extension_opcode ? extension_opcode : "None");
|
|||
|
|
|||
|
+ /* Rather than evaluating multiple conditions at runtime to determine
|
|||
|
+ whether an EVEX encoding is being dealt with, derive that information
|
|||
|
+ right here. A missing EVex attribute means "dynamic". */
|
|||
|
+ if (!modifiers[EVex].value
|
|||
|
+ && (modifiers[Disp8MemShift].value
|
|||
|
+ || modifiers[Broadcast].value
|
|||
|
+ || modifiers[Masking].value
|
|||
|
+ || modifiers[SAE].value))
|
|||
|
+ modifiers[EVex].value = EVEXDYN;
|
|||
|
+
|
|||
|
+ /* Vex, legacy map2 and map3 and rex2_disallowed do not support EGPR.
|
|||
|
+ For templates supporting both Vex and EVex allowing EGPR. */
|
|||
|
+ if ((modifiers[Vex].value || space > SPACE_0F || rex2_disallowed)
|
|||
|
+ && !modifiers[EVex].value)
|
|||
|
+ modifiers[NoEgpr].value = 1;
|
|||
|
+
|
|||
|
output_opcode_modifier (table, modifiers, ARRAY_SIZE (modifiers));
|
|||
|
}
|
|||
|
|
|||
|
@@ -1351,7 +1481,9 @@ output_i386_opcode (FILE *table, const char *name, char *str,
|
|||
|
free (ident);
|
|||
|
|
|||
|
process_i386_opcode_modifier (table, opcode_modifier, space, prefix,
|
|||
|
- extension_opcode, operand_types, lineno);
|
|||
|
+ extension_opcode, operand_types, lineno,
|
|||
|
+ rex2_disallowed (opcode, length, space,
|
|||
|
+ cpu_flags));
|
|||
|
|
|||
|
process_i386_cpu_flag (table, cpu_flags, NULL, ",", " ", lineno, CpuMax);
|
|||
|
|
|||
|
@@ -1406,10 +1538,10 @@ opcode_hash_eq (const void *p, const void *q)
|
|||
|
return strcmp (name, entry->name) == 0;
|
|||
|
}
|
|||
|
|
|||
|
-static void
|
|||
|
+static bool
|
|||
|
parse_template (char *buf, int lineno)
|
|||
|
{
|
|||
|
- char sep, *end, *name;
|
|||
|
+ char sep, *end, *ptr;
|
|||
|
struct template *tmpl;
|
|||
|
struct template_instance *last_inst = NULL;
|
|||
|
|
|||
|
@@ -1436,8 +1568,16 @@ parse_template (char *buf, int lineno)
|
|||
|
prev->next = tmpl->next;
|
|||
|
else
|
|||
|
templates = tmpl->next;
|
|||
|
- return;
|
|||
|
+ return true;
|
|||
|
}
|
|||
|
+
|
|||
|
+ /* Check whether this actually is a reference to an existing template:
|
|||
|
+ If there's '>' ahead of ':', it can't be a new template definition
|
|||
|
+ (and template undefs have are dealt with above). */
|
|||
|
+ ptr = strchr (buf, '>');
|
|||
|
+ if (ptr != NULL && ptr < end)
|
|||
|
+ return false;
|
|||
|
+
|
|||
|
*end++ = '\0';
|
|||
|
remove_trailing_whitespaces (buf);
|
|||
|
|
|||
|
@@ -1512,6 +1652,8 @@ parse_template (char *buf, int lineno)
|
|||
|
|
|||
|
tmpl->next = templates;
|
|||
|
templates = tmpl;
|
|||
|
+
|
|||
|
+ return true;
|
|||
|
}
|
|||
|
|
|||
|
static unsigned int
|
|||
|
@@ -1768,10 +1910,12 @@ process_i386_opcodes (FILE *table)
|
|||
|
/* Ignore comments. */
|
|||
|
case '\0':
|
|||
|
continue;
|
|||
|
- break;
|
|||
|
+
|
|||
|
case '<':
|
|||
|
- parse_template (p, lineno);
|
|||
|
- continue;
|
|||
|
+ if (parse_template (p, lineno))
|
|||
|
+ continue;
|
|||
|
+ break;
|
|||
|
+
|
|||
|
default:
|
|||
|
if (!marker)
|
|||
|
continue;
|
|||
|
@@ -1808,23 +1952,26 @@ process_i386_opcodes (FILE *table)
|
|||
|
|
|||
|
/* Generate opcode sets array. */
|
|||
|
fprintf (table, "\n/* i386 opcode sets table. */\n\n");
|
|||
|
- fprintf (table, "static const insn_template *const i386_op_sets[] =\n{\n");
|
|||
|
- fprintf (table, " i386_optab,\n");
|
|||
|
+ fprintf (table, "typedef unsigned short i386_op_off_t;\n");
|
|||
|
+ fprintf (table, "static const i386_op_off_t i386_op_sets[] =\n{\n ");
|
|||
|
|
|||
|
for (nr = j = 0; j < i; j++)
|
|||
|
{
|
|||
|
struct opcode_entry *next = &opcode_array[j]->entry;
|
|||
|
|
|||
|
+ if ((j + 1) % 8 != 0)
|
|||
|
+ fprintf (table, "%5u,", nr);
|
|||
|
+ else
|
|||
|
+ fprintf (table, "%5u,\n ", nr);
|
|||
|
do
|
|||
|
{
|
|||
|
++nr;
|
|||
|
next = next->next;
|
|||
|
}
|
|||
|
while (next);
|
|||
|
- fprintf (table, " i386_optab + %u,\n", nr);
|
|||
|
}
|
|||
|
|
|||
|
- fprintf (table, "};\n");
|
|||
|
+ fprintf (table, "%5u\n};\n", nr);
|
|||
|
|
|||
|
/* Emit mnemonics and associated #define-s. */
|
|||
|
qsort (opcode_array, i, sizeof (*opcode_array), mnemonic_cmp);
|
|||
|
@@ -2140,6 +2287,8 @@ main (int argc, char **argv)
|
|||
|
qsort (operand_types, ARRAY_SIZE (operand_types),
|
|||
|
sizeof (operand_types [0]), compare);
|
|||
|
|
|||
|
+ process_i386_initializers ();
|
|||
|
+
|
|||
|
table = fopen ("i386-tbl.h", "w");
|
|||
|
if (table == NULL)
|
|||
|
fail ("can't create i386-tbl.h, errno = %s\n",
|
|||
|
@@ -2149,7 +2298,6 @@ main (int argc, char **argv)
|
|||
|
|
|||
|
process_i386_opcodes (table);
|
|||
|
process_i386_registers (table);
|
|||
|
- process_i386_initializers ();
|
|||
|
|
|||
|
fclose (table);
|
|||
|
|
|||
|
diff --git a/opcodes/i386-init.h b/opcodes/i386-init.h
|
|||
|
--- a/opcodes/i386-init.h
|
|||
|
+++ b/opcodes/i386-init.h
|
|||
|
@@ -1,5 +1,5 @@
|
|||
|
/* This file is automatically generated by i386-gen. Do not edit! */
|
|||
|
-/* Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
|||
|
+/* Copyright (C) 2007-2024 Free Software Foundation, Inc.
|
|||
|
|
|||
|
This file is part of the GNU opcodes library.
|
|||
|
|
|||
|
@@ -26,7 +26,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_286_FLAGS \
|
|||
|
{ { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -36,7 +36,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_386_FLAGS \
|
|||
|
{ { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -46,7 +46,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_486_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -56,7 +56,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_586_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -65,8 +65,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_686_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -75,8 +75,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CMOV_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -86,7 +86,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_FXSR_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -96,7 +96,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CLFLUSH_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -106,7 +106,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_NOP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -116,7 +116,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SYSCALL_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -126,7 +126,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_8087_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -136,7 +136,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_687_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -145,8 +145,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_FISTTP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -155,8 +155,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MMX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -166,7 +166,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SSE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
@@ -176,7 +176,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SSE2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
@@ -186,7 +186,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SSE3_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -196,7 +196,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PADLOCK_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
@@ -206,7 +206,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SVME_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
@@ -216,7 +216,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_VMX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -226,7 +226,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SMX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -236,7 +236,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SSSE3_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -246,7 +246,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SSE4A_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -256,7 +256,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_LZCNT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -266,7 +266,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_POPCNT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -276,7 +276,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MONITOR_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -286,7 +286,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SSE4_1_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -296,7 +296,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SSE4_2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -306,7 +306,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -315,8 +315,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512CD_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -325,8 +325,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512ER_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -335,8 +335,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512PF_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -345,8 +345,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512DQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -355,8 +355,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512BW_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -365,8 +365,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_IAMCU_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -376,7 +376,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_XSAVE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -386,7 +386,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_XSAVEOPT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -396,7 +396,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
@@ -406,7 +406,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PCLMULQDQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
@@ -416,7 +416,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_FMA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -425,8 +425,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_FMA4_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -435,8 +435,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_XOP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -445,8 +445,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_LWP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -456,7 +456,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BMI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -466,7 +466,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_TBM_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -476,7 +476,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MOVBE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -486,7 +486,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CX16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -496,7 +496,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_LAHF_SAHF_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -506,7 +506,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_EPT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -516,7 +516,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RDTSCP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -526,7 +526,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_FSGSBASE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -536,7 +536,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RDRND_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -546,7 +546,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_F16C_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -555,8 +555,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BMI2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -566,7 +566,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RTM_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -576,7 +576,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_INVPCID_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -586,7 +586,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_VMFUNC_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -596,7 +596,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MPX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -606,7 +606,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RDSEED_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -616,7 +616,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ADX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -626,7 +626,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PRFCHW_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -636,7 +636,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SMAP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -646,7 +646,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SHA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
@@ -656,7 +656,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SHA512_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -665,8 +665,8 @@
|
|||
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SM3_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -675,8 +675,8 @@
|
|||
|
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SM4_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -685,8 +685,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CLFLUSHOPT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -696,7 +696,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_XSAVES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -706,7 +706,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_XSAVEC_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -716,7 +716,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PREFETCHWT1_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -726,7 +726,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SE1_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -736,7 +736,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CLWB_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -746,7 +746,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512IFMA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -755,8 +755,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512VBMI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -765,8 +765,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_4FMAPS_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -775,8 +775,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_4VNNIW_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -785,8 +785,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_VPOPCNTDQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -795,8 +795,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_VBMI2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -805,8 +805,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_VNNI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -815,8 +815,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_BITALG_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -825,8 +825,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_BF16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -835,8 +835,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_VP2INTERSECT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -845,8 +845,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_TDX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -856,7 +856,7 @@
|
|||
|
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX_VNNI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -865,8 +865,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512_FP16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -875,8 +875,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PREFETCHI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -886,7 +886,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX_IFMA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -895,8 +895,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX_VNNI_INT8_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -905,8 +905,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX_VNNI_INT16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -915,8 +915,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CMPCCXADD_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -926,7 +926,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_WRMSRNS_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -936,7 +936,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MSRLIST_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -946,7 +946,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX_NE_CONVERT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -955,8 +955,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RAO_INT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -966,7 +966,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_FRED_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -976,7 +976,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_LKGS_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -986,9 +986,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
-#define CPU_MWAITX_FLAGS \
|
|||
|
+#define CPU_USER_MSR_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -996,9 +996,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
-#define CPU_CLZERO_FLAGS \
|
|||
|
+#define CPU_MWAITX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1006,17 +1006,27 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
+
|
|||
|
+#define CPU_CLZERO_FLAGS \
|
|||
|
+ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_OSPKE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RDPID_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1024,9 +1034,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PTWRITE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1034,9 +1044,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_IBT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1044,9 +1054,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SHSTK_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1054,9 +1064,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AMX_INT8_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1064,9 +1074,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AMX_BF16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1074,9 +1084,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AMX_FP16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1084,9 +1094,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AMX_COMPLEX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1094,9 +1104,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AMX_TILE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1104,9 +1114,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_GFNI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
@@ -1114,9 +1124,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_VAES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1124,9 +1134,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_VPCLMULQDQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1134,9 +1144,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_WBNOINVD_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1144,9 +1154,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PCONFIG_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1154,9 +1164,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PBNDKB_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1164,9 +1174,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_WAITPKG_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1174,9 +1184,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_UINTR_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1184,9 +1194,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CLDEMOTE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1194,9 +1204,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MOVDIRI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1204,9 +1214,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MOVDIR64B_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1214,9 +1224,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ENQCMD_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1225,8 +1235,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SERIALIZE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1235,8 +1245,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RDPRU_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1245,8 +1255,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_MCOMMIT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1255,8 +1265,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SEV_ES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
@@ -1265,8 +1275,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_TSXLDTRK_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1275,8 +1285,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_KL_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
@@ -1285,8 +1295,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_WIDEKL_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
@@ -1295,8 +1305,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_HRESET_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1305,8 +1315,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_INVLPGB_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1315,8 +1325,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_TLBSYNC_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1325,8 +1335,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_SNP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
@@ -1335,8 +1345,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_RMPQUERY_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
@@ -1345,8 +1355,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_287_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1355,8 +1365,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_387_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1365,8 +1375,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_3DNOW_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1375,8 +1385,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_3DNOWA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1385,18 +1395,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
-
|
|||
|
-#define CPU_64_FLAGS \
|
|||
|
- { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1405,8 +1405,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_HLE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1415,8 +1415,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 1, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512F_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1425,8 +1425,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX512VL_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1435,8 +1435,18 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 1, 0, 0, 0 } }
|
|||
|
+
|
|||
|
+#define CPU_APX_F_FLAGS \
|
|||
|
+ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 1, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_UNKNOWN_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|||
|
@@ -1446,7 +1456,7 @@
|
|||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 1, 1, 1, 1, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_GENERIC32_FLAGS \
|
|||
|
{ { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1456,7 +1466,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_GENERIC64_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, \
|
|||
|
@@ -1465,8 +1475,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_NONE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1476,7 +1486,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_PENTIUMPRO_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1485,8 +1495,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_P2_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1495,8 +1505,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_P3_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, \
|
|||
|
@@ -1505,8 +1515,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_P4_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, \
|
|||
|
@@ -1515,8 +1525,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_NOCONA_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1525,18 +1535,18 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CORE_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_CORE2_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1545,8 +1555,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_COREI7_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1555,8 +1565,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_K6_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1565,8 +1575,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_K6_2_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1575,8 +1585,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ATHLON_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1585,8 +1595,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_K8_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, \
|
|||
|
@@ -1595,8 +1605,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AMDFAM10_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1605,8 +1615,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BDVER1_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
@@ -1615,8 +1625,8 @@
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BDVER2_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
@@ -1625,8 +1635,8 @@
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BDVER3_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
@@ -1635,58 +1645,68 @@
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BDVER4_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, \
|
|||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, \
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ZNVER1_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, \
|
|||
|
1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, \
|
|||
|
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ZNVER2_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, \
|
|||
|
1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, \
|
|||
|
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
|
|||
|
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, \
|
|||
|
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ZNVER3_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, \
|
|||
|
1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, \
|
|||
|
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, \
|
|||
|
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, \
|
|||
|
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ZNVER4_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, \
|
|||
|
1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, \
|
|||
|
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, \
|
|||
|
- 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, \
|
|||
|
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, \
|
|||
|
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 1, 1, 0, 0, 0 } }
|
|||
|
+
|
|||
|
+#define CPU_ZNVER5_FLAGS \
|
|||
|
+ { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, \
|
|||
|
+ 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, \
|
|||
|
+ 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, \
|
|||
|
+ 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, \
|
|||
|
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 1, 1, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BTVER1_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
@@ -1695,8 +1715,8 @@
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_BTVER2_FLAGS \
|
|||
|
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, \
|
|||
|
@@ -1705,8 +1725,8 @@
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ABM_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1716,7 +1736,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_AVX10_1_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1725,8 +1745,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, \
|
|||
|
1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 1, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_TSX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1735,8 +1755,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 1, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_FXSR_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1744,9 +1764,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_8087_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1755,8 +1775,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_687_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1766,7 +1786,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_FISTTP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1776,7 +1796,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_MMX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1785,8 +1805,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SSE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
@@ -1794,9 +1814,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SSE2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, \
|
|||
|
@@ -1804,9 +1824,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SSE3_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
@@ -1816,7 +1836,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SVME_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
@@ -1825,8 +1845,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_VMX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1836,7 +1856,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SSSE3_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1846,7 +1866,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SSE4A_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1856,7 +1876,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SSE4_1_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1866,7 +1886,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SSE4_2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1876,7 +1896,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1884,9 +1904,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, \
|
|||
|
1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 0, 1, 1, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512CD_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1896,7 +1916,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512ER_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1906,7 +1926,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512PF_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1916,7 +1936,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512DQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1926,7 +1946,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512BW_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1936,7 +1956,7 @@
|
|||
|
1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_IAMCU_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1946,17 +1966,17 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_XSAVE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, \
|
|||
|
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
|
|||
|
0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, \
|
|||
|
- 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, \
|
|||
|
- 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 1, 1, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_XSAVEOPT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1966,7 +1986,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1974,9 +1994,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_PCLMULQDQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1984,9 +2004,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_FMA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -1996,7 +2016,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_FMA4_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2006,7 +2026,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_XOP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2016,7 +2036,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_LWP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2026,7 +2046,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_EPT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2036,7 +2056,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_F16C_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2046,7 +2066,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_RTM_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2055,8 +2075,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_VMFUNC_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2066,7 +2086,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_MPX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2076,7 +2096,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SHA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2086,7 +2106,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SHA512_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2096,7 +2116,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SM3_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2106,7 +2126,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SM4_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2116,7 +2136,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_XSAVES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2126,7 +2146,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_XSAVEC_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2136,7 +2156,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512IFMA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2146,7 +2166,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512VBMI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2156,7 +2176,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_4FMAPS_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2166,7 +2186,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_4VNNIW_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2176,7 +2196,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_VPOPCNTDQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2186,7 +2206,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_VBMI2_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2196,7 +2216,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_VNNI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2206,7 +2226,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_BITALG_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2216,7 +2236,7 @@
|
|||
|
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_BF16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2226,7 +2246,7 @@
|
|||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_VP2INTERSECT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2236,7 +2256,7 @@
|
|||
|
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX_VNNI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2246,7 +2266,7 @@
|
|||
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512_FP16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2256,7 +2276,7 @@
|
|||
|
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX_IFMA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2266,7 +2286,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX_VNNI_INT8_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2276,7 +2296,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX_VNNI_INT16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2286,7 +2306,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX_NE_CONVERT_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2296,7 +2316,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_FRED_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2306,7 +2326,7 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_LKGS_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2316,17 +2336,17 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_OSPKE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AMX_INT8_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2334,9 +2354,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AMX_BF16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2344,9 +2364,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AMX_FP16_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2354,9 +2374,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AMX_COMPLEX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2364,9 +2384,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AMX_TILE_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2374,9 +2394,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_GFNI_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2384,9 +2404,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_VAES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2394,9 +2414,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_VPCLMULQDQ_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2404,9 +2424,9 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SEV_ES_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2415,8 +2435,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_TSXLDTRK_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2425,8 +2445,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_KL_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2435,8 +2455,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_WIDEKL_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2445,8 +2465,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_SNP_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2455,8 +2475,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_RMPQUERY_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2465,8 +2485,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_287_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2475,8 +2495,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_387_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2485,8 +2505,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_3DNOW_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2495,8 +2515,8 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_3DNOWA_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2505,8 +2525,18 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0 } }
|
|||
|
+
|
|||
|
+#define CPU_ANY_64_FLAGS \
|
|||
|
+ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 1, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2514,9 +2544,9 @@
|
|||
|
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, \
|
|||
|
1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|||
|
+ 0, 1, 1, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512F_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2526,7 +2556,7 @@
|
|||
|
1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 1, 1, 0, 0 } }
|
|||
|
+ 0, 1, 1, 0, 0, 0 } }
|
|||
|
|
|||
|
#define CPU_ANY_AVX512VL_FLAGS \
|
|||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
@@ -2536,5 +2566,15 @@
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
- 0, 1, 0, 0 } }
|
|||
|
+ 0, 0, 1, 0, 0, 0 } }
|
|||
|
+
|
|||
|
+#define CPU_ANY_APX_F_FLAGS \
|
|||
|
+ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|||
|
+ 0, 0, 0, 1, 0, 0 } }
|
|||
|
|
|||
|
diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
|
|||
|
--- a/opcodes/i386-opc.tbl
|
|||
|
+++ b/opcodes/i386-opc.tbl
|
|||
|
@@ -1,5 +1,5 @@
|
|||
|
// i386 opcode table.
|
|||
|
-// Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
|||
|
+// Copyright (C) 2007-2024 Free Software Foundation, Inc.
|
|||
|
//
|
|||
|
// This file is part of the GNU opcodes library.
|
|||
|
//
|
|||
|
@@ -85,6 +85,11 @@
|
|||
|
#define RegKludge OperandConstraint=REG_KLUDGE
|
|||
|
#define SwapSources OperandConstraint=SWAP_SOURCES
|
|||
|
#define Ugh OperandConstraint=UGH
|
|||
|
+#define ImplicitStackOp OperandConstraint=IMPLICIT_STACK_OP
|
|||
|
+
|
|||
|
+#define ATTSyntax Dialect=ATT_SYNTAX
|
|||
|
+#define ATTMnemonic Dialect=ATT_MNEMONIC
|
|||
|
+#define IntelSyntax Dialect=INTEL_SYNTAX
|
|||
|
|
|||
|
#define IgnoreSize MnemonicSize=IGNORESIZE
|
|||
|
#define DefaultSize MnemonicSize=DEFAULTSIZE
|
|||
|
@@ -109,9 +114,12 @@
|
|||
|
#define SpaceXOP09 OpcodeSpace=SPACE_XOP09
|
|||
|
#define SpaceXOP0A OpcodeSpace=SPACE_XOP0A
|
|||
|
|
|||
|
+#define EVexMap4 OpcodeSpace=SPACE_EVEXMAP4|EVex128
|
|||
|
#define EVexMap5 OpcodeSpace=SPACE_EVEXMAP5
|
|||
|
#define EVexMap6 OpcodeSpace=SPACE_EVEXMAP6
|
|||
|
|
|||
|
+#define VexMap7 OpcodeSpace=SPACE_VEXMAP7
|
|||
|
+
|
|||
|
#define VexW0 VexW=VEXW0
|
|||
|
#define VexW1 VexW=VEXW1
|
|||
|
#define VexWIG VexW=VEXWIG
|
|||
|
@@ -133,12 +141,22 @@
|
|||
|
|
|||
|
#define Disp8ShiftVL Disp8MemShift=DISP8_SHIFT_VL
|
|||
|
|
|||
|
-#define Vsz256 Vsz=VSZ256
|
|||
|
-#define Vsz512 Vsz=VSZ512
|
|||
|
+#define DstVVVV VexVVVV=VexVVVV_DST
|
|||
|
+
|
|||
|
+// The template supports VEX format for cpuid and EVEX format for cpuid & APX_F.
|
|||
|
+// While therefore we really mean cpuid|(cpuid&APX_F) here, this can't be
|
|||
|
+// expressed in the generated templates. It's equivalent to just cpuid|APX_F
|
|||
|
+// anyway, but that is not what we want (as APX_F alone isn't a sufficient
|
|||
|
+// prereq for such insns). Instead the assembler will massage the CPU specifier
|
|||
|
+// to the equivalent of either cpuid&(cpuid) or cpuid&(APX_F) (or something
|
|||
|
+// substantially similar), depending on what encoding was requested.
|
|||
|
+#define APX_F(cpuid) cpuid&(cpuid|APX_F)
|
|||
|
|
|||
|
// The EVEX purpose of StaticRounding appears only together with SAE. Re-use
|
|||
|
// the bit to mark commutative VEX encodings where swapping the source
|
|||
|
// operands may allow to switch from 3-byte to 2-byte VEX encoding.
|
|||
|
+// And re-use the bit to mark some NDD insns that swapping the source operands
|
|||
|
+// may allow to switch from EVEX encoding to REX2 encoding.
|
|||
|
#define C StaticRounding
|
|||
|
|
|||
|
#define FP 387|287|8087
|
|||
|
@@ -156,6 +174,8 @@
|
|||
|
#define i287 287
|
|||
|
#define i387 387
|
|||
|
#define i687 687
|
|||
|
+// Note: Don't add this one to any templates already specifying a 64-bit-mode-
|
|||
|
+// only ISA extension: i386-gen takes care of adding such dependencies.
|
|||
|
#define x64 64
|
|||
|
|
|||
|
### MARKER ###
|
|||
|
@@ -164,11 +184,11 @@
|
|||
|
mov, 0xa0, No64, D|W|CheckOperandSize|No_sSuf|No_qSuf, { Disp16|Disp32|Unspecified|Byte|Word|Dword, Acc|Byte|Word|Dword }
|
|||
|
mov, 0xa0, x64, D|W|CheckOperandSize|No_sSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword }
|
|||
|
movabs, 0xa0, x64, D|W|CheckOperandSize|No_sSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword }
|
|||
|
-mov, 0x88, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixRelease, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+mov, 0x88, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixRelease, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
// In the 64bit mode the short form mov immediate is redefined to have
|
|||
|
// 64bit value.
|
|||
|
mov, 0xb0, 0, W|No_sSuf|No_qSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32 }
|
|||
|
-mov, 0xc6/0, 0, W|Modrm|No_sSuf|HLEPrefixRelease|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+mov, 0xc6/0, 0, W|Modrm|No_sSuf|HLEPrefixRelease|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
mov, 0xb8, x64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|Optimize, { Imm64, Reg64 }
|
|||
|
movabs, 0xb8, x64, No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Imm64, Reg64 }
|
|||
|
// The segment register moves accept WordReg so that a segment register
|
|||
|
@@ -181,14 +201,18 @@ mov, 0x8c, 0, D|Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { SReg, Word|U
|
|||
|
mov, 0x8e, 0, Modrm|IgnoreSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64, SReg }
|
|||
|
// Move to/from control debug registers. In the 16 or 32bit modes
|
|||
|
// they are 32bit. In the 64bit mode they are 64bit.
|
|||
|
-mov, 0xf20, i386|No64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Control, Reg32 }
|
|||
|
+mov, 0xf20, i386&No64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Control, Reg32 }
|
|||
|
mov, 0xf20, x64, D|RegMem|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Control, Reg64 }
|
|||
|
-mov, 0xf21, i386|No64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Debug, Reg32 }
|
|||
|
+mov, 0xf21, i386&No64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Debug, Reg32 }
|
|||
|
mov, 0xf21, x64, D|RegMem|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Debug, Reg64 }
|
|||
|
-mov, 0xf24, i386|No64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Test, Reg32 }
|
|||
|
+mov, 0xf24, i386&No64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Test, Reg32 }
|
|||
|
|
|||
|
// Move after swapping the bytes
|
|||
|
movbe, 0x0f38f0, Movbe, D|Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+movbe, 0x60, Movbe&APX_F, D|Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+// This needs to live here for easy EVEX -> REX2 conversion, which wants to
|
|||
|
+// restart with the next sequential template.
|
|||
|
+bswap, 0xfc8, i486, No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64 }
|
|||
|
|
|||
|
// Move with sign extend.
|
|||
|
movsb, 0xfbe, i386, Modrm|No_bSuf|No_sSuf, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
@@ -201,37 +225,39 @@ movsxd, 0x63, x64, Amd64|Modrm|NoSuf, { Reg32|Unspecified|BaseIndex, Reg16 }
|
|||
|
movsxd, 0x63, x64, Intel64|Modrm|NoSuf, { Reg16|Unspecified|BaseIndex, Reg16 }
|
|||
|
|
|||
|
// Move with zero extend.
|
|||
|
-movzb, 0xfb6, i386, Modrm|No_bSuf|No_sSuf, { Reg8|Byte|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
-movzw, 0xfb7, i386, Modrm|No_bSuf|No_wSuf|No_sSuf, { Reg16|Word|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+movzb, 0xfb6, i386, Modrm|No_bSuf|No_sSuf, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+movzw, 0xfb7, i386, Modrm|No_bSuf|No_wSuf|No_sSuf, { Reg16|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
// The 64-bit variant is not particularly useful since the zero extend
|
|||
|
// 32->64 is implicit, but we can encode them.
|
|||
|
movzx, 0xfb6, i386, W|Modrm|No_lSuf|No_sSuf|No_qSuf, { Reg8|Reg16|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
// Push instructions.
|
|||
|
-push, 0x50, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
|
|||
|
-push, 0xff/6, No64, Modrm|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32|Word|Dword|Unspecified|BaseIndex }
|
|||
|
-push, 0x6a, i186|No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm8S }
|
|||
|
-push, 0x68, i186|No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm16|Imm32 }
|
|||
|
-push, 0x6, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, { SReg }
|
|||
|
+push, 0x50, No64, ImplicitStackOp|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
|
|||
|
+push, 0xff/6, No64, Modrm|ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32|Unspecified|BaseIndex }
|
|||
|
+push, 0x6a, i186&No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm8S }
|
|||
|
+push, 0x68, i186&No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm16|Imm32 }
|
|||
|
+push, 0x6, No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { SReg }
|
|||
|
// In 64bit mode, the operand size is implicitly 64bit.
|
|||
|
-push, 0x50, x64, No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64 }
|
|||
|
-push, 0xff/6, x64, Modrm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64|Word|Qword|Unspecified|BaseIndex }
|
|||
|
-push, 0x6a, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Imm8S }
|
|||
|
-push, 0x68, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Imm16|Imm32S }
|
|||
|
-push, 0xfa0, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { SReg }
|
|||
|
+push, 0x50, x64, ImplicitStackOp|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64 }
|
|||
|
+pushp, 0x50, APX_F, ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf|Rex2, { Reg64 }
|
|||
|
+push, 0xff/6, x64, Modrm|ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64|Unspecified|BaseIndex }
|
|||
|
+push, 0x6a, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Imm8S }
|
|||
|
+push, 0x68, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Imm16|Imm32S }
|
|||
|
+push, 0xfa0, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { SReg }
|
|||
|
|
|||
|
-pusha, 0x60, i186|No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
+pusha, 0x60, i186&No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
|
|||
|
// Pop instructions.
|
|||
|
-pop, 0x58, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
|
|||
|
-pop, 0x8f/0, No64, Modrm|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32|Word|Dword|Unspecified|BaseIndex }
|
|||
|
-pop, 0x7, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, { SReg }
|
|||
|
+pop, 0x58, No64, ImplicitStackOp|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
|
|||
|
+pop, 0x8f/0, No64, Modrm|ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32|Unspecified|BaseIndex }
|
|||
|
+pop, 0x7, No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { SReg }
|
|||
|
// In 64bit mode, the operand size is implicitly 64bit.
|
|||
|
-pop, 0x58, x64, No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64 }
|
|||
|
-pop, 0x8f/0, x64, Modrm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64|Word|Qword|Unspecified|BaseIndex }
|
|||
|
-pop, 0xfa1, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { SReg }
|
|||
|
+pop, 0x58, x64, ImplicitStackOp|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64 }
|
|||
|
+popp, 0x58, APX_F, ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf|Rex2, { Reg64 }
|
|||
|
+pop, 0x8f/0, x64, Modrm|ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Reg16|Reg64|Unspecified|BaseIndex }
|
|||
|
+pop, 0xfa1, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { SReg }
|
|||
|
|
|||
|
-popa, 0x61, i186|No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
+popa, 0x61, i186&No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
|
|||
|
// Exchange instructions.
|
|||
|
// xchg commutes: we allow both operand orders.
|
|||
|
@@ -273,70 +299,67 @@ lahf, 0x9f, No64, NoSuf, {}
|
|||
|
lahf, 0x9f, LAHF_SAHF, NoSuf, {}
|
|||
|
sahf, 0x9e, No64, NoSuf, {}
|
|||
|
sahf, 0x9e, LAHF_SAHF, NoSuf, {}
|
|||
|
-pushf, 0x9c, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
-pushf, 0x9c, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, {}
|
|||
|
-popf, 0x9d, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
-popf, 0x9d, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, {}
|
|||
|
+pushf, 0x9c, No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
+pushf, 0x9c, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, {}
|
|||
|
+popf, 0x9d, No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
+popf, 0x9d, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, {}
|
|||
|
stc, 0xf9, 0, NoSuf, {}
|
|||
|
std, 0xfd, 0, NoSuf, {}
|
|||
|
sti, 0xfb, 0, NoSuf, {}
|
|||
|
|
|||
|
// Arithmetic.
|
|||
|
-add, 0x0, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-add, 0x83/0, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-add, 0x4, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-add, 0x80/0, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-inc, 0x40, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
|
|||
|
-inc, 0xfe/0, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-sub, 0x28, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sub, 0x83/5, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sub, 0x2c, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-sub, 0x80/5, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<alu2:opc:c:optz:optt:opti:nf, +
|
|||
|
+ add:0:C::::NF, +
|
|||
|
+ or:1:C::Optimize::NF, +
|
|||
|
+ adc:2:C::::, +
|
|||
|
+ sbb:3:::::, +
|
|||
|
+ and:4:C::Optimize:Optimize:NF, +
|
|||
|
+ sub:5::Optimize:::NF, +
|
|||
|
+ xor:6:C:Optimize:::NF>
|
|||
|
+
|
|||
|
+<alu2>, <alu2:opc> << 3, APX_F, D|<alu2:c>|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4|<alu2:nf>|<alu2:optz>, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+<alu2>, <alu2:opc> << 3, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|<alu2:optz>|<alu2:optt>, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<alu2>, <alu2:opc> << 3, APX_F, D|W|CheckOperandSize|Modrm|No_sSuf|EVexMap4|<alu2:nf>, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<alu2>, 0x83/<alu2:opc>, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|<alu2:nf>, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+<alu2>, 0x83/<alu2:opc>, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock|<alu2:opti>, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<alu2>, 0x83/<alu2:opc>, 0, Modrm|No_bSuf|No_sSuf|EVexMap4|<alu2:nf>, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<alu2>, 0x04 | (<alu2:opc> << 3), 0, W|No_sSuf|<alu2:opti>, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
+<alu2>, 0x80/<alu2:opc>, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|<alu2:nf>, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+<alu2>, 0x80/<alu2:opc>, 0, W|Modrm|No_sSuf|HLEPrefixLock|<alu2:opti>, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<alu2>, 0x80/<alu2:opc>, APX_F, W|Modrm|EVexMap4|No_sSuf|<alu2:nf>, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+<alu2>
|
|||
|
|
|||
|
-dec, 0x48, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
|
|||
|
-dec, 0xfe/1, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-sbb, 0x18, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sbb, 0x83/3, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sbb, 0x1c, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-sbb, 0x80/3, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+// clr with 1 operand is really xor with 2 operands.
|
|||
|
+clr, 0x30, 0, W|Modrm|No_sSuf|RegKludge|Optimize, { Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+clr, 0x30, APX_F, W|Modrm|No_sSuf|RegKludge|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
-cmp, 0x38, 0, D|W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-cmp, 0x83/7, 0, Modrm|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+cmp, 0x38, 0, D|W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+cmp, 0x83/7, 0, Modrm|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
cmp, 0x3c, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-cmp, 0x80/7, 0, W|Modrm|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+cmp, 0x80/7, 0, W|Modrm|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
|
|||
|
test, 0x84, 0, D|W|C|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
test, 0xa8, 0, W|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-test, 0xf6/0, 0, W|Modrm|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+test, 0xf6/0, 0, W|Modrm|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-and, 0x20, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-and, 0x83/4, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock|Optimize, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-and, 0x24, 0, W|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-and, 0x80/4, 0, W|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<incdec:opc, inc:0, dec:1>
|
|||
|
|
|||
|
-or, 0x8, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-or, 0x83/1, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-or, 0xc, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-or, 0x80/1, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<incdec>, 0x40 | (<incdec:opc> << 3), No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
|
|||
|
+<incdec>, 0xfe/<incdec:opc>, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, {Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64}
|
|||
|
+<incdec>, 0xfe/<incdec:opc>, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<incdec>, 0xfe/<incdec:opc>, APX_F, W|Modrm|No_sSuf|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-xor, 0x30, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-xor, 0x83/6, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-xor, 0x34, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-xor, 0x80/6, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<incdec>
|
|||
|
|
|||
|
-// clr with 1 operand is really xor with 2 operands.
|
|||
|
-clr, 0x30, 0, W|Modrm|No_sSuf|RegKludge|Optimize, { Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+<alu1:opc:nf, not:2:, neg:3:NF>
|
|||
|
|
|||
|
-adc, 0x10, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-adc, 0x83/2, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-adc, 0x14, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
|
|||
|
-adc, 0x80/2, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<alu1>, 0xf6/<alu1:opc>, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|<alu1:nf>, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+<alu1>, 0xf6/<alu1:opc>, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<alu1>, 0xf6/<alu1:opc>, APX_F, W|Modrm|No_sSuf|EVexMap4|<alu1:nf>, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-neg, 0xf6/3, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-not, 0xf6/2, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<alu1>
|
|||
|
|
|||
|
aaa, 0x37, No64, NoSuf, {}
|
|||
|
aas, 0x3f, No64, NoSuf, {}
|
|||
|
@@ -367,81 +390,82 @@ cqto, 0x99, x64, Size64|NoSuf, {}
|
|||
|
// expanding 64-bit multiplies, and *cannot* be selected to accomplish
|
|||
|
// 'imul %ebx, %eax' (opcode 0x0faf must be used in this case)
|
|||
|
// These multiplies can only be selected with single operand forms.
|
|||
|
-mul, 0xf6/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-imul, 0xf6/5, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-imul, 0xfaf, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|Word|Dword|Qword|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
-imul, 0x6b, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
-imul, 0x69, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+<mul:opc, mul:4, imul:5>
|
|||
|
+
|
|||
|
+<mul>, 0xf6/<mul:opc>, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<mul>, 0xf6/<mul:opc>, APX_F, W|Modrm|No_sSuf|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+imul, 0xaf, APX_F, C|Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
|
|||
|
+imul, 0xfaf, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+imul, 0xaf, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+imul, 0x6b, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+imul, 0x6b, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+imul, 0x69, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+imul, 0x69, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
// imul with 2 operands mimics imul with 3 by putting the register in
|
|||
|
// both i.rm.reg & i.rm.regmem fields. RegKludge enables this
|
|||
|
// transformation.
|
|||
|
imul, 0x6b, i186, Modrm|No_bSuf|No_sSuf|RegKludge, { Imm8S, Reg16|Reg32|Reg64 }
|
|||
|
+imul, 0x6b, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64 }
|
|||
|
imul, 0x69, i186, Modrm|No_bSuf|No_sSuf|RegKludge, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64 }
|
|||
|
-
|
|||
|
-div, 0xf6/6, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-div, 0xf6/6, 0, W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword }
|
|||
|
-idiv, 0xf6/7, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-idiv, 0xf6/7, 0, W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword }
|
|||
|
-
|
|||
|
-rol, 0xd0/0, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rol, 0xc0/0, i186, W|Modrm|No_sSuf, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rol, 0xd2/0, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rol, 0xd0/0, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-ror, 0xd0/1, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-ror, 0xc0/1, i186, W|Modrm|No_sSuf, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-ror, 0xd2/1, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-ror, 0xd0/1, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-rcl, 0xd0/2, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rcl, 0xc0/2, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rcl, 0xd2/2, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rcl, 0xd0/2, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-rcr, 0xd0/3, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rcr, 0xc0/3, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rcr, 0xd2/3, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-rcr, 0xd0/3, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-sal, 0xd0/4, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sal, 0xc0/4, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sal, 0xd2/4, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sal, 0xd0/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-shl, 0xd0/4, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shl, 0xc0/4, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shl, 0xd2/4, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shl, 0xd0/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-shr, 0xd0/5, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shr, 0xc0/5, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shr, 0xd2/5, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shr, 0xd0/5, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-sar, 0xd0/7, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sar, 0xc0/7, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sar, 0xd2/7, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-sar, 0xd0/7, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-shld, 0xfa4, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shld, 0xfa5, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shld, 0xfa5, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-shrd, 0xfac, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shrd, 0xfad, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-shrd, 0xfad, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+imul, 0x69, APX_F, Modrm|No_bSuf|No_sSuf|RegKludge|EVexMap4|NF, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64 }
|
|||
|
+
|
|||
|
+<mul>
|
|||
|
+
|
|||
|
+<div:opc, div:6, idiv:7>
|
|||
|
+
|
|||
|
+<div>, 0xf6/<div:opc>, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<div>, 0xf6/<div:opc>, APX_F, W|Modrm|No_sSuf|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<div>, 0xf6/<div:opc>, 0, W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword }
|
|||
|
+<div>, 0xf6/<div:opc>, APX_F, W|CheckOperandSize|Modrm|No_sSuf|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword }
|
|||
|
+
|
|||
|
+<div>
|
|||
|
+
|
|||
|
+<sr:opc:imm8:nf, +
|
|||
|
+ rol:0:Imm8|Imm8S:NF, +
|
|||
|
+ ror:1:Imm8|Imm8S:NF, +
|
|||
|
+ rcl:2:Imm8:, +
|
|||
|
+ rcr:3:Imm8:, +
|
|||
|
+ sal:4:Imm8:NF, +
|
|||
|
+ shl:4:Imm8:NF, +
|
|||
|
+ shr:5:Imm8:NF, +
|
|||
|
+ sar:7:Imm8:NF>
|
|||
|
+
|
|||
|
+<sr>, 0xd0/<sr:opc>, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|<sr:nf>, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+<sr>, 0xd0/<sr:opc>, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<sr>, 0xd0/<sr:opc>, APX_F, W|Modrm|No_sSuf|EVexMap4|<sr:nf>, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<sr>, 0xc0/<sr:opc>, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|<sr:nf>, { <sr:imm8>, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+<sr>, 0xc0/<sr:opc>, i186, W|Modrm|No_sSuf, { <sr:imm8>, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<sr>, 0xc0/<sr:opc>, APX_F, W|Modrm|No_sSuf|EVexMap4|<sr:nf>, { <sr:imm8>, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<sr>, 0xd2/<sr:opc>, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|<sr:nf>, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
|
|||
|
+<sr>, 0xd2/<sr:opc>, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<sr>, 0xd2/<sr:opc>, APX_F, W|Modrm|No_sSuf|EVexMap4|<sr:nf>, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+<sr>, 0xd0/<sr:opc>, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+<sr>
|
|||
|
+
|
|||
|
+<shd:opc, l:0, r:8>
|
|||
|
+
|
|||
|
+sh<shd>d, 0x24 | <shd:opc>, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+sh<shd>d, 0x0fa4 | <shd:opc>, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+sh<shd>d, 0x24 | <shd:opc>, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+sh<shd>d, 0xa5 | <shd:opc>, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+sh<shd>d, 0x0fa5 | <shd:opc>, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+sh<shd>d, 0xa5 | <shd:opc>, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+sh<shd>d, 0x0fa5 | <shd:opc>, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+<shd>
|
|||
|
|
|||
|
// Control transfer instructions.
|
|||
|
-call, 0xe8, No64, JumpDword|DefaultSize|No_bSuf|No_sSuf|No_qSuf|BNDPrefixOk, { Disp16|Disp32 }
|
|||
|
-call, 0xe8, x64, Amd64|JumpDword|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk, { Disp16|Disp32 }
|
|||
|
-call, 0xe8, x64, Intel64|JumpDword|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk, { Disp32 }
|
|||
|
-call, 0xff/2, No64, Modrm|JumpAbsolute|DefaultSize|No_bSuf|No_sSuf|No_qSuf|BNDPrefixOk|NoTrackPrefixOk, { Reg16|Reg32|Unspecified|BaseIndex }
|
|||
|
-call, 0xff/2, x64, Amd64|Modrm|JumpAbsolute|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk|NoTrackPrefixOk, { Reg16|Reg64|Unspecified|BaseIndex }
|
|||
|
-call, 0xff/2, x64, Intel64|Modrm|JumpAbsolute|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk|NoTrackPrefixOk, { Reg64|Unspecified|BaseIndex }
|
|||
|
+call, 0xe8, No64, JumpDword|ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf|BNDPrefixOk, { Disp16|Disp32 }
|
|||
|
+call, 0xe8, x64, Amd64|JumpDword|ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk, { Disp16|Disp32 }
|
|||
|
+call, 0xe8, x64, Intel64|JumpDword|ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk, { Disp32 }
|
|||
|
+call, 0xff/2, No64, Modrm|JumpAbsolute|ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf|BNDPrefixOk|NoTrackPrefixOk, { Reg16|Reg32|Unspecified|BaseIndex }
|
|||
|
+call, 0xff/2, x64, Amd64|Modrm|JumpAbsolute|ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk|NoTrackPrefixOk, { Reg16|Reg64|Unspecified|BaseIndex }
|
|||
|
+call, 0xff/2, x64, Intel64|Modrm|JumpAbsolute|ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|BNDPrefixOk|NoTrackPrefixOk, { Reg64|Unspecified|BaseIndex }
|
|||
|
// Intel Syntax remaining call instances.
|
|||
|
-call, 0x9a, No64, JumpInterSegment|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm16, Imm16|Imm32 }
|
|||
|
-call, 0xff/3, 0, Amd64|Modrm|JumpAbsolute|DefaultSize|NoSuf, { Dword|Fword|BaseIndex }
|
|||
|
-call, 0xff/3, x64, Intel64|Modrm|JumpAbsolute|NoSuf, { Dword|Fword|Tbyte|BaseIndex }
|
|||
|
+call, 0x9a, No64, JumpInterSegment|ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm16, Imm16|Imm32 }
|
|||
|
+call, 0xff/3, 0, Amd64|Modrm|JumpAbsolute|ImplicitStackOp|DefaultSize|NoSuf, { Dword|Fword|BaseIndex }
|
|||
|
+call, 0xff/3, x64, Intel64|Modrm|JumpAbsolute|ImplicitStackOp|NoSuf, { Dword|Fword|Tbyte|BaseIndex }
|
|||
|
lcall, 0x9a, No64, JumpInterSegment|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm16, Imm16|Imm32 }
|
|||
|
lcall, 0xff/3, 0, Amd64|Modrm|JumpAbsolute|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Unspecified|BaseIndex }
|
|||
|
lcall, 0xff/3, x64, Intel64|Modrm|JumpAbsolute|No_bSuf|No_sSuf, { Unspecified|BaseIndex }
|
|||
|
@@ -459,22 +483,22 @@ ljmp, 0xea, No64, JumpInterSegment|No_bSuf|No_sSuf|No_qSuf, { Imm16, Imm16|Imm32
|
|||
|
ljmp, 0xff/5, 0, Amd64|Modrm|JumpAbsolute|No_bSuf|No_sSuf|No_qSuf, { Unspecified|BaseIndex }
|
|||
|
ljmp, 0xff/5, x64, Intel64|Modrm|JumpAbsolute|No_bSuf|No_sSuf, { Unspecified|BaseIndex }
|
|||
|
|
|||
|
-ret, 0xc3, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf|RepPrefixOk|BNDPrefixOk, {}
|
|||
|
-ret, 0xc2, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf|RepPrefixOk|BNDPrefixOk, { Imm16 }
|
|||
|
-ret, 0xc3, x64, Amd64|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, {}
|
|||
|
-ret, 0xc2, x64, Amd64|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, { Imm16 }
|
|||
|
-ret, 0xc3, x64, Intel64|Size64|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, {}
|
|||
|
-ret, 0xc2, x64, Intel64|Size64|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, { Imm16 }
|
|||
|
+ret, 0xc3, No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf|RepPrefixOk|BNDPrefixOk, {}
|
|||
|
+ret, 0xc2, No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf|RepPrefixOk|BNDPrefixOk, { Imm16 }
|
|||
|
+ret, 0xc3, x64, Amd64|ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, {}
|
|||
|
+ret, 0xc2, x64, Amd64|ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, { Imm16 }
|
|||
|
+ret, 0xc3, x64, Intel64|ImplicitStackOp|Size64|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, {}
|
|||
|
+ret, 0xc2, x64, Intel64|ImplicitStackOp|Size64|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|RepPrefixOk|BNDPrefixOk, { Imm16 }
|
|||
|
lret, 0xcb, 0, DefaultSize|No_bSuf|No_sSuf, {}
|
|||
|
lret, 0xca, 0, DefaultSize|No_bSuf|No_sSuf, { Imm16 }
|
|||
|
// Intel Syntax.
|
|||
|
retf, 0xcb, 0, DefaultSize|No_bSuf|No_sSuf, {}
|
|||
|
retf, 0xca, 0, DefaultSize|No_bSuf|No_sSuf, { Imm16 }
|
|||
|
|
|||
|
-enter, 0xc8, i186|No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm16, Imm8 }
|
|||
|
-enter, 0xc8, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Imm16, Imm8 }
|
|||
|
-leave, 0xc9, i186|No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
-leave, 0xc9, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, {}
|
|||
|
+enter, 0xc8, i186&No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, { Imm16, Imm8 }
|
|||
|
+enter, 0xc8, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, { Imm16, Imm8 }
|
|||
|
+leave, 0xc9, i186&No64, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}
|
|||
|
+leave, 0xc9, x64, ImplicitStackOp|DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, {}
|
|||
|
|
|||
|
<cc:opc, o:0, no:1, b:2, c:2, nae:2, nb:3, nc:3, ae:3, e:4, z:4, ne:5, nz:5, be:6, na:6, nbe:7, a:7, +
|
|||
|
s:8, ns:9, p:a, pe:a, np:b, po:b, l:c, nge:c, nl:d, ge:d, le:e, ng:e, nle:f, g:f>
|
|||
|
@@ -503,7 +527,7 @@ loopne, 0xe0, No64, JumpByte|No_bSuf|No_sSuf|No_qSuf, { Disp8 }
|
|||
|
loopne, 0xe0, x64, JumpByte|No_bSuf|No_wSuf|No_sSuf|NoRex64, { Disp8 }
|
|||
|
|
|||
|
// Set byte on flag instructions.
|
|||
|
-set<cc>, 0xf9<cc:opc>/0, i386, Modrm|No_wSuf|No_lSuf|No_sSuf|No_qSuf, { Reg8|Byte|Unspecified|BaseIndex }
|
|||
|
+set<cc>, 0xf9<cc:opc>/0, i386, Modrm|No_wSuf|No_lSuf|No_sSuf|No_qSuf, { Reg8|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// String manipulation.
|
|||
|
cmps, 0xa6, 0, W|No_sSuf|RepPrefixOk, {}
|
|||
|
@@ -540,58 +564,58 @@ xlat, 0xd7, 0, No_wSuf|No_lSuf|No_sSuf|No_qSuf, {}
|
|||
|
xlat, 0xd7, 0, No_wSuf|No_lSuf|No_sSuf|No_qSuf|IsString, { Byte|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// Bit manipulation.
|
|||
|
-bsf, 0xfbc, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|RepPrefixOk, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
-bsr, 0xfbd, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|RepPrefixOk, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
-bt, 0xfa3, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+bsf, 0xfbc, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|RepPrefixOk, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+bsr, 0xfbd, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|RepPrefixOk, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+bt, 0xfa3, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
bt, 0xfba/4, i386, Modrm|No_bSuf|No_sSuf|Optimize, { Imm8, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
-btc, 0xfbb, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|HLEPrefixLock, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+btc, 0xfbb, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|HLEPrefixLock, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
btc, 0xfba/7, i386, Modrm|No_bSuf|No_sSuf|Optimize|HLEPrefixLock, { Imm8, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
-btr, 0xfb3, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|HLEPrefixLock, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+btr, 0xfb3, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|HLEPrefixLock, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
btr, 0xfba/6, i386, Modrm|No_bSuf|No_sSuf|Optimize|HLEPrefixLock, { Imm8, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
-bts, 0xfab, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|HLEPrefixLock, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+bts, 0xfab, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf|HLEPrefixLock, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
bts, 0xfba/5, i386, Modrm|No_bSuf|No_sSuf|Optimize|HLEPrefixLock, { Imm8, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// Interrupts & op. sys insns.
|
|||
|
// See gas/config/tc-i386.c for conversion of 'int $3' into the special
|
|||
|
// int 3 insn.
|
|||
|
-int, 0xcd, 0, NoSuf, { Imm8 }
|
|||
|
-int1, 0xf1, 0, NoSuf, {}
|
|||
|
-int3, 0xcc, 0, NoSuf, {}
|
|||
|
-into, 0xce, No64, NoSuf, {}
|
|||
|
-iret, 0xcf, 0, DefaultSize|No_bSuf|No_sSuf, {}
|
|||
|
+int, 0xcd, 0, ImplicitStackOp|NoSuf, { Imm8 }
|
|||
|
+int1, 0xf1, 0, ImplicitStackOp|NoSuf, {}
|
|||
|
+int3, 0xcc, 0, ImplicitStackOp|NoSuf, {}
|
|||
|
+into, 0xce, No64, ImplicitStackOp|NoSuf, {}
|
|||
|
+iret, 0xcf, 0, ImplicitStackOp|DefaultSize|No_bSuf|No_sSuf, {}
|
|||
|
// i386sl, i486sl, later 486, and Pentium.
|
|||
|
rsm, 0xfaa, i386, NoSuf, {}
|
|||
|
|
|||
|
-bound, 0x62, i186|No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+bound, 0x62, i186&No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
hlt, 0xf4, 0, NoSuf, {}
|
|||
|
|
|||
|
-nop, 0xf1f/0, Nop, Modrm|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+nop, 0xf1f/0, Nop, Modrm|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// nop is actually "xchg %ax,%ax" in 16bit mode, "xchg %eax,%eax" in
|
|||
|
// 32bit mode and "xchg %rax,%rax" in 64bit mode.
|
|||
|
nop, 0x90, 0, NoSuf|RepPrefixOk, {}
|
|||
|
|
|||
|
// Protection control.
|
|||
|
-arpl, 0x63, i286|No64, RegMem|CheckOperandSize|IgnoreSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32, Reg16|Reg32 }
|
|||
|
-arpl, 0x63, i286|No64, Modrm|IgnoreSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32, Word|Unspecified|BaseIndex }
|
|||
|
+arpl, 0x63, i286&No64, RegMem|CheckOperandSize|IgnoreSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32, Reg16|Reg32 }
|
|||
|
+arpl, 0x63, i286&No64, Modrm|IgnoreSize|No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32, Word|Unspecified|BaseIndex }
|
|||
|
lar, 0xf02, i286, Modrm|CheckOperandSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
|
|||
|
lar, 0xf02, i286, Modrm|No_bSuf|No_sSuf|NoRex64, { Reg16|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
-lgdt, 0xf01/2, i286|No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
+lgdt, 0xf01/2, i286&No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
lgdt, 0xf01/2, x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Tbyte|Unspecified|BaseIndex }
|
|||
|
-lidt, 0xf01/3, i286|No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
+lidt, 0xf01/3, i286&No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
lidt, 0xf01/3, x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Tbyte|Unspecified|BaseIndex }
|
|||
|
lldt, 0xf00/2, i286, Modrm|IgnoreSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64 }
|
|||
|
lldt, 0xf00/2, i286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { Word|Unspecified|BaseIndex }
|
|||
|
-lmsw, 0xf01/6, i286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { Reg16|Word|Unspecified|BaseIndex }
|
|||
|
+lmsw, 0xf01/6, i286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { Reg16|Unspecified|BaseIndex }
|
|||
|
lsl, 0xf03, i286, Modrm|CheckOperandSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
|
|||
|
lsl, 0xf03, i286, Modrm|No_bSuf|No_sSuf|NoRex64, { Reg16|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
ltr, 0xf00/3, i286, Modrm|IgnoreSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64 }
|
|||
|
ltr, 0xf00/3, i286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { Word|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-sgdt, 0xf01/0, i286|No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
+sgdt, 0xf01/0, i286&No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
sgdt, 0xf01/0, x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Tbyte|Unspecified|BaseIndex }
|
|||
|
-sidt, 0xf01/1, i286|No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
+sidt, 0xf01/1, i286&No64, Modrm|No_bSuf|No_sSuf|No_qSuf, { Fword|Unspecified|BaseIndex }
|
|||
|
sidt, 0xf01/1, x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Tbyte|Unspecified|BaseIndex }
|
|||
|
sldt, 0xf00/0, i286, Modrm|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64 }
|
|||
|
sldt, 0xf00/0, i286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { Word|Unspecified|BaseIndex }
|
|||
|
@@ -700,14 +724,13 @@ faddp, 0xdec1, FP, NoSuf, {}
|
|||
|
fsub, 0xd8/4, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fsub, 0xd8/4, FP, D|Modrm|NoSuf, { FloatReg, FloatAcc }
|
|||
|
// alias for fsubp
|
|||
|
-fsub, 0xdee1, FP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {}
|
|||
|
-fsub, 0xdee9, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
+fsub, 0xdee1, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
fsub, 0xd8/4, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Dword|Qword|Unspecified|BaseIndex }
|
|||
|
fisub, 0xde/4, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Word|Dword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-fsubp, 0xde/4, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatAcc, FloatReg }
|
|||
|
-fsubp, 0xde/4, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg }
|
|||
|
-fsubp, 0xdee1, FP, NoSuf|ATTMnemonic|ATTSyntax, {}
|
|||
|
+fsubp, 0xde/4, FP, Modrm|NoSuf|ATTMnemonic, { FloatAcc, FloatReg }
|
|||
|
+fsubp, 0xde/4, FP, Modrm|NoSuf|ATTMnemonic, { FloatReg }
|
|||
|
+fsubp, 0xdee1, FP, NoSuf|ATTMnemonic, {}
|
|||
|
fsubp, 0xde/5, FP, Modrm|NoSuf, { FloatAcc, FloatReg }
|
|||
|
fsubp, 0xde/5, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fsubp, 0xdee9, FP, NoSuf, {}
|
|||
|
@@ -716,14 +739,13 @@ fsubp, 0xdee9, FP, NoSuf, {}
|
|||
|
fsubr, 0xd8/5, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fsubr, 0xd8/5, FP, D|Modrm|NoSuf, { FloatReg, FloatAcc }
|
|||
|
// alias for fsubrp
|
|||
|
-fsubr, 0xdee9, FP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {}
|
|||
|
-fsubr, 0xdee1, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
+fsubr, 0xdee9, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
fsubr, 0xd8/5, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Dword|Qword|Unspecified|BaseIndex }
|
|||
|
fisubr, 0xde/5, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Word|Dword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-fsubrp, 0xde/5, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatAcc, FloatReg }
|
|||
|
-fsubrp, 0xde/5, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg }
|
|||
|
-fsubrp, 0xdee9, FP, NoSuf|ATTMnemonic|ATTSyntax, {}
|
|||
|
+fsubrp, 0xde/5, FP, Modrm|NoSuf|ATTMnemonic, { FloatAcc, FloatReg }
|
|||
|
+fsubrp, 0xde/5, FP, Modrm|NoSuf|ATTMnemonic, { FloatReg }
|
|||
|
+fsubrp, 0xdee9, FP, NoSuf|ATTMnemonic, {}
|
|||
|
fsubrp, 0xde/4, FP, Modrm|NoSuf, { FloatAcc, FloatReg }
|
|||
|
fsubrp, 0xde/4, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fsubrp, 0xdee1, FP, NoSuf, {}
|
|||
|
@@ -745,14 +767,13 @@ fmulp, 0xdec9, FP, NoSuf, {}
|
|||
|
fdiv, 0xd8/6, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fdiv, 0xd8/6, FP, D|Modrm|NoSuf, { FloatReg, FloatAcc }
|
|||
|
// alias for fdivp
|
|||
|
-fdiv, 0xdef1, FP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {}
|
|||
|
-fdiv, 0xdef9, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
+fdiv, 0xdef1, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
fdiv, 0xd8/6, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Dword|Qword|Unspecified|BaseIndex }
|
|||
|
fidiv, 0xde/6, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Word|Dword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-fdivp, 0xde/6, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatAcc, FloatReg }
|
|||
|
-fdivp, 0xde/6, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg }
|
|||
|
-fdivp, 0xdef1, FP, NoSuf|ATTMnemonic|ATTSyntax, {}
|
|||
|
+fdivp, 0xde/6, FP, Modrm|NoSuf|ATTMnemonic, { FloatAcc, FloatReg }
|
|||
|
+fdivp, 0xde/6, FP, Modrm|NoSuf|ATTMnemonic, { FloatReg }
|
|||
|
+fdivp, 0xdef1, FP, NoSuf|ATTMnemonic, {}
|
|||
|
fdivp, 0xde/7, FP, Modrm|NoSuf, { FloatAcc, FloatReg }
|
|||
|
fdivp, 0xde/7, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fdivp, 0xdef9, FP, NoSuf, {}
|
|||
|
@@ -761,14 +782,13 @@ fdivp, 0xdef9, FP, NoSuf, {}
|
|||
|
fdivr, 0xd8/7, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fdivr, 0xd8/7, FP, D|Modrm|NoSuf, { FloatReg, FloatAcc }
|
|||
|
// alias for fdivrp
|
|||
|
-fdivr, 0xdef9, FP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {}
|
|||
|
-fdivr, 0xdef1, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
+fdivr, 0xdef9, FP, NoSuf|Ugh|ATTMnemonic, {}
|
|||
|
fdivr, 0xd8/7, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Dword|Qword|Unspecified|BaseIndex }
|
|||
|
fidivr, 0xde/7, FP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf, { Word|Dword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
-fdivrp, 0xde/7, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatAcc, FloatReg }
|
|||
|
-fdivrp, 0xde/7, FP, Modrm|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg }
|
|||
|
-fdivrp, 0xdef9, FP, NoSuf|ATTMnemonic|ATTSyntax, {}
|
|||
|
+fdivrp, 0xde/7, FP, Modrm|NoSuf|ATTMnemonic, { FloatAcc, FloatReg }
|
|||
|
+fdivrp, 0xde/7, FP, Modrm|NoSuf|ATTMnemonic, { FloatReg }
|
|||
|
+fdivrp, 0xdef9, FP, NoSuf|ATTMnemonic, {}
|
|||
|
fdivrp, 0xde/6, FP, Modrm|NoSuf, { FloatAcc, FloatReg }
|
|||
|
fdivrp, 0xde/6, FP, Modrm|NoSuf, { FloatReg }
|
|||
|
fdivrp, 0xdef1, FP, NoSuf, {}
|
|||
|
@@ -831,14 +851,14 @@ fwait, 0x9b, FP, NoSuf, {}
|
|||
|
|
|||
|
// Opcode prefixes; we allow them as separate insns too.
|
|||
|
|
|||
|
-addr16, 0x67, i386|No64, Size16|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
+addr16, 0x67, i386&No64, Size16|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
addr32, 0x67, i386, Size32|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
-aword, 0x67, i386|No64, Size16|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
+aword, 0x67, i386&No64, Size16|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
adword, 0x67, i386, Size32|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
data16, 0x66, i386, Size16|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
-data32, 0x66, i386|No64, Size32|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
+data32, 0x66, i386&No64, Size32|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
word, 0x66, i386, Size16|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
-dword, 0x66, i386|No64, Size32|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
+dword, 0x66, i386&No64, Size32|IgnoreSize|NoSuf|IsPrefix, {}
|
|||
|
lock, 0xf0, 0, NoSuf|IsPrefix, {}
|
|||
|
wait, 0x9b, 0, NoSuf|IsPrefix, {}
|
|||
|
cs, 0x2e, 0, NoSuf|IsPrefix, {}
|
|||
|
@@ -888,18 +908,18 @@ rex.wrxb, 0x4f, x64, NoSuf|IsPrefix, {}
|
|||
|
|
|||
|
// Pseudo prefixes (base_opcode == PSEUDO_PREFIX)
|
|||
|
|
|||
|
-<pseudopfx:ident:cpu, disp8:Disp8:0, disp16:Disp16:0, disp32:Disp32:0, +
|
|||
|
+<pseudopfx:ident:cpu, disp8:Disp8:0, disp16:Disp16:No64, disp32:Disp32:i386, +
|
|||
|
load:Load:0, store:Store:0, +
|
|||
|
vex:VEX:0, vex2:VEX:0, vex3:VEX3:0, evex:EVEX:0, +
|
|||
|
- rex:REX:x64, nooptimize:NoOptimize:0>
|
|||
|
+ rex:REX:x64, rex2:REX2:APX_F, nf:NF:APX_F, +
|
|||
|
+ nooptimize:NoOptimize:0>
|
|||
|
|
|||
|
{<pseudopfx>}, PSEUDO_PREFIX/Prefix_<pseudopfx:ident>, <pseudopfx:cpu>, NoSuf|IsPrefix, {}
|
|||
|
|
|||
|
-// 486 extensions.
|
|||
|
+// 486 extensions (BSWAP moved elsewhere).
|
|||
|
|
|||
|
-bswap, 0xfc8, i486, No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64 }
|
|||
|
-xadd, 0xfc0, i486, W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-cmpxchg, 0xfb0, i486, W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+xadd, 0xfc0, i486, W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+cmpxchg, 0xfb0, i486, W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
invd, 0xf08, i486, NoSuf, {}
|
|||
|
wbinvd, 0xf09, i486, NoSuf, {}
|
|||
|
invlpg, 0xf01/7, i486, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex }
|
|||
|
@@ -915,13 +935,13 @@ cmpxchg8b, 0xfc7/1, i586, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64|HLEPrefi
|
|||
|
|
|||
|
// Pentium II/Pentium Pro extensions.
|
|||
|
sysenter, 0xf34, x64, Intel64Only|NoSuf, {}
|
|||
|
-sysenter, 0xf34, i686|No64, NoSuf, {}
|
|||
|
+sysenter, 0xf34, i686&No64, NoSuf, {}
|
|||
|
sysexit, 0xf35, x64, Intel64Only|No_bSuf|No_wSuf|No_sSuf, {}
|
|||
|
-sysexit, 0xf35, i686|No64, NoSuf, {}
|
|||
|
+sysexit, 0xf35, i686&No64, NoSuf, {}
|
|||
|
fxsave, 0xfae/0, FXSR, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Unspecified|BaseIndex }
|
|||
|
-fxsave64, 0xfae/0, FXSR|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
+fxsave64, 0xfae/0, FXSR&x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
fxrstor, 0xfae/1, FXSR, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Unspecified|BaseIndex }
|
|||
|
-fxrstor64, 0xfae/1, FXSR|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
+fxrstor64, 0xfae/1, FXSR&x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
rdpmc, 0xf33, i686, NoSuf, {}
|
|||
|
// official undefined instr.
|
|||
|
ud2, 0xf0b, i186, NoSuf, {}
|
|||
|
@@ -934,7 +954,8 @@ ud2b, 0xfb9, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|U
|
|||
|
// 3rd official undefined instr (older CPUs don't take a ModR/M byte)
|
|||
|
ud0, 0xfff, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
-cmov<cc>, 0xf4<cc:opc>, CMOV, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+cmov<cc>, 0x4<cc:opc>, CMOV&APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
|
|||
|
+cmov<cc>, 0xf4<cc:opc>, CMOV, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
fcmovb, 0xda/0, i687, Modrm|NoSuf, { FloatReg, FloatAcc }
|
|||
|
fcmovnae, 0xda/0, i687, Modrm|NoSuf, { FloatReg, FloatAcc }
|
|||
|
@@ -992,9 +1013,9 @@ pause, 0xf390, i186, NoSuf, {}
|
|||
|
b:0:VexW0:Byte:AVX512DQ:66:AVX512VBMI, +
|
|||
|
w:1:VexW1:Word:AVX512F::AVX512BW>
|
|||
|
|
|||
|
-<dq:opc:vexw:vexw64:elem:cpu64:gpr:kpfx:kvsz, +
|
|||
|
- d:0:VexW0::Dword::Reg32:66:Vsz256, +
|
|||
|
- q:1:VexW1:VexW1:Qword:x64:Reg64::Vsz512>
|
|||
|
+<dq:opc:vexw:vexw64:elem:cpu64:gpr:kpfx, +
|
|||
|
+ d:0:VexW0::Dword::Reg32:66, +
|
|||
|
+ q:1:VexW1:VexW1:Qword:x64:Reg64:>
|
|||
|
|
|||
|
emms, 0xf77, MMX, NoSuf, {}
|
|||
|
// These really shouldn't allow for Reg64 (movq is the right mnemonic for
|
|||
|
@@ -1002,21 +1023,21 @@ emms, 0xf77, MMX, NoSuf, {}
|
|||
|
// spec). AMD's spec, having been in existence for much longer, failed to
|
|||
|
// recognize that and specified movd for 32- and 64-bit operations.
|
|||
|
movd, 0x666e, AVX, D|Modrm|Vex128|Space0F|VexW0|NoSuf|SSE2AVX, { Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
-movd, 0x666e, AVX|x64, D|Modrm|Vex=1|Space0F|VexW1|NoSuf|Size64|SSE2AVX, { Reg64|BaseIndex, RegXMM }
|
|||
|
+movd, 0x666e, AVX&x64, D|Modrm|Vex=1|Space0F|VexW1|NoSuf|Size64|SSE2AVX, { Reg64|BaseIndex, RegXMM }
|
|||
|
movd, 0x660f6e, SSE2, D|Modrm|IgnoreSize|NoSuf, { Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
-movd, 0x660f6e, SSE2|x64, D|Modrm|NoSuf|Size64, { Reg64|BaseIndex, RegXMM }
|
|||
|
+movd, 0x660f6e, SSE2&x64, D|Modrm|NoSuf|Size64, { Reg64|BaseIndex, RegXMM }
|
|||
|
// The MMX templates have to remain after at least the SSE2AVX ones.
|
|||
|
movd, 0xf6e, MMX, D|Modrm|IgnoreSize|NoSuf, { Reg32|Unspecified|BaseIndex, RegMMX }
|
|||
|
-movd, 0xf6e, MMX|x64, D|Modrm|NoSuf|Size64, { Reg64|BaseIndex, RegMMX }
|
|||
|
-movq, 0xf37e, AVX, Load|Modrm|Vex=1|Space0F|VexWIG|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-movq, 0x66d6, AVX, Modrm|Vex=1|Space0F|VexWIG|NoSuf|SSE2AVX, { RegXMM, Qword|Unspecified|BaseIndex|RegXMM }
|
|||
|
-movq, 0x666e, AVX|x64, D|Modrm|Vex=1|Space0F|VexW1|NoSuf|Size64|SSE2AVX, { Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+movd, 0xf6e, MMX&x64, D|Modrm|NoSuf|Size64, { Reg64|BaseIndex, RegMMX }
|
|||
|
+movq, 0xf37e, AVX, Load|Modrm|Vex128|Space0F|VexW0|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+movq, 0x66d6, AVX, Modrm|Vex128|Space0F|VexW0|NoSuf|SSE2AVX, { RegXMM, Qword|Unspecified|BaseIndex|RegXMM }
|
|||
|
+movq, 0x666e, AVX&x64, D|Modrm|Vex=1|Space0F|VexW1|NoSuf|Size64|SSE2AVX, { Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
movq, 0xf30f7e, SSE2, Load|Modrm|NoSuf, { Unspecified|Qword|BaseIndex|RegXMM, RegXMM }
|
|||
|
movq, 0x660fd6, SSE2, Modrm|NoSuf, { RegXMM, Unspecified|Qword|BaseIndex|RegXMM }
|
|||
|
-movq, 0x660f6e, SSE2|x64, D|Modrm|NoSuf|Size64, { Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+movq, 0x660f6e, SSE2&x64, D|Modrm|NoSuf|Size64, { Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
// The MMX templates have to remain after at least the SSE2AVX ones.
|
|||
|
movq, 0xf6f, MMX, D|Modrm|NoSuf, { Unspecified|Qword|BaseIndex|RegMMX, RegMMX }
|
|||
|
-movq, 0xf6e, MMX|x64, D|Modrm|NoSuf|Size64, { Reg64|Unspecified|BaseIndex, RegMMX }
|
|||
|
+movq, 0xf6e, MMX&x64, D|Modrm|NoSuf|Size64, { Reg64|Unspecified|BaseIndex, RegMMX }
|
|||
|
packssdw<mmx>, 0x<mmx:pfx>0f6b, <mmx:cpu>, Modrm|<mmx:attr>|NoSuf, { <mmx:reg>|<mmx:mem>|Unspecified|BaseIndex, <mmx:reg> }
|
|||
|
packsswb<mmx>, 0x<mmx:pfx>0f63, <mmx:cpu>, Modrm|<mmx:attr>|NoSuf, { <mmx:reg>|<mmx:mem>|Unspecified|BaseIndex, <mmx:reg> }
|
|||
|
packuswb<mmx>, 0x<mmx:pfx>0f67, <mmx:cpu>, Modrm|<mmx:attr>|NoSuf, { <mmx:reg>|<mmx:mem>|Unspecified|BaseIndex, <mmx:reg> }
|
|||
|
@@ -1083,11 +1104,11 @@ cmpss<sse>, 0xf30fc2, <sse:cpu>, Modrm|<sse:scal>|<sse:vvvv>|NoSuf, { Imm8, Dwor
|
|||
|
comiss<sse>, 0x0f2f, <sse:cpu>, Modrm|<sse:scal>|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
cvtpi2ps, 0xf2a, SSE, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegMMX, RegXMM }
|
|||
|
cvtps2pi, 0xf2d, SSE, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegMMX }
|
|||
|
-cvtsi2ss<sse>, 0xf30f2a, <sse:cpu>|No64, Modrm|<sse:scal>|<sse:vvvv>|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2ss, 0xf32a, AVX|x64, Modrm|Vex=3|Space0F|VexVVVV|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2ss, 0xf32a, AVX|x64, Modrm|Vex=3|Space0F|VexVVVV|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2ss, 0xf30f2a, SSE|x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|ATTSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2ss, 0xf30f2a, SSE|x64, Modrm|No_bSuf|No_wSuf|No_sSuf|IntelSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2ss<sse>, 0xf30f2a, <sse:cpu>&No64, Modrm|<sse:scal>|<sse:vvvv>|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2ss, 0xf32a, AVX&x64, Modrm|Vex=3|Space0F|VexVVVV|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2ss, 0xf32a, AVX&x64, Modrm|Vex=3|Space0F|VexVVVV|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2ss, 0xf30f2a, SSE&x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|ATTSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2ss, 0xf30f2a, SSE&x64, Modrm|No_bSuf|No_wSuf|No_sSuf|IntelSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
cvtss2si, 0xf32d, AVX, Modrm|VexLIG|Space0F|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Dword|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 }
|
|||
|
cvtss2si, 0xf30f2d, SSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Dword|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 }
|
|||
|
cvttps2pi, 0xf2c, SSE, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegMMX }
|
|||
|
@@ -1178,11 +1199,11 @@ comisd<sse2>, 0x660f2f, <sse2:cpu>, Modrm|<sse2:scal>|NoSuf, { Qword|Unspecified
|
|||
|
cvtpi2pd, 0x660f2a, SSE2, Modrm|NoSuf, { RegMMX, RegXMM }
|
|||
|
cvtpi2pd, 0xf3e6, AVX, Modrm|Vex|Space0F|VexW0|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
cvtpi2pd, 0x660f2a, SSE2, Modrm|NoSuf, { Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2sd<sse2>, 0xf20f2a, <sse2:cpu>|No64, Modrm|IgnoreSize|<sse2:scal>|<sse2:vvvv>|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2sd, 0xf22a, AVX|x64, Modrm|Vex=3|Space0F|VexVVVV|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2sd, 0xf22a, AVX|x64, Modrm|Vex=3|Space0F|VexVVVV|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2sd, 0xf20f2a, SSE2|x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|ATTSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-cvtsi2sd, 0xf20f2a, SSE2|x64, Modrm|No_bSuf|No_wSuf|No_sSuf|IntelSyntax, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2sd<sse2>, 0xf20f2a, <sse2:cpu>&No64, Modrm|IgnoreSize|<sse2:scal>|<sse2:vvvv>|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2sd, 0xf22a, AVX&x64, Modrm|Vex=3|Space0F|VexVVVV|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2sd, 0xf22a, AVX&x64, Modrm|Vex=3|Space0F|VexVVVV|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2sd, 0xf20f2a, SSE2&x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|ATTSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+cvtsi2sd, 0xf20f2a, SSE2&x64, Modrm|No_bSuf|No_wSuf|No_sSuf|IntelSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
divpd<sse2>, 0x660f5e, <sse2:cpu>, Modrm|<sse2:attr>|<sse2:vvvv>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
divsd<sse2>, 0xf20f5e, <sse2:cpu>, Modrm|<sse2:scal>|<sse2:vvvv>|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
maxpd<sse2>, 0x660f5f, <sse2:cpu>, Modrm|<sse2:attr>|<sse2:vvvv>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
@@ -1271,7 +1292,7 @@ fisttpll, 0xdd/1, FISTTP, Modrm|NoSuf|ATTSyntax, { Unspecified|BaseIndex }
|
|||
|
|
|||
|
// CMPXCHG16B instruction.
|
|||
|
|
|||
|
-cmpxchg16b, 0xfc7/1, CX16|x64, Modrm|NoSuf|Size64|LockPrefixOk, { Oword|Unspecified|BaseIndex }
|
|||
|
+cmpxchg16b, 0xfc7/1, CX16, Modrm|NoSuf|Size64|LockPrefixOk, { Oword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// MONITOR instructions.
|
|||
|
|
|||
|
@@ -1281,7 +1302,7 @@ monitor, 0xf01c8, MONITOR, NoSuf, {}
|
|||
|
// all modes.
|
|||
|
monitor, 0xf01c8, MONITOR, AddrPrefixOpReg|NoSuf, { Acc|Word|Dword|Qword, RegC|Dword, RegD|Dword }
|
|||
|
// The 64-bit form exists only for compatibility with older gas.
|
|||
|
-monitor, 0xf01c8, MONITOR|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
+monitor, 0xf01c8, MONITOR&x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
mwait, 0xf01c9, MONITOR, NoSuf, {}
|
|||
|
// mwait is very special. AX and CX are always 32 bits.
|
|||
|
// The 64-bit form exists only for compatibility with older gas.
|
|||
|
@@ -1295,10 +1316,10 @@ vmlaunch, 0xf01c2, VMX, NoSuf, {}
|
|||
|
vmresume, 0xf01c3, VMX, NoSuf, {}
|
|||
|
vmptrld, 0xfc7/6, VMX, Modrm|NoSuf, { Qword|Unspecified|BaseIndex }
|
|||
|
vmptrst, 0xfc7/7, VMX, Modrm|NoSuf, { Qword|Unspecified|BaseIndex }
|
|||
|
-vmread, 0xf78, VMX|No64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32, Reg32|Unspecified|BaseIndex }
|
|||
|
-vmread, 0xf78, VMX|x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Reg64, Reg64|Qword|Unspecified|BaseIndex }
|
|||
|
-vmwrite, 0xf79, VMX|No64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, Reg32 }
|
|||
|
-vmwrite, 0xf79, VMX|x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Reg64|Qword|Unspecified|BaseIndex, Reg64 }
|
|||
|
+vmread, 0xf78, VMX&No64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32, Reg32|Unspecified|BaseIndex }
|
|||
|
+vmread, 0xf78, VMX&x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Reg64, Reg64|Unspecified|BaseIndex }
|
|||
|
+vmwrite, 0xf79, VMX&No64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, Reg32 }
|
|||
|
+vmwrite, 0xf79, VMX&x64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Reg64|Unspecified|BaseIndex, Reg64 }
|
|||
|
vmxoff, 0xf01c4, VMX, NoSuf, {}
|
|||
|
vmxon, 0xf30fc7/6, VMX, Modrm|NoSuf, { Qword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
@@ -1312,15 +1333,18 @@ getsec, 0xf37, SMX, NoSuf, {}
|
|||
|
|
|||
|
// EPT instructions.
|
|||
|
|
|||
|
-invept, 0x660f3880, EPT|No64, Modrm|IgnoreSize|NoSuf, { Oword|Unspecified|BaseIndex, Reg32 }
|
|||
|
-invept, 0x660f3880, EPT|x64, Modrm|NoSuf|NoRex64, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
-invvpid, 0x660f3881, EPT|No64, Modrm|IgnoreSize|NoSuf, { Oword|Unspecified|BaseIndex, Reg32 }
|
|||
|
-invvpid, 0x660f3881, EPT|x64, Modrm|NoSuf|NoRex64, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
+invept, 0x660f3880, EPT&No64, Modrm|IgnoreSize|NoSuf, { Oword|Unspecified|BaseIndex, Reg32 }
|
|||
|
+invept, 0x660f3880, EPT&x64, Modrm|NoSuf|NoRex64, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
+invept, 0xf3f0, EPT&APX_F, Modrm|NoSuf|EVexMap4|VexWIG, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
+invvpid, 0x660f3881, EPT&No64, Modrm|IgnoreSize|NoSuf, { Oword|Unspecified|BaseIndex, Reg32 }
|
|||
|
+invvpid, 0x660f3881, EPT&x64, Modrm|NoSuf|NoRex64, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
+invvpid, 0xf3f1, EPT&APX_F, Modrm|NoSuf|EVexMap4|VexWIG, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
|
|||
|
// INVPCID instruction
|
|||
|
|
|||
|
-invpcid, 0x660f3882, INVPCID|No64, Modrm|IgnoreSize|NoSuf, { Oword|Unspecified|BaseIndex, Reg32 }
|
|||
|
-invpcid, 0x660f3882, INVPCID|x64, Modrm|NoSuf|NoRex64, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
+invpcid, 0x660f3882, INVPCID&No64, Modrm|IgnoreSize|NoSuf, { Oword|Unspecified|BaseIndex, Reg32 }
|
|||
|
+invpcid, 0x660f3882, INVPCID&x64, Modrm|NoSuf|NoRex64, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
+invpcid, 0xf3f2, INVPCID&APX_F, Modrm|NoSuf|EVexMap4|VexWIG, { Oword|Unspecified|BaseIndex, Reg64 }
|
|||
|
|
|||
|
// SSSE3 instructions.
|
|||
|
|
|||
|
@@ -1355,10 +1379,10 @@ blendvp<sd>, 0x664a | <sd:opc>, AVX, Modrm|Vex128|Space0F3A|VexVVVV|VexW0|NoSuf|
|
|||
|
blendvp<sd>, 0x660f3814 | <sd:opc>, SSE4_1, Modrm|NoSuf, { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
blendvp<sd>, 0x660f3814 | <sd:opc>, SSE4_1, Modrm|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
dpp<sd><sse41>, 0x660f3a40 | <sd:opc>, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
-extractps, 0x6617, AVX, Modrm|Vex|Space0F3A|VexWIG|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg32|Dword|Unspecified|BaseIndex }
|
|||
|
-extractps, 0x6617, AVX|x64, RegMem|Vex|Space0F3A|VexWIG|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg64 }
|
|||
|
-extractps, 0x660f3a17, SSE4_1, Modrm|IgnoreSize|NoSuf, { Imm8, RegXMM, Reg32|Dword|Unspecified|BaseIndex }
|
|||
|
-extractps, 0x660f3a17, SSE4_1|x64, RegMem|NoSuf|NoRex64, { Imm8, RegXMM, Reg64 }
|
|||
|
+extractps, 0x6617, AVX, Modrm|Vex128|Space0F3A|VexW0|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg32|Unspecified|BaseIndex }
|
|||
|
+extractps, 0x6617, AVX&x64, RegMem|Vex128|Space0F3A|VexW1|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg64 }
|
|||
|
+extractps, 0x660f3a17, SSE4_1, Modrm|IgnoreSize|NoSuf, { Imm8, RegXMM, Reg32|Unspecified|BaseIndex }
|
|||
|
+extractps, 0x660f3a17, SSE4_1&x64, RegMem|NoSuf|NoRex64, { Imm8, RegXMM, Reg64 }
|
|||
|
insertps<sse41>, 0x660f3a21, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf, { Imm8, Dword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
movntdqa<sse41>, 0x660f382a, <sse41:cpu>, Modrm|<sse41:attr>|NoSuf, { Xmmword|Unspecified|BaseIndex, RegXMM }
|
|||
|
mpsadbw<sse41>, 0x660f3a42, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
@@ -1372,14 +1396,14 @@ pcmpeqq<sse41>, 0x660f3829, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf|O
|
|||
|
pextr<bw><sse41>, 0x660f3a14 | <bw:opc>, <sse41:cpu>, RegMem|<sse41:attr>|NoSuf|IgnoreSize|NoRex64, { Imm8, RegXMM, Reg32|Reg64 }
|
|||
|
pextr<bw><sse41>, 0x660f3a14 | <bw:opc>, <sse41:cpu>, Modrm|<sse41:attr>|NoSuf, { Imm8, RegXMM, <bw:elem>|Unspecified|BaseIndex }
|
|||
|
pextrd<sse41>, 0x660f3a16, <sse41:cpu>, Modrm|<sse41:attr>|NoSuf|IgnoreSize, { Imm8, RegXMM, Reg32|Unspecified|BaseIndex }
|
|||
|
-pextrq, 0x6616, AVX|x64, Modrm|Vex|Space0F3A|VexW1|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg64|Unspecified|BaseIndex }
|
|||
|
-pextrq, 0x660f3a16, SSE4_1|x64, Modrm|Size64|NoSuf, { Imm8, RegXMM, Reg64|Unspecified|BaseIndex }
|
|||
|
+pextrq, 0x6616, AVX&x64, Modrm|Vex|Space0F3A|VexW1|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg64|Unspecified|BaseIndex }
|
|||
|
+pextrq, 0x660f3a16, SSE4_1&x64, Modrm|Size64|NoSuf, { Imm8, RegXMM, Reg64|Unspecified|BaseIndex }
|
|||
|
phminposuw<sse41>, 0x660f3841, <sse41:cpu>, Modrm|<sse41:attr>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
pinsrb<sse41>, 0x660f3a20, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf|IgnoreSize|NoRex64, { Imm8, Reg32|Reg64, RegXMM }
|
|||
|
pinsrb<sse41>, 0x660f3a20, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf, { Imm8, Byte|Unspecified|BaseIndex, RegXMM }
|
|||
|
pinsrd<sse41>, 0x660f3a22, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf|IgnoreSize, { Imm8, Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
-pinsrq, 0x6622, AVX|x64, Modrm|Vex|Space0F3A|VexVVVV|VexW1|NoSuf|SSE2AVX, { Imm8, Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
-pinsrq, 0x660f3a22, SSE4_1|x64, Modrm|Size64|NoSuf, { Imm8, Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+pinsrq, 0x6622, AVX&x64, Modrm|Vex|Space0F3A|VexVVVV|VexW1|NoSuf|SSE2AVX, { Imm8, Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+pinsrq, 0x660f3a22, SSE4_1&x64, Modrm|Size64|NoSuf, { Imm8, Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
pmaxsb<sse41>, 0x660f383c, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
pmaxsd<sse41>, 0x660f383d, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
pmaxud<sse41>, 0x660f383f, <sse41:cpu>, Modrm|<sse41:attr>|<sse41:vvvv>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
@@ -1411,33 +1435,36 @@ rounds<sd><sse41>, 0x660f3a0a | <sd:opc>, <sse41:cpu>, Modrm|<sse41:scal>|<sse41
|
|||
|
<sse42:cpu:attr:vvvv, $avx:AVX:Vex128|VexW0|SSE2AVX:VexVVVV, $sse:SSE4_2::>
|
|||
|
|
|||
|
pcmpgtq<sse42>, 0x660f3837, <sse42:cpu>, Modrm|<sse42:attr>|<sse42:vvvv>|NoSuf|Optimize, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
-pcmpestri<sse42>, 0x660f3a61, <sse42:cpu>|No64, Modrm|<sse42:attr>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
-pcmpestri, 0x6661, AVX|x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Imm8, Xmmword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-pcmpestri, 0x660f3a61, SSE4_2|x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, Xmmword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-pcmpestrm<sse42>, 0x660f3a60, <sse42:cpu>|No64, Modrm|<sse42:attr>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
-pcmpestrm, 0x6660, AVX|x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Imm8, Xmmword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-pcmpestrm, 0x660f3a60, SSE4_2|x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, Xmmword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+pcmpestri<sse42>, 0x660f3a61, <sse42:cpu>&No64, Modrm|<sse42:attr>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
+pcmpestri, 0x6661, AVX&x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
+pcmpestri, 0x660f3a61, SSE4_2&x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
+pcmpestrm<sse42>, 0x660f3a60, <sse42:cpu>&No64, Modrm|<sse42:attr>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
+pcmpestrm, 0x6660, AVX&x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
+pcmpestrm, 0x660f3a60, SSE4_2&x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
pcmpistri<sse42>, 0x660f3a63, <sse42:cpu>, Modrm|<sse42:attr>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
pcmpistrm<sse42>, 0x660f3a62, <sse42:cpu>, Modrm|<sse42:attr>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
crc32, 0xf20f38f0, SSE4_2, W|Modrm|No_sSuf|No_qSuf, { Reg8|Reg16|Reg32|Unspecified|BaseIndex, Reg32 }
|
|||
|
-crc32, 0xf20f38f0, SSE4_2|x64, W|Modrm|No_wSuf|No_lSuf|No_sSuf, { Reg8|Reg64|Unspecified|BaseIndex, Reg64 }
|
|||
|
+crc32, 0xf20f38f0, SSE4_2&x64, W|Modrm|No_wSuf|No_lSuf|No_sSuf, { Reg8|Reg64|Unspecified|BaseIndex, Reg64 }
|
|||
|
+crc32, 0xf0, APX_F, W|Modrm|No_sSuf|No_qSuf|EVexMap4, { Reg8|Reg16|Reg32|Unspecified|BaseIndex, Reg32 }
|
|||
|
+crc32, 0xf0, APX_F, W|Modrm|No_wSuf|No_lSuf|No_sSuf|EVexMap4, { Reg8|Reg64|Unspecified|BaseIndex, Reg64 }
|
|||
|
|
|||
|
// xsave/xrstor New Instructions.
|
|||
|
|
|||
|
-xsave, 0xfae/4, Xsave, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Unspecified|BaseIndex }
|
|||
|
-xsave64, 0xfae/4, Xsave|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
-xrstor, 0xfae/5, Xsave, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Unspecified|BaseIndex }
|
|||
|
-xrstor64, 0xfae/5, Xsave|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
+xsave, 0xfae/4, Xsave, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xsave64, 0xfae/4, Xsave&x64, Modrm|NoSuf|Size64|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xrstor, 0xfae/5, Xsave, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xrstor64, 0xfae/5, Xsave&x64, Modrm|NoSuf|Size64|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
xgetbv, 0xf01d0, Xsave, NoSuf, {}
|
|||
|
xsetbv, 0xf01d1, Xsave, NoSuf, {}
|
|||
|
|
|||
|
// xsaveopt
|
|||
|
-xsaveopt, 0xfae/6, Xsaveopt, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Unspecified|BaseIndex }
|
|||
|
-xsaveopt64, 0xfae/6, Xsaveopt|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+xsaveopt, 0xfae/6, Xsaveopt, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xsaveopt64, 0xfae/6, Xsaveopt&x64, Modrm|NoSuf|Size64|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
|
|||
|
// AES instructions.
|
|||
|
|
|||
|
-<aes:cpu:attr:vvvv, $avx:AVX|:Vex128|VexW0|SSE2AVX:VexVVVV, $sse:::>
|
|||
|
+<aes:cpu:attr:vvvv, $avx:AVX&:Vex128|VexW0|SSE2AVX:VexVVVV, $sse:::>
|
|||
|
|
|||
|
aesdec<aes>, 0x660f38de, <aes:cpu>AES, Modrm|<aes:attr>|<aes:vvvv>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
aesdeclast<aes>, 0x660f38df, <aes:cpu>AES, Modrm|<aes:attr>|<aes:vvvv>|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
@@ -1448,7 +1475,7 @@ aeskeygenassist<aes>, 0x660f3adf, <aes:cpu>AES, Modrm|<aes:attr>|NoSuf, { Imm8,
|
|||
|
|
|||
|
// PCLMULQDQ
|
|||
|
|
|||
|
-<pclmul:cpu:attr, $avx:AVX|:Vex128|VexW0|SSE2AVX|VexVVVV, $sse::>
|
|||
|
+<pclmul:cpu:attr, $avx:AVX&:Vex128|VexW0|SSE2AVX|VexVVVV, $sse::>
|
|||
|
|
|||
|
pclmulqdq<pclmul>, 0x660f3a44, <pclmul:cpu>PCLMULQDQ, Modrm|<pclmul:attr>|NoSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
pclmullqlqdq<pclmul>, 0x660f3a44/0x00, <pclmul:cpu>PCLMULQDQ, Modrm|<pclmul:attr>|NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
@@ -1458,7 +1485,7 @@ pclmulhqhqdq<pclmul>, 0x660f3a44/0x11, <pclmul:cpu>PCLMULQDQ, Modrm|<pclmul:attr
|
|||
|
|
|||
|
// GFNI
|
|||
|
|
|||
|
-<gfni:cpu:w0:w1, $avx:AVX|:Vex128|VexW0|SSE2AVX|VexVVVV:Vex128|VexW1|SSE2AVX|VexVVVV, $sse:::>
|
|||
|
+<gfni:cpu:w0:w1, $avx:AVX&:Vex128|VexW0|SSE2AVX|VexVVVV:Vex128|VexW1|SSE2AVX|VexVVVV, $sse:::>
|
|||
|
|
|||
|
gf2p8affineqb<gfni>, 0x660f3ace, <gfni:cpu>GFNI, Modrm|<gfni:w1>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
gf2p8affineinvqb<gfni>, 0x660f3acf, <gfni:cpu>GFNI, Modrm|<gfni:w1>|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM }
|
|||
|
@@ -1477,6 +1504,9 @@ gf2p8mulb<gfni>, 0x660f38cf, <gfni:cpu>GFNI, Modrm|<gfni:w0>|NoSuf, { RegXMM|Uns
|
|||
|
true_us:1f:C>
|
|||
|
|
|||
|
// <Vxy> is used for VEX instructions with x/y suffixes.
|
|||
|
+// NOTE: The order of the "unnamed" ($-prefixed) entries here needs to remain
|
|||
|
+// in sync with <Exy>, for match_template()'s EVEX-to-VEX lowering to
|
|||
|
+// continue to work.
|
|||
|
<Vxy:vex:syntax:src, +
|
|||
|
$i:Vex:IntelSyntax:RegXMM|RegYMM|Unspecified|BaseIndex, +
|
|||
|
$a:Vex:ATTSyntax:RegXMM|RegYMM, +
|
|||
|
@@ -1491,7 +1521,9 @@ vandnp<sd>, 0x<sd:ppfx>55, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSiz
|
|||
|
vandp<sd>, 0x<sd:ppfx>54, AVX, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vblendp<sd>, 0x660c | <sd:opc>, AVX, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vblendvp<sd>, 0x664a | <sd:opc>, AVX, Modrm|Vex|Space0F3A|VexVVVV|VexW0|CheckOperandSize|NoSuf, { RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
-vbroadcastf128, 0x661a, AVX, Modrm|Vex=2|Space0F38|VexW=1|NoSuf, { Xmmword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vbroadcastf128, 0x661a, AVX, Modrm|Vex256|Space0F38|VexW0|NoSuf, { Xmmword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+// vbroadcastf32x4 in disguise (see vround{p,s}{s,d} comment)
|
|||
|
+vbroadcastf128, 0x661a, APX_F&AVX512VL, Modrm|EVex256|Space0F38|VexW0|Disp8MemShift=4|NoSuf, { Xmmword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vbroadcastsd, 0x6619, AVX, Modrm|Vex256|Space0F38|VexW0|NoSuf, { Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vbroadcastss, 0x6618, AVX, Modrm|Vex128|Space0F38|VexW0|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM|RegYMM }
|
|||
|
vcmp<frel>p<sd>, 0x<sd:ppfx>c2/0x<frel:imm>, AVX, Modrm|<frel:comm>|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1519,14 +1551,18 @@ vdivp<sd>, 0x<sd:ppfx>5e, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize
|
|||
|
vdivs<sd>, 0x<sd:spfx>5e, AVX, Modrm|VexLIG|Space0F|VexVVVV|VexWIG|NoSuf, { <sd:elem>|Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
vdppd, 0x6641, AVX, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
vdpps, 0x6640, AVX, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
-vextractf128, 0x6619, AVX, Modrm|Vex=2|Space0F3A|VexW=1|NoSuf, { Imm8, RegYMM, Unspecified|BaseIndex|RegXMM }
|
|||
|
-vextractps, 0x6617, AVX|AVX512F, Modrm|Vex128|EVex128|Space0F3A|VexWIG|Disp8MemShift=2|NoSuf, { Imm8, RegXMM, Reg32|Dword|Unspecified|BaseIndex }
|
|||
|
-vextractps, 0x6617, AVX|AVX512F|x64, RegMem|Vex128|EVex128|Space0F3A|VexWIG|NoSuf, { Imm8, RegXMM, Reg64 }
|
|||
|
+vextractf128, 0x6619, AVX, Modrm|Vex256|Space0F3A|VexW0|NoSuf, { Imm8, RegYMM, Unspecified|BaseIndex|RegXMM }
|
|||
|
+// vextractf32x4 in disguise (see vround{p,s}{s,d} comment)
|
|||
|
+vextractf128, 0x6619, APX_F&AVX512VL, Modrm|EVex256|Space0F3A|VexW0|Disp8MemShift=4|NoSuf, { Imm8, RegYMM, Xmmword|Unspecified|BaseIndex }
|
|||
|
+vextractps, 0x6617, AVX|AVX512F, Modrm|Vex128|EVex128|Space0F3A|VexWIG|Disp8MemShift=2|NoSuf, { Imm8, RegXMM, Reg32|Unspecified|BaseIndex }
|
|||
|
+vextractps, 0x6617, x64&(AVX|AVX512F), RegMem|Vex128|EVex128|Space0F3A|VexWIG|NoSuf, { Imm8, RegXMM, Reg64 }
|
|||
|
vhaddpd, 0x667c, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vhaddps, 0xf27c, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vhsubpd, 0x667d, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vhsubps, 0xf27d, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vinsertf128, 0x6618, AVX, Modrm|Vex256|Space0F3A|VexVVVV|VexW0|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegYMM, RegYMM }
|
|||
|
+// vinsertf32x4 in disguise (see vround{p,s}{s,d} comment)
|
|||
|
+vinsertf128, 0x6618, APX_F&AVX512VL, Modrm|EVex256|Space0F3A|VexVVVV|VexW0|Disp8MemShift=4|NoSuf, { Imm8, Xmmword|Unspecified|BaseIndex, RegYMM, RegYMM }
|
|||
|
vinsertps, 0x6621, AVX, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf, { Imm8, Dword|Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
vlddqu, 0xf2f0, AVX, Modrm|Vex|Space0F|VexWIG|CheckOperandSize|NoSuf, { Xmmword|Ymmword|Unspecified|BaseIndex, RegXMM|RegYMM }
|
|||
|
vldmxcsr, 0xae/2, AVX, Modrm|Vex128|Space0F|VexWIG|NoSuf, { Dword|Unspecified|BaseIndex }
|
|||
|
@@ -1544,7 +1580,7 @@ vmovap<sd>, 0x<sd:ppfx>28, AVX, D|Modrm|Vex|Space0F|VexWIG|CheckOperandSize|NoSu
|
|||
|
// support assembler for AMD64, we accept 64bit operand on vmovd so
|
|||
|
// that we can use one template for both SSE and AVX instructions.
|
|||
|
vmovd, 0x666e, AVX|AVX512F, D|Modrm|Vex128|EVex128|Space0F|Disp8MemShift=2|NoSuf, { Reg32|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vmovd, 0x667e, AVX|x64, D|RegMem|Vex=1|Space0F|VexW=2|NoSuf|Size64, { RegXMM, Reg64 }
|
|||
|
+vmovd, 0x667e, AVX&x64, D|RegMem|Vex=1|Space0F|VexW=2|NoSuf|Size64, { RegXMM, Reg64 }
|
|||
|
vmovddup, 0xf212, AVX, Modrm|Vex|Space0F|VexWIG|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
vmovddup, 0xf212, AVX, Modrm|Vex=2|Space0F|VexWIG|NoSuf, { Unspecified|BaseIndex|RegYMM, RegYMM }
|
|||
|
vmovdqa, 0x666f, AVX, D|Modrm|Vex|Space0F|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1561,7 +1597,7 @@ vmovntdqa, 0x662a, AVX|AVX2, Modrm|Vex|Space0F38|VexWIG|CheckOperandSize|NoSuf,
|
|||
|
vmovntp<sd>, 0x<sd:ppfx>2b, AVX, Modrm|Vex|Space0F|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM, Xmmword|Ymmword|Unspecified|BaseIndex }
|
|||
|
vmovq, 0xf37e, AVX, Load|Modrm|Vex=1|Space0F|VexWIG|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
vmovq, 0x66d6, AVX, Modrm|Vex=1|Space0F|VexWIG|NoSuf, { RegXMM, Qword|Unspecified|BaseIndex|RegXMM }
|
|||
|
-vmovq, 0x666e, AVX|AVX512F|x64, D|Modrm|Vex128|EVex128|Space0F|VexW1|Disp8MemShift=3|NoSuf, { Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vmovq, 0x666e, x64&(AVX|AVX512F), D|Modrm|Vex128|EVex128|Space0F|VexW1|Disp8MemShift=3|NoSuf, { Reg64|Unspecified|BaseIndex, RegXMM }
|
|||
|
vmovs<sd>, 0x<sd:spfx>10, AVX, D|Modrm|VexLIG|Space0F|VexWIG|NoSuf, { <sd:elem>|Unspecified|BaseIndex, RegXMM }
|
|||
|
vmovs<sd>, 0x<sd:spfx>10, AVX, D|Modrm|VexLIG|Space0F|VexVVVV|VexWIG|NoSuf, { RegXMM, RegXMM, RegXMM }
|
|||
|
vmovshdup, 0xf316, AVX, Modrm|Vex|Space0F|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1591,10 +1627,10 @@ vpblendw, 0x660e, AVX|AVX2, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|CheckOperandSize|
|
|||
|
vpcmpeq<bw>, 0x6674 | <bw:opc>, AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpcmpeqd, 0x6676, AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpcmpeqq, 0x6629, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf|Optimize, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
-vpcmpestri, 0x6661, AVX|No64, Modrm|Vex|Space0F3A|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-vpcmpestri, 0x6661, AVX|x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, Xmmword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-vpcmpestrm, 0x6660, AVX|No64, Modrm|Vex|Space0F3A|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-vpcmpestrm, 0x6660, AVX|x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, Xmmword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+vpcmpestri, 0x6661, AVX&No64, Modrm|Vex|Space0F3A|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+vpcmpestri, 0x6661, AVX&x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+vpcmpestrm, 0x6660, AVX&No64, Modrm|Vex|Space0F3A|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+vpcmpestrm, 0x6660, AVX&x64, Modrm|Vex|Space0F3A|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
vpcmpgt<bw>, 0x6664 | <bw:opc>, AVX|AVX2, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf|Optimize, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpcmpgtd, 0x6666, AVX|AVX2, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf|Optimize, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpcmpgtq, 0x6637, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf|Optimize, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1605,7 +1641,7 @@ vpermilps, 0x660c, AVX|AVX512F, Modrm|Vex|EVexDYN|Masking|Space0F38|VexVVVV|VexW
|
|||
|
vpermilps, 0x6604, AVX|AVX512F, Modrm|Vex|EVexDYN|Masking|Space0F3A|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vpermilpd, 0x660d, AVX, Modrm|Vex|Space0F38|VexVVVV|VexW0|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpermilpd, 0x6605, AVX, Modrm|Vex|Space0F3A|VexW0|CheckOperandSize|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
-vpextr<dq>, 0x6616, AVX|<dq:cpu64>, Modrm|Vex|Space0F3A|<dq:vexw64>|NoSuf, { Imm8, RegXMM, <dq:gpr>|Unspecified|BaseIndex }
|
|||
|
+vpextr<dq>, 0x6616, AVX&<dq:cpu64>, Modrm|Vex|Space0F3A|<dq:vexw64>|NoSuf, { Imm8, RegXMM, <dq:gpr>|Unspecified|BaseIndex }
|
|||
|
vpextrw, 0x66c5, AVX, Load|Modrm|Vex|Space0F|VexWIG|No_bSuf|No_wSuf|No_sSuf, { Imm8, RegXMM, Reg32|Reg64 }
|
|||
|
vpextr<bw>, 0x6614 | <bw:opc>, AVX, RegMem|Vex|Space0F3A|VexWIG|NoSuf, { Imm8, RegXMM, Reg32|Reg64 }
|
|||
|
vpextr<bw>, 0x6614 | <bw:opc>, AVX, Modrm|Vex|Space0F3A|VexWIG|NoSuf, { Imm8, RegXMM, <bw:elem>|Unspecified|BaseIndex }
|
|||
|
@@ -1618,7 +1654,7 @@ vphsubsw, 0x6607, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|
|
|||
|
vphsubw, 0x6605, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpinsrb, 0x6620, AVX, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf, { Imm8, Reg32|Reg64, RegXMM, RegXMM }
|
|||
|
vpinsrb, 0x6620, AVX, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf, { Imm8, Byte|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
-vpinsr<dq>, 0x6622, AVX|<dq:cpu64>, Modrm|Vex|Space0F3A|VexVVVV|<dq:vexw64>|NoSuf, { Imm8, <dq:gpr>|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
+vpinsr<dq>, 0x6622, AVX&<dq:cpu64>, Modrm|Vex|Space0F3A|VexVVVV|<dq:vexw64>|NoSuf, { Imm8, <dq:gpr>|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
vpinsrw, 0x66c4, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|No_bSuf|No_wSuf|No_sSuf, { Imm8, Reg32|Reg64, RegXMM, RegXMM }
|
|||
|
vpinsrw, 0x66c4, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|NoSuf, { Imm8, Word|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
vpmaddubsw, 0x6604, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1636,18 +1672,18 @@ vpminub, 0x66da, AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|N
|
|||
|
vpminud, 0x663b, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpminuw, 0x663a, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpmovmskb, 0x66d7, AVX|AVX2, Modrm|Vex|Space0F|VexWIG|No_bSuf|No_wSuf|No_sSuf, { RegXMM|RegYMM, Reg32|Reg64 }
|
|||
|
-vpmovsxbd, 0x6621, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovsxbq, 0x6622, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=1|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovsxbd, 0x6621, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovsxbq, 0x6622, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=1|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegXMM }
|
|||
|
vpmovsxbw, 0x6620, AVX, Modrm|Vex|Space0F38|VexWIG|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
vpmovsxdq, 0x6625, AVX, Modrm|Vex|Space0F38|VexWIG|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-vpmovsxwd, 0x6623, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovsxwq, 0x6624, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovzxbd, 0x6631, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovzxbq, 0x6632, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=1|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovsxwd, 0x6623, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovsxwq, 0x6624, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovzxbd, 0x6631, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovzxbq, 0x6632, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=1|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegXMM }
|
|||
|
vpmovzxbw, 0x6630, AVX, Modrm|Vex|Space0F38|VexWIG|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
vpmovzxdq, 0x6635, AVX, Modrm|Vex|Space0F38|VexWIG|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-vpmovzxwd, 0x6633, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovzxwq, 0x6634, AVX|AVX512F|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovzxwd, 0x6633, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovzxwq, 0x6634, AVX|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
vpmuldq, 0x6628, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpmulhrsw, 0x660b, AVX|AVX2, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpmulhuw, 0x66e4, AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1695,6 +1731,10 @@ vrcpps, 0x53, AVX, Modrm|Vex|Space0F|VexWIG|CheckOperandSize|NoSuf, { Unspecifie
|
|||
|
vrcpss, 0xf353, AVX, Modrm|Vex=3|Space0F|VexVVVV|VexWIG|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
vroundp<sd>, 0x6608 | <sd:opc>, AVX, Modrm|Vex|Space0F3A|VexWIG|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vrounds<sd>, 0x660a | <sd:opc>, AVX, Modrm|VexLIG|Space0F3A|VexVVVV|VexWIG|NoSuf, { Imm8, <sd:elem>|Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+// These are really clones of VRNDSCALE{P,S}{S,D}, with broadcast, masking, SAE,
|
|||
|
+// 512-bit operand size, and register sources dropped.
|
|||
|
+vroundp<sd>, 0x6608 | <sd:opc>, APX_F&AVX512VL, Modrm|Space0F3A|<sd:vexw>|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8, Xmmword|Ymmword|Unspecified|BaseIndex, RegXMM|RegYMM }
|
|||
|
+vrounds<sd>, 0x660a | <sd:opc>, APX_F&AVX512F, Modrm|EVexLIG|Space0F3A|VexVVVV|<sd:vexw>|Disp8MemShift|NoSuf, { Imm8, <sd:elem>|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
vrsqrtps, 0x52, AVX, Modrm|Vex|Space0F|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vrsqrtss, 0xf352, AVX, Modrm|Vex=3|Space0F|VexVVVV|VexWIG|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
vshufp<sd>, 0x<sd:ppfx>c6, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1714,22 +1754,24 @@ vzeroupper, 0x77, AVX, Vex|Space0F|VexWIG|NoSuf, {}
|
|||
|
|
|||
|
// 256bit integer AVX2 instructions.
|
|||
|
|
|||
|
-vpmovsxbd, 0x6621, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vpmovsxbq, 0x6622, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovsxbd, 0x6621, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovsxbq, 0x6622, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vpmovsxbw, 0x6620, AVX2, Modrm|Vex=2|Space0F38|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegYMM }
|
|||
|
vpmovsxdq, 0x6625, AVX2, Modrm|Vex=2|Space0F38|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegYMM }
|
|||
|
-vpmovsxwd, 0x6623, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vpmovsxwq, 0x6624, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vpmovzxbd, 0x6631, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vpmovzxbq, 0x6632, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovsxwd, 0x6623, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovsxwq, 0x6624, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovzxbd, 0x6631, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovzxbq, 0x6632, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vpmovzxbw, 0x6630, AVX2, Modrm|Vex=2|Space0F38|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegYMM }
|
|||
|
vpmovzxdq, 0x6635, AVX2, Modrm|Vex=2|Space0F38|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegYMM }
|
|||
|
-vpmovzxwd, 0x6633, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vpmovzxwq, 0x6634, AVX2|AVX512F|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovzxwd, 0x6633, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovzxwq, 0x6634, AVX2|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|VexWIG|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
|
|||
|
// New AVX2 instructions.
|
|||
|
|
|||
|
-vbroadcasti128, 0x665A, AVX2, Modrm|Vex=2|Space0F38|VexW=1|NoSuf, { Xmmword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vbroadcasti128, 0x665A, AVX2, Modrm|Vex256|Space0F38|VexW0|NoSuf, { Xmmword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+// vbroadcasti32x4 in disguise (see vround{p,s}{s,d} comment)
|
|||
|
+vbroadcasti128, 0x665a, APX_F&AVX512VL, Modrm|EVex256|Space0F38|VexW0|Disp8MemShift=4|NoSuf, { Xmmword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vbroadcastsd, 0x6619, AVX2, Modrm|Vex=2|Space0F38|VexW=1|NoSuf, { RegXMM, RegYMM }
|
|||
|
vbroadcastss, 0x6618, AVX2|AVX512F, Modrm|Vex|EVexDYN|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vpblendd, 0x6602, AVX2, Modrm|Vex|Space0F3A|VexVVVV|VexW0|CheckOperandSize|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
@@ -1741,8 +1783,12 @@ vpermd, 0x6636, AVX2|AVX512F, Modrm|Vex256|EVexDYN|Masking|Space0F38|VexVVVV|Vex
|
|||
|
vpermpd, 0x6601, AVX2|AVX512F, Modrm|Vex256|EVexDYN|Masking|Space0F3A|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegYMM|RegZMM }
|
|||
|
vpermps, 0x6616, AVX2|AVX512F, Modrm|Vex256|EVexDYN|Masking|Space0F38|VexVVVV|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegYMM|RegZMM, RegYMM|RegZMM }
|
|||
|
vpermq, 0x6600, AVX2|AVX512F, Modrm|Vex256|EVexDYN|Masking|Space0F3A|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegYMM|RegZMM }
|
|||
|
-vextracti128, 0x6639, AVX2, Modrm|Vex=2|Space0F3A|VexW=1|NoSuf, { Imm8, RegYMM, Unspecified|BaseIndex|RegXMM }
|
|||
|
+vextracti128, 0x6639, AVX2, Modrm|Vex256|Space0F3A|VexW0|NoSuf, { Imm8, RegYMM, Unspecified|BaseIndex|RegXMM }
|
|||
|
+// vextracti32x4 in disguise (see vround{p,s}{s,d} comment)
|
|||
|
+vextracti128, 0x6639, APX_F&AVX512VL, Modrm|EVex256|Space0F3A|VexW0|Disp8MemShift=4|NoSuf, { Imm8, RegYMM, Xmmword|Unspecified|BaseIndex }
|
|||
|
vinserti128, 0x6638, AVX2, Modrm|Vex256|Space0F3A|VexVVVV|VexW0|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegYMM, RegYMM }
|
|||
|
+// vinserti32x4 in disguise (see vround{p,s}{s,d} comment)
|
|||
|
+vinserti128, 0x6638, APX_F&AVX512VL, Modrm|EVex256|Space0F3A|VexVVVV|VexW0|Disp8MemShift=4|NoSuf, { Imm8, Xmmword|Unspecified|BaseIndex, RegYMM, RegYMM }
|
|||
|
vpmaskmov<dq>, 0x668e, AVX2, Modrm|Vex|Space0F38|VexVVVV|<dq:vexw>|CheckOperandSize|NoSuf, { RegXMM|RegYMM, RegXMM|RegYMM, Xmmword|Ymmword|Unspecified|BaseIndex }
|
|||
|
vpmaskmov<dq>, 0x668c, AVX2, Modrm|Vex|Space0F38|VexVVVV|<dq:vexw>|CheckOperandSize|NoSuf, { Xmmword|Ymmword|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
vpsllv<dq>, 0x6647, AVX2|AVX512F, Modrm|Vex|EVexDYN|Masking|Space0F38|VexVVVV|<dq:vexw>|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|<dq:elem>|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
@@ -1765,26 +1811,26 @@ vpgatherqq, 0x6691, AVX2, Modrm|Vex256|Space0F38|VexVVVV|VexW1|SwapSources|NoSuf
|
|||
|
|
|||
|
// AES + AVX
|
|||
|
|
|||
|
-vaesdec, 0x66de, AVX|AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vaesdeclast, 0x66df, AVX|AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vaesenc, 0x66dc, AVX|AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vaesenclast, 0x66dd, AVX|AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vaesimc, 0x66db, AVX|AES, Modrm|Vex|Space0F38|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
-vaeskeygenassist, 0x66df, AVX|AES, Modrm|Vex|Space0F3A|VexWIG|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+vaesdec, 0x66de, AVX&AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vaesdeclast, 0x66df, AVX&AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vaesenc, 0x66dc, AVX&AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vaesenclast, 0x66dd, AVX&AES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vaesimc, 0x66db, AVX&AES, Modrm|Vex|Space0F38|VexWIG|NoSuf, { Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
+vaeskeygenassist, 0x66df, AVX&AES, Modrm|Vex|Space0F3A|VexWIG|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM, RegXMM }
|
|||
|
|
|||
|
// PCLMULQDQ + AVX
|
|||
|
|
|||
|
-vpclmulqdq, 0x6644, AVX|PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vpclmullqlqdq, 0x6644/0x00, AVX|PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vpclmulhqlqdq, 0x6644/0x01, AVX|PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vpclmullqhqdq, 0x6644/0x10, AVX|PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
-vpclmulhqhqdq, 0x6644/0x11, AVX|PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vpclmulqdq, 0x6644, AVX&PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vpclmullqlqdq, 0x6644/0x00, AVX&PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vpclmulhqlqdq, 0x6644/0x01, AVX&PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vpclmullqhqdq, 0x6644/0x10, AVX&PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
+vpclmulhqhqdq, 0x6644/0x11, AVX&PCLMULQDQ, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM }
|
|||
|
|
|||
|
// GFNI + AVX
|
|||
|
|
|||
|
-vgf2p8affineinvqb, 0x66cf, AVX|GFNI, Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
-vgf2p8affineqb, 0x66ce, AVX|GFNI, Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
-vgf2p8mulb, 0x66cf, GFNI|AVX|AVX512F, Modrm|Vex|EVexDYN|Masking|Space0F38|VexVVVV|VexW0|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vgf2p8affineinvqb, 0x66cf, AVX&GFNI, Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
+vgf2p8affineqb, 0x66ce, AVX&GFNI, Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
|
|||
|
+vgf2p8mulb, 0x66cf, GFNI&(AVX|AVX512F), Modrm|Vex|EVexDYN|Masking|Space0F38|VexVVVV|VexW0|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
// FSGSBASE, RDRND and F16C
|
|||
|
|
|||
|
@@ -1803,8 +1849,8 @@ vcvtps2ph, 0x661d, F16C, Modrm|Vex=2|Space0F3A|VexW=1|NoSuf, { Imm8, RegYMM, Uns
|
|||
|
<fma:opc, 132:10, 213:20, 231:30>
|
|||
|
|
|||
|
<sdh:cpu:cpudq:fma:ppfx:spfx:pfx:spc1:spc2:opc:vex:vexlig:vexw:elem, +
|
|||
|
- s:AVX512F:AVX512DQ:FMA|AVX|AVX512F::f3:66:Space0F:Space0F38:0:Vex|EVexDYN:VexLIG|EVexLIG:VexW0:Dword, +
|
|||
|
- d:AVX512F:AVX512DQ:FMA|AVX|AVX512F:66:f2:66:Space0F:Space0F38:1:Vex|EVexDYN:VexLIG|EVexLIG:VexW1:Qword, +
|
|||
|
+ s:AVX512F:AVX512DQ:FMA|AVX512F::f3:66:Space0F:Space0F38:0:Vex|EVexDYN:VexLIG|EVexLIG:VexW0:Dword, +
|
|||
|
+ d:AVX512F:AVX512DQ:FMA|AVX512F:66:f2:66:Space0F:Space0F38:1:Vex|EVexDYN:VexLIG|EVexLIG:VexW1:Qword, +
|
|||
|
h:AVX512_FP16:AVX512_FP16:AVX512_FP16::f3::EVexMap5:EVexMap6:0::EVexLIG:VexW0:Word>
|
|||
|
|
|||
|
vfmadd<fma>p<sdh>, 0x6688 | 0x<fma:opc>, <sdh:fma>, Modrm|<sdh:vex>|Masking|<sdh:spc2>|VexVVVV|<sdh:vexw>|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
@@ -1831,14 +1877,14 @@ xtest, 0xf01d6, HLE|RTM, NoSuf, {}
|
|||
|
|
|||
|
// BMI2 instructions.
|
|||
|
|
|||
|
-bzhi, 0xf5, BMI2, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-mulx, 0xf2f6, BMI2, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
-pdep, 0xf2f5, BMI2, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
-pext, 0xf3f5, BMI2, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
-rorx, 0xf2f0, BMI2, Modrm|CheckOperandSize|Vex128|Space0F3A|No_bSuf|No_wSuf|No_sSuf, { Imm8|Imm8S, Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-sarx, 0xf3f7, BMI2, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-shlx, 0x66f7, BMI2, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-shrx, 0xf2f7, BMI2, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+bzhi, 0xf5, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf|NF, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+mulx, 0xf2f6, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
+pdep, 0xf2f5, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
+pext, 0xf3f5, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
+rorx, 0xf2f0, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F3A|No_bSuf|No_wSuf|No_sSuf, { Imm8|Imm8S, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+sarx, 0xf3f7, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+shlx, 0x66f7, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+shrx, 0xf2f7, APX_F(BMI2), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
|
|||
|
// FMA4 instructions
|
|||
|
|
|||
|
@@ -1908,12 +1954,13 @@ lwpins, 0x12/0, LWP, Modrm|SpaceXOP0A|NoSuf|VexVVVV|Vex, { Imm32|Imm32S, Reg32|U
|
|||
|
|
|||
|
// BMI instructions
|
|||
|
|
|||
|
-andn, 0xf2, BMI, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
-bextr, 0xf7, BMI, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-blsi, 0xf3/3, BMI, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-blsmsk, 0xf3/2, BMI, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-blsr, 0xf3/1, BMI, Modrm|CheckOperandSize|Vex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-tzcnt, 0xf30fbc, BMI, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+andn, 0xf2, APX_F(BMI), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf|NF, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
+bextr, 0xf7, APX_F(BMI), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|SwapSources|No_bSuf|No_wSuf|No_sSuf|NF, { Reg32|Reg64, Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+blsi, 0xf3/3, APX_F(BMI), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf|NF, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+blsmsk, 0xf3/2, APX_F(BMI), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf|NF, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+blsr, 0xf3/1, APX_F(BMI), Modrm|CheckOperandSize|Vex128|EVex128|Space0F38|VexVVVV|No_bSuf|No_wSuf|No_sSuf|NF, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+tzcnt, 0xf30fbc, BMI, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+tzcnt, 0xf4, BMI&APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
// TBM instructions
|
|||
|
|
|||
|
@@ -1990,10 +2037,12 @@ insertq, 0xf20f79, SSE4a, Modrm|NoSuf, { RegXMM, RegXMM }
|
|||
|
insertq, 0xf20f78, SSE4a, Modrm|NoSuf, { Imm8, Imm8, RegXMM, RegXMM }
|
|||
|
|
|||
|
// LZCNT instruction
|
|||
|
-lzcnt, 0xf30fbd, LZCNT, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+lzcnt, 0xf30fbd, LZCNT, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+lzcnt, 0xf5, LZCNT&APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
// POPCNT instruction
|
|||
|
-popcnt, 0xf30fb8, POPCNT, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+popcnt, 0xf30fb8, POPCNT, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+popcnt, 0x88, POPCNT&APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|EVexMap4|NF, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
// VIA PadLock extensions.
|
|||
|
xstore-rng, 0xfa7c0, PadLock, NoSuf|RepPrefixOk, {}
|
|||
|
@@ -2016,8 +2065,11 @@ xcryptofb, 0xf30fa7e8, PadLock, NoSuf|RepPrefixOk, {}
|
|||
|
xstore, 0xfa7c0, PadLock, NoSuf|RepPrefixOk, {}
|
|||
|
|
|||
|
// Multy-precision Add Carry, rdseed instructions.
|
|||
|
-adcx, 0x660f38f6, ADX, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
-adox, 0xf30f38f6, ADX, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+<adx:pfx, c:66, o:f3>
|
|||
|
+ad<adx>x, 0x<adx:pfx>66, ADX&APX_F, C|Modrm|CheckOperandSize|No_bSuf|No_wSuf|No_sSuf|DstVVVV|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
|
|||
|
+ad<adx>x, 0x<adx:pfx>0f38f6, ADX, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+ad<adx>x, 0x<adx:pfx>66, ADX&APX_F, Modrm|CheckOperandSize|No_bSuf|No_wSuf|No_sSuf|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
+<adx>
|
|||
|
rdseed, 0xfc7/7, RdSeed, Modrm|NoSuf, { Reg16|Reg32|Reg64 }
|
|||
|
|
|||
|
// SMAP instructions.
|
|||
|
@@ -2030,12 +2082,12 @@ bnd, 0xf2, MPX, NoSuf|IsPrefix, {}
|
|||
|
// MPX instructions.
|
|||
|
bndmk, 0xf30f1b, MPX, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex, RegBND }
|
|||
|
bndmov, 0x660f1a, MPX, D|Modrm|NoSuf, { Xmmword|Unspecified|BaseIndex|RegBND, RegBND }
|
|||
|
-bndcl, 0xf30f1a, MPX|No64, Modrm|Anysize|IgnoreSize|NoSuf, { Reg32|BaseIndex, RegBND }
|
|||
|
-bndcl, 0xf30f1a, MPX|x64, Modrm|Anysize|IgnoreSize|NoSuf|NoRex64, { Reg64|BaseIndex, RegBND }
|
|||
|
-bndcu, 0xf20f1a, MPX|No64, Modrm|Anysize|IgnoreSize|NoSuf, { Reg32|BaseIndex, RegBND }
|
|||
|
-bndcu, 0xf20f1a, MPX|x64, Modrm|Anysize|IgnoreSize|NoSuf|NoRex64, { Reg64|BaseIndex, RegBND }
|
|||
|
-bndcn, 0xf20f1b, MPX|No64, Modrm|Anysize|IgnoreSize|NoSuf, { Reg32|BaseIndex, RegBND }
|
|||
|
-bndcn, 0xf20f1b, MPX|x64, Modrm|Anysize|IgnoreSize|NoSuf|NoRex64, { Reg64|BaseIndex, RegBND }
|
|||
|
+bndcl, 0xf30f1a, MPX&No64, Modrm|Anysize|IgnoreSize|NoSuf, { Reg32|BaseIndex, RegBND }
|
|||
|
+bndcl, 0xf30f1a, MPX&x64, Modrm|Anysize|IgnoreSize|NoSuf|NoRex64, { Reg64|BaseIndex, RegBND }
|
|||
|
+bndcu, 0xf20f1a, MPX&No64, Modrm|Anysize|IgnoreSize|NoSuf, { Reg32|BaseIndex, RegBND }
|
|||
|
+bndcu, 0xf20f1a, MPX&x64, Modrm|Anysize|IgnoreSize|NoSuf|NoRex64, { Reg64|BaseIndex, RegBND }
|
|||
|
+bndcn, 0xf20f1b, MPX&No64, Modrm|Anysize|IgnoreSize|NoSuf, { Reg32|BaseIndex, RegBND }
|
|||
|
+bndcn, 0xf20f1b, MPX&x64, Modrm|Anysize|IgnoreSize|NoSuf|NoRex64, { Reg64|BaseIndex, RegBND }
|
|||
|
bndstx, 0x0f1b, MPX, Modrm|Anysize|IgnoreSize|NoSuf, { RegBND, BaseIndex }
|
|||
|
bndldx, 0x0f1a, MPX, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex, RegBND }
|
|||
|
|
|||
|
@@ -2073,26 +2125,29 @@ vsm4rnds4, 0xf2da, SM4, Modrm|Space0F38|Vex|VexVVVV|VexW0|CheckOperandSize|NoSuf
|
|||
|
|
|||
|
// VAES
|
|||
|
|
|||
|
-vaesdec, 0x66de, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vaesdeclast, 0x66df, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vaesenc, 0x66dc, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vaesenclast, 0x66dd, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vaesdec, 0x66de, VAES&(AVX|AVX512F), Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vaesdeclast, 0x66df, VAES&(AVX|AVX512F), Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vaesenc, 0x66dc, VAES&(AVX|AVX512F), Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vaesenclast, 0x66dd, VAES&(AVX|AVX512F), Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
// VAES instructions end
|
|||
|
|
|||
|
// VPCLMULQDQ instructions
|
|||
|
|
|||
|
-vpclmulqdq, 0x6644, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vpclmullqlqdq, 0x6644/0x00, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vpclmulhqlqdq, 0x6644/0x01, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vpclmullqhqdq, 0x6644/0x10, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vpclmulqdq, 0x6644, VPCLMULQDQ&(AVX|AVX512F), Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vpclmullqlqdq, 0x6644/0x00, VPCLMULQDQ&(AVX|AVX512F), Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vpclmulhqlqdq, 0x6644/0x01, VPCLMULQDQ&(AVX|AVX512F), Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vpclmullqhqdq, 0x6644/0x10, VPCLMULQDQ&(AVX|AVX512F), Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ&(AVX|AVX512F), Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
// VPCLMULQDQ instructions end
|
|||
|
|
|||
|
// AVX512F instructions.
|
|||
|
|
|||
|
// <Exy> is used for EVEX instructions with x/y suffixes.
|
|||
|
+// NOTE: The order of the "unnamed" ($-prefixed) entries here needs to remain
|
|||
|
+// in sync with <Vxy>, for match_template()'s EVEX-to-VEX lowering to
|
|||
|
+// continue to work.
|
|||
|
<Exy:vl:attr:sr:sae:src:dst, +
|
|||
|
$z::EVex512|Disp8MemShift=6:StaticRounding|SAE:SAE:RegZMM|Unspecified|BaseIndex:RegYMM, +
|
|||
|
$i:AVX512VL:Disp8ShiftVL|IntelSyntax:::RegXMM|RegYMM|Unspecified|BaseIndex:RegXMM, +
|
|||
|
@@ -2106,9 +2161,9 @@ kor<bw>, 0x<bw:kpfx>45, <bw:kcpu>, Modrm|Vex256|Space0F|VexVVVV|VexW0|NoSuf, { R
|
|||
|
kxnor<bw>, 0x<bw:kpfx>46, <bw:kcpu>, Modrm|Vex256|Space0F|VexVVVV|VexW0|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
kxor<bw>, 0x<bw:kpfx>47, <bw:kcpu>, Modrm|Vex256|Space0F|VexVVVV|VexW0|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
|
|||
|
-kmov<bw>, 0x<bw:kpfx>90, <bw:kcpu>, Modrm|Vex128|Space0F|VexW0|NoSuf, { RegMask|<bw:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
-kmov<bw>, 0x<bw:kpfx>91, <bw:kcpu>, Modrm|Vex128|Space0F|VexW0|NoSuf, { RegMask, <bw:elem>|Unspecified|BaseIndex }
|
|||
|
-kmov<bw>, 0x<bw:kpfx>92, <bw:kcpu>, D|Modrm|Vex128|Space0F|VexW0|NoSuf, { Reg32, RegMask }
|
|||
|
+kmov<bw>, 0x<bw:kpfx>90, APX_F(<bw:kcpu>), Modrm|Vex128|EVex128|Space0F|VexW0|NoSuf, { RegMask|<bw:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
+kmov<bw>, 0x<bw:kpfx>91, APX_F(<bw:kcpu>), Modrm|Vex128|EVex128|Space0F|VexW0|NoSuf, { RegMask, <bw:elem>|Unspecified|BaseIndex }
|
|||
|
+kmov<bw>, 0x<bw:kpfx>92, APX_F(<bw:kcpu>), D|Modrm|Vex128|EVex128|Space0F|VexW0|NoSuf, { Reg32, RegMask }
|
|||
|
|
|||
|
knot<bw>, 0x<bw:kpfx>44, <bw:kcpu>, Modrm|Vex128|Space0F|VexW0|NoSuf, { RegMask, RegMask }
|
|||
|
kortest<bw>, 0x<bw:kpfx>98, <bw:kcpu>, Modrm|Vex128|Space0F|VexW0|NoSuf, { RegMask, RegMask }
|
|||
|
@@ -2188,11 +2243,11 @@ vcvtudq2pd, 0xF37A, AVX512F, Modrm|EVex=1|Masking|Space0F|VexW=1|Broadcast|Disp8
|
|||
|
vcvtdq2ps, 0x5B, AVX512F, Modrm|Masking|Space0F|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vcvtps2udq, 0x79, AVX512F, Modrm|Masking|Space0F|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
-vcvtpd2dq<Exy>, 0xf2e6, AVX512F|<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
+vcvtpd2dq<Exy>, 0xf2e6, AVX512F&<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
|
|||
|
-vcvtpd2ps<Exy>, 0x665a, AVX512F|<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
+vcvtpd2ps<Exy>, 0x665a, AVX512F&<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
|
|||
|
-vcvtpd2udq<Exy>, 0x79, AVX512F|<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
+vcvtpd2udq<Exy>, 0x79, AVX512F&<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
|
|||
|
vcvtph2ps, 0x6613, AVX512F, Modrm|EVex512|Masking|Space0F38|VexW0|Disp8MemShift=5|NoSuf|SAE, { RegYMM|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
@@ -2223,8 +2278,8 @@ vcvtusi2ss, 0xF37B, AVX512F, Modrm|EVexLIG|Space0F|VexVVVV|Disp8ShiftVL|No_bSuf|
|
|||
|
|
|||
|
vcvtss2sd, 0xF35A, AVX512F, Modrm|EVexLIG|Masking|Space0F|VexVVVV|VexW0|Disp8MemShift=2|NoSuf|SAE, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
|
|||
|
-vcvttpd2dq<Exy>, 0x66e6, AVX512F|<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sae>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
-vcvttpd2udq<Exy>, 0x78, AVX512F|<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sae>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
+vcvttpd2dq<Exy>, 0x66e6, AVX512F&<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sae>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
+vcvttpd2udq<Exy>, 0x78, AVX512F&<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sae>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
|
|||
|
vcvttps2dq, 0xF35B, AVX512F, Modrm|Masking|Space0F|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vcvttps2udq, 0x78, AVX512F, Modrm|Masking|Space0F|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
@@ -2272,8 +2327,8 @@ vmovntdqa, 0x662A, AVX512F, Modrm|Space0F38|VexW=1|Disp8ShiftVL|CheckOperandSize
|
|||
|
vgetexpp<sdh>, 0x6642, <sdh:cpu>, Modrm|Masking|<sdh:spc2>|<sdh:vexw>|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { RegXMM|RegYMM|RegZMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vgetexps<sdh>, 0x6643, <sdh:cpu>, Modrm|EVexLIG|Masking|<sdh:spc2>|VexVVVV|<sdh:vexw>|Disp8MemShift|NoSuf|SAE, { RegXMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
|
|||
|
-vinsertf32x4, 0x6618, AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=4|CheckOperandSize|NoSuf, { Imm8, RegXMM|XMMword|Unspecified|BaseIndex, RegYMM|RegZMM, RegYMM|RegZMM }
|
|||
|
-vinserti32x4, 0x6638, AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=4|CheckOperandSize|NoSuf, { Imm8, RegXMM|XMMword|Unspecified|BaseIndex, RegYMM|RegZMM, RegYMM|RegZMM }
|
|||
|
+vinsertf32x4, 0x6618, AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=4|CheckOperandSize|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegYMM|RegZMM, RegYMM|RegZMM }
|
|||
|
+vinserti32x4, 0x6638, AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=4|CheckOperandSize|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegYMM|RegZMM, RegYMM|RegZMM }
|
|||
|
|
|||
|
vinsertf64x4, 0x661A, AVX512F, Modrm|EVex=1|Masking|Space0F3A|VexVVVV|VexW1|Disp8MemShift=5|NoSuf, { Imm8, RegYMM|Unspecified|BaseIndex, RegZMM, RegZMM }
|
|||
|
vinserti64x4, 0x663A, AVX512F, Modrm|EVex=1|Masking|Space0F3A|VexVVVV|VexW1|Disp8MemShift=5|NoSuf, { Imm8, RegYMM|Unspecified|BaseIndex, RegZMM, RegZMM }
|
|||
|
@@ -2470,17 +2525,17 @@ clflushopt, 0x660fae/7, ClflushOpt, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex
|
|||
|
|
|||
|
// XSAVES/XRSTORS instructions.
|
|||
|
|
|||
|
-xrstors, 0xfc7/3, XSAVES, Modrm|NoSuf, { Unspecified|BaseIndex }
|
|||
|
-xrstors64, 0xfc7/3, XSAVES|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
-xsaves, 0xfc7/5, XSAVES, Modrm|NoSuf, { Unspecified|BaseIndex }
|
|||
|
-xsaves64, 0xfc7/5, XSAVES|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
+xrstors, 0xfc7/3, XSAVES, Modrm|NoSuf|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xrstors64, 0xfc7/3, XSAVES&x64, Modrm|NoSuf|Size64|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xsaves, 0xfc7/5, XSAVES, Modrm|NoSuf|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xsaves64, 0xfc7/5, XSAVES&x64, Modrm|NoSuf|Size64|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
|
|||
|
// XSAVES instructions end.
|
|||
|
|
|||
|
// XSAVEC instructions.
|
|||
|
|
|||
|
-xsavec, 0xfc7/4, XSAVEC, Modrm|NoSuf, { Unspecified|BaseIndex }
|
|||
|
-xsavec64, 0xfc7/4, XSAVEC|x64, Modrm|NoSuf|Size64, { Unspecified|BaseIndex }
|
|||
|
+xsavec, 0xfc7/4, XSAVEC, Modrm|NoSuf|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
+xsavec64, 0xfc7/4, XSAVEC&x64, Modrm|NoSuf|Size64|NoEgpr, { Unspecified|BaseIndex }
|
|||
|
|
|||
|
// XSAVEC instructions end.
|
|||
|
|
|||
|
@@ -2494,108 +2549,108 @@ enclv, 0xf01c0, SE1, NoSuf, {}
|
|||
|
|
|||
|
// AVX512VL instructions.
|
|||
|
|
|||
|
-vgatherdpd, 0x6692, AVX512F|AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { Qword|Unspecified|BaseIndex, RegXMM|RegYMM }
|
|||
|
-vgatherdps, 0x6692, AVX512F|AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vgatherdps, 0x6692, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vgatherqp<sd>, 0x6693, AVX512F|AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<sd:vexw>|Disp8MemShift|VecSIB128|NoSuf, { <sd:elem>|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vgatherqpd, 0x6693, AVX512F|AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vgatherqps, 0x6693, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpgatherdd, 0x6690, AVX512F|AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpgatherdd, 0x6690, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vpgatherdq, 0x6690, AVX512F|AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { Qword|Unspecified|BaseIndex, RegXMM|RegYMM }
|
|||
|
-vpgatherq<dq>, 0x6691, AVX512F|AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<dq:vexw>|Disp8MemShift|VecSIB128|NoSuf, { <dq:elem>|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpgatherqd, 0x6691, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpgatherqq, 0x6691, AVX512F|AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-
|
|||
|
-vpscatterdd, 0x66A0, AVX512F|AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
-vpscatterdd, 0x66A0, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegYMM, Dword|Unspecified|BaseIndex }
|
|||
|
-vpscatterdq, 0x66A0, AVX512F|AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { RegXMM|RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
-vpscatterq<dq>, 0x66A1, AVX512F|AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<dq:vexw>|Disp8MemShift|VecSIB128|NoSuf, { RegXMM, <dq:elem>|Unspecified|BaseIndex }
|
|||
|
-vpscatterqd, 0x66A1, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
-vpscatterqq, 0x66A1, AVX512F|AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
-vscatterdpd, 0x66A2, AVX512F|AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { RegXMM|RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
-vscatterdps, 0x66A2, AVX512F|AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
-vscatterdps, 0x66A2, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegYMM, Dword|Unspecified|BaseIndex }
|
|||
|
-vscatterqp<sd>, 0x66A3, AVX512F|AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<sd:vexw>|Disp8MemShift|VecSIB128|NoSuf, { RegXMM, <sd:elem>|Unspecified|BaseIndex }
|
|||
|
-vscatterqpd, 0x66A3, AVX512F|AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
-vscatterqps, 0x66A3, AVX512F|AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-vcvtdq2pd, 0xF3E6, AVX512F|AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtdq2pd, 0xF3E6, AVX512F|AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vcvtudq2pd, 0xF37A, AVX512F|AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtudq2pd, 0xF37A, AVX512F|AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-
|
|||
|
-vcvtph2ps, 0x6613, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtph2ps, 0x6613, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
-
|
|||
|
-vcvtps2pd, 0x5A, AVX512F|AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtps2pd, 0x5A, AVX512F|AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
-
|
|||
|
-vcvtps2ph, 0x661D, AVX512F|AVX512VL, Modrm|EVex128|Masking|Space0F3A|VexW0|Disp8MemShift=3|NoSuf, { Imm8, RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vcvtps2ph, 0x661D, AVX512F|AVX512VL, Modrm|EVex256|Masking|Space0F3A|VexW0|Disp8MemShift=4|NoSuf, { Imm8, RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-vmovddup, 0xF212, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F|VexW1|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-
|
|||
|
-vpmovdb, 0xF331, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovdb, 0xF331, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovsdb, 0xF321, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovsdb, 0xF321, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovusdb, 0xF311, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovusdb, 0xF311, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-vpmovdw, 0xF333, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovdw, 0xF333, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
-vpmovsdw, 0xF323, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovsdw, 0xF323, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
-vpmovusdw, 0xF313, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovusdw, 0xF313, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-vpmovqb, 0xF332, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=1|NoSuf, { RegXMM, RegXMM|Word|Unspecified|BaseIndex }
|
|||
|
-vpmovqb, 0xF332, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegYMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovsqb, 0xF322, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=1|NoSuf, { RegXMM, RegXMM|Word|Unspecified|BaseIndex }
|
|||
|
-vpmovsqb, 0xF322, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegYMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovusqb, 0xF312, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=1|NoSuf, { RegXMM, RegXMM|Word|Unspecified|BaseIndex }
|
|||
|
-vpmovusqb, 0xF312, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegYMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-vpmovqd, 0xF335, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovqd, 0xF335, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
-vpmovsqd, 0xF325, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovsqd, 0xF325, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
-vpmovusqd, 0xF315, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovusqd, 0xF315, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-vpmovqw, 0xF334, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovqw, 0xF334, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovsqw, 0xF324, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovsqw, 0xF324, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovusqw, 0xF314, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
-vpmovusqw, 0xF314, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-
|
|||
|
-vpmovsxdq, 0x6625, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovsxdq, 0x6625, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
-vpmovzxdq, 0x6635, AVX512F|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovzxdq, 0x6635, AVX512F|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vgatherdpd, 0x6692, AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { Qword|Unspecified|BaseIndex, RegXMM|RegYMM }
|
|||
|
+vgatherdps, 0x6692, AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vgatherdps, 0x6692, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vgatherqp<sd>, 0x6693, AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<sd:vexw>|Disp8MemShift|VecSIB128|NoSuf, { <sd:elem>|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vgatherqpd, 0x6693, AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vgatherqps, 0x6693, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpgatherdd, 0x6690, AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpgatherdd, 0x6690, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpgatherdq, 0x6690, AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { Qword|Unspecified|BaseIndex, RegXMM|RegYMM }
|
|||
|
+vpgatherq<dq>, 0x6691, AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<dq:vexw>|Disp8MemShift|VecSIB128|NoSuf, { <dq:elem>|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpgatherqd, 0x6691, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpgatherqq, 0x6691, AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+
|
|||
|
+vpscatterdd, 0x66A0, AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
+vpscatterdd, 0x66A0, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegYMM, Dword|Unspecified|BaseIndex }
|
|||
|
+vpscatterdq, 0x66A0, AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { RegXMM|RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
+vpscatterq<dq>, 0x66A1, AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<dq:vexw>|Disp8MemShift|VecSIB128|NoSuf, { RegXMM, <dq:elem>|Unspecified|BaseIndex }
|
|||
|
+vpscatterqd, 0x66A1, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
+vpscatterqq, 0x66A1, AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
+vscatterdpd, 0x66A2, AVX512VL, Modrm|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB128|NoSuf, { RegXMM|RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
+vscatterdps, 0x66A2, AVX512VL, Modrm|EVex=2|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB128|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
+vscatterdps, 0x66A2, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegYMM, Dword|Unspecified|BaseIndex }
|
|||
|
+vscatterqp<sd>, 0x66A3, AVX512VL, Modrm|EVex128|Masking|NoDefMask|Space0F38|<sd:vexw>|Disp8MemShift|VecSIB128|NoSuf, { RegXMM, <sd:elem>|Unspecified|BaseIndex }
|
|||
|
+vscatterqpd, 0x66A3, AVX512VL, Modrm|EVex256|Masking|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|NoSuf, { RegYMM, Qword|Unspecified|BaseIndex }
|
|||
|
+vscatterqps, 0x66A3, AVX512VL, Modrm|EVex=3|Masking|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB256|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+vcvtdq2pd, 0xF3E6, AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtdq2pd, 0xF3E6, AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtudq2pd, 0xF37A, AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtudq2pd, 0xF37A, AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+
|
|||
|
+vcvtph2ps, 0x6613, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtph2ps, 0x6613, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
+
|
|||
|
+vcvtps2pd, 0x5A, AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtps2pd, 0x5A, AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+
|
|||
|
+vcvtps2ph, 0x661D, AVX512VL, Modrm|EVex128|Masking|Space0F3A|VexW0|Disp8MemShift=3|NoSuf, { Imm8, RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vcvtps2ph, 0x661D, AVX512VL, Modrm|EVex256|Masking|Space0F3A|VexW0|Disp8MemShift=4|NoSuf, { Imm8, RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+vmovddup, 0xF212, AVX512VL, Modrm|EVex=2|Masking|Space0F|VexW1|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+
|
|||
|
+vpmovdb, 0xF331, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovdb, 0xF331, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovsdb, 0xF321, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovsdb, 0xF321, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovusdb, 0xF311, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovusdb, 0xF311, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+vpmovdw, 0xF333, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovdw, 0xF333, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+vpmovsdw, 0xF323, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovsdw, 0xF323, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+vpmovusdw, 0xF313, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovusdw, 0xF313, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+vpmovqb, 0xF332, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=1|NoSuf, { RegXMM, RegXMM|Word|Unspecified|BaseIndex }
|
|||
|
+vpmovqb, 0xF332, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegYMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovsqb, 0xF322, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=1|NoSuf, { RegXMM, RegXMM|Word|Unspecified|BaseIndex }
|
|||
|
+vpmovsqb, 0xF322, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegYMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovusqb, 0xF312, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=1|NoSuf, { RegXMM, RegXMM|Word|Unspecified|BaseIndex }
|
|||
|
+vpmovusqb, 0xF312, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegYMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+vpmovqd, 0xF335, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovqd, 0xF335, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+vpmovsqd, 0xF325, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovsqd, 0xF325, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+vpmovusqd, 0xF315, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovusqd, 0xF315, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+vpmovqw, 0xF334, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovqw, 0xF334, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovsqw, 0xF324, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovsqw, 0xF324, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovusqw, 0xF314, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
|
|||
|
+vpmovusqw, 0xF314, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegYMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+
|
|||
|
+vpmovsxdq, 0x6625, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovsxdq, 0x6625, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovzxdq, 0x6635, AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovzxdq, 0x6635, AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
|
|||
|
// AVX512VL instructions end.
|
|||
|
|
|||
|
// AVX512BW instructions.
|
|||
|
|
|||
|
-kadd<dq>, 0x<dq:kpfx>4a, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|<dq:kvsz>|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
-kand<dq>, 0x<dq:kpfx>41, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|<dq:kvsz>|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
-kandn<dq>, 0x<dq:kpfx>42, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|<dq:kvsz>|NoSuf|Optimize, { RegMask, RegMask, RegMask }
|
|||
|
-kmov<dq>, 0x<dq:kpfx>90, AVX512BW, Modrm|Vex128|Space0F|VexW1|<dq:kvsz>|NoSuf, { RegMask|<dq:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
-kmov<dq>, 0x<dq:kpfx>91, AVX512BW, Modrm|Vex128|Space0F|VexW1|<dq:kvsz>|NoSuf, { RegMask, <dq:elem>|Unspecified|BaseIndex }
|
|||
|
-kmov<dq>, 0xf292, AVX512BW, D|Modrm|Vex128|Space0F|<dq:vexw64>|<dq:kvsz>|NoSuf, { <dq:gpr>, RegMask }
|
|||
|
-knot<dq>, 0x<dq:kpfx>44, AVX512BW, Modrm|Vex128|Space0F|VexW1|<dq:kvsz>|NoSuf, { RegMask, RegMask }
|
|||
|
-kor<dq>, 0x<dq:kpfx>45, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|<dq:kvsz>|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
-kortest<dq>, 0x<dq:kpfx>98, AVX512BW, Modrm|Vex128|Space0F|VexW1|<dq:kvsz>|NoSuf, { RegMask, RegMask }
|
|||
|
-ktest<dq>, 0x<dq:kpfx>99, AVX512BW, Modrm|Vex128|Space0F|VexW1|<dq:kvsz>|NoSuf, { RegMask, RegMask }
|
|||
|
-kxnor<dq>, 0x<dq:kpfx>46, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|<dq:kvsz>|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
-kxor<dq>, 0x<dq:kpfx>47, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|<dq:kvsz>|NoSuf|Optimize, { RegMask, RegMask, RegMask }
|
|||
|
-kunpckdq, 0x4B, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|Vsz512|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
-kunpckwd, 0x4B, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW0|Vsz256|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
-kshiftl<dq>, 0x6633, AVX512BW, Modrm|Vex128|Space0F3A|<dq:vexw>|<dq:kvsz>|NoSuf, { Imm8, RegMask, RegMask }
|
|||
|
-kshiftr<dq>, 0x6631, AVX512BW, Modrm|Vex128|Space0F3A|<dq:vexw>|<dq:kvsz>|NoSuf, { Imm8, RegMask, RegMask }
|
|||
|
+kadd<dq>, 0x<dq:kpfx>4a, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
+kand<dq>, 0x<dq:kpfx>41, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
+kandn<dq>, 0x<dq:kpfx>42, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|NoSuf|Optimize, { RegMask, RegMask, RegMask }
|
|||
|
+kmov<dq>, 0x<dq:kpfx>90, APX_F(AVX512BW), Modrm|Vex128|EVex128|Space0F|VexW1|NoSuf, { RegMask|<dq:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
+kmov<dq>, 0x<dq:kpfx>91, APX_F(AVX512BW), Modrm|Vex128|EVex128|Space0F|VexW1|NoSuf, { RegMask, <dq:elem>|Unspecified|BaseIndex }
|
|||
|
+kmov<dq>, 0xf292, APX_F(AVX512BW), D|Modrm|Vex128|EVex128|Space0F|<dq:vexw64>|NoSuf, { <dq:gpr>, RegMask }
|
|||
|
+knot<dq>, 0x<dq:kpfx>44, AVX512BW, Modrm|Vex128|Space0F|VexW1|NoSuf, { RegMask, RegMask }
|
|||
|
+kor<dq>, 0x<dq:kpfx>45, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
+kortest<dq>, 0x<dq:kpfx>98, AVX512BW, Modrm|Vex128|Space0F|VexW1|NoSuf, { RegMask, RegMask }
|
|||
|
+ktest<dq>, 0x<dq:kpfx>99, AVX512BW, Modrm|Vex128|Space0F|VexW1|NoSuf, { RegMask, RegMask }
|
|||
|
+kxnor<dq>, 0x<dq:kpfx>46, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
+kxor<dq>, 0x<dq:kpfx>47, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|NoSuf|Optimize, { RegMask, RegMask, RegMask }
|
|||
|
+kunpckdq, 0x4B, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW1|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
+kunpckwd, 0x4B, AVX512BW, Modrm|Vex256|Space0F|VexVVVV|VexW0|NoSuf, { RegMask, RegMask, RegMask }
|
|||
|
+kshiftl<dq>, 0x6633, AVX512BW, Modrm|Vex128|Space0F3A|<dq:vexw>|NoSuf, { Imm8, RegMask, RegMask }
|
|||
|
+kshiftr<dq>, 0x6631, AVX512BW, Modrm|Vex128|Space0F3A|<dq:vexw>|NoSuf, { Imm8, RegMask, RegMask }
|
|||
|
|
|||
|
vdbpsadbw, 0x6642, AVX512BW, Modrm|Masking|Space0F3A|VexVVVV|VexW0|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
@@ -2681,23 +2736,23 @@ vpmov<bw>2m, 0xf329, AVX512BW, Modrm|EVexDYN|Space0F38|<bw:vexw>|NoSuf, { RegXMM
|
|||
|
vpmovm2<bw>, 0xf328, AVX512BW, Modrm|EVexDYN|Space0F38|<bw:vexw>|NoSuf, { RegMask, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
vpmovswb, 0xF320, AVX512BW, Modrm|EVex=1|Masking|Space0F38|VexW=1|Disp8MemShift=5|NoSuf, { RegZMM, RegYMM|Unspecified|BaseIndex }
|
|||
|
-vpmovswb, 0xF320, AVX512BW|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovswb, 0xF320, AVX512BW|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+vpmovswb, 0xF320, AVX512BW&AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovswb, 0xF320, AVX512BW&AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
|
|||
|
vpmovuswb, 0xF310, AVX512BW, Modrm|EVex=1|Masking|Space0F38|VexW=1|Disp8MemShift=5|NoSuf, { RegZMM, RegYMM|Unspecified|BaseIndex }
|
|||
|
-vpmovuswb, 0xF310, AVX512BW|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovuswb, 0xF310, AVX512BW|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+vpmovuswb, 0xF310, AVX512BW&AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovuswb, 0xF310, AVX512BW&AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
|
|||
|
vpmovwb, 0xF330, AVX512BW, Modrm|EVex=1|Masking|Space0F38|VexW=1|Disp8MemShift=5|NoSuf, { RegZMM, RegYMM|Unspecified|BaseIndex }
|
|||
|
-vpmovwb, 0xF330, AVX512BW|AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
-vpmovwb, 0xF330, AVX512BW|AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
+vpmovwb, 0xF330, AVX512BW&AVX512VL, Modrm|EVex=2|Masking|Space0F38|VexW0|Disp8MemShift=3|NoSuf, { RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
|
|||
|
+vpmovwb, 0xF330, AVX512BW&AVX512VL, Modrm|EVex=3|Masking|Space0F38|VexW=1|Disp8MemShift=4|NoSuf, { RegYMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
|
|||
|
vpmovsxbw, 0x6620, AVX512BW, Modrm|EVex=1|Masking|Space0F38|VexWIG|Disp8MemShift=5|NoSuf, { RegYMM|Unspecified|BaseIndex, RegZMM }
|
|||
|
-vpmovsxbw, 0x6620, AVX512BW|AVX512VL, Modrm|EVex=2|Masking|VexWIG|Space0F38|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovsxbw, 0x6620, AVX512BW|AVX512VL, Modrm|EVex=3|Masking|VexWIG|Space0F38|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovsxbw, 0x6620, AVX512BW&AVX512VL, Modrm|EVex=2|Masking|VexWIG|Space0F38|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovsxbw, 0x6620, AVX512BW&AVX512VL, Modrm|EVex=3|Masking|VexWIG|Space0F38|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
vpmovzxbw, 0x6630, AVX512BW, Modrm|EVex=1|Masking|Space0F38|VexWIG|Disp8MemShift=5|NoSuf, { RegYMM|Unspecified|BaseIndex, RegZMM }
|
|||
|
-vpmovzxbw, 0x6630, AVX512BW|AVX512VL, Modrm|EVex=2|Masking|VexWIG|Space0F38|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vpmovzxbw, 0x6630, AVX512BW|AVX512VL, Modrm|EVex=3|Masking|VexWIG|Space0F38|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vpmovzxbw, 0x6630, AVX512BW&AVX512VL, Modrm|EVex=2|Masking|VexWIG|Space0F38|Disp8MemShift=3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vpmovzxbw, 0x6630, AVX512BW&AVX512VL, Modrm|EVex=3|Masking|VexWIG|Space0F38|Disp8MemShift=4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
|
|||
|
|
|||
|
vpsadbw, 0x66F6, AVX512BW, Modrm|Space0F|VexVVVV|VexWIG|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
@@ -2738,36 +2793,36 @@ vcvtpd2qq, 0x667B, AVX512DQ, Modrm|Masking|Space0F|VexW1|Broadcast|Disp8ShiftVL|
|
|||
|
vcvtpd2uqq, 0x6679, AVX512DQ, Modrm|Masking|Space0F|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
vcvtps2qq, 0x667B, AVX512DQ, Modrm|EVex512|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=5|NoSuf|StaticRounding|SAE, { RegYMM|Dword|Unspecified|BaseIndex, RegZMM }
|
|||
|
-vcvtps2qq, 0x667B, AVX512DQ|AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtps2qq, 0x667B, AVX512DQ|AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtps2qq, 0x667B, AVX512DQ&AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtps2qq, 0x667B, AVX512DQ&AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvtps2uqq, 0x6679, AVX512DQ, Modrm|EVex512|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=5|NoSuf|StaticRounding|SAE, { RegYMM|Dword|Unspecified|BaseIndex, RegZMM }
|
|||
|
-vcvtps2uqq, 0x6679, AVX512DQ|AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtps2uqq, 0x6679, AVX512DQ|AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtps2uqq, 0x6679, AVX512DQ&AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtps2uqq, 0x6679, AVX512DQ&AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
|
|||
|
vcvtqq2pd, 0xF3E6, AVX512DQ, Modrm|Masking|Space0F|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vcvtuqq2pd, 0xF37A, AVX512DQ, Modrm|Masking|Space0F|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
-vcvtqq2ps<Exy>, 0x5b, AVX512DQ|<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
+vcvtqq2ps<Exy>, 0x5b, AVX512DQ&<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
|
|||
|
vcvttpd2qq, 0x667A, AVX512DQ, Modrm|Masking|Space0F|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vcvttpd2uqq, 0x6678, AVX512DQ, Modrm|Masking|Space0F|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
vcvttps2qq, 0x667A, AVX512DQ, Modrm|EVex512|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=5|NoSuf|SAE, { RegYMM|Dword|Unspecified|BaseIndex, RegZMM }
|
|||
|
-vcvttps2qq, 0x667A, AVX512DQ|AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvttps2qq, 0x667A, AVX512DQ|AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvttps2qq, 0x667A, AVX512DQ&AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvttps2qq, 0x667A, AVX512DQ&AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvttps2uqq, 0x6678, AVX512DQ, Modrm|EVex512|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=5|NoSuf|SAE, { RegYMM|Dword|Unspecified|BaseIndex, RegZMM }
|
|||
|
-vcvttps2uqq, 0x6678, AVX512DQ|AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvttps2uqq, 0x6678, AVX512DQ|AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvttps2uqq, 0x6678, AVX512DQ&AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvttps2uqq, 0x6678, AVX512DQ&AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
|
|||
|
|
|||
|
-vcvtuqq2ps<Exy>, 0xf27a, AVX512DQ|<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
+vcvtuqq2ps<Exy>, 0xf27a, AVX512DQ&<Exy:vl>, Modrm|<Exy:attr>|Masking|Space0F|VexW1|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Qword, <Exy:dst> }
|
|||
|
|
|||
|
vextractf32x8, 0x661B, AVX512DQ, Modrm|EVex=1|Masking|Space0F3A|VexW=1|Disp8MemShift=5|NoSuf, { Imm8, RegZMM, RegYMM|Unspecified|BaseIndex }
|
|||
|
vextracti32x8, 0x663B, AVX512DQ, Modrm|EVex=1|Masking|Space0F3A|VexW=1|Disp8MemShift=5|NoSuf, { Imm8, RegZMM, RegYMM|Unspecified|BaseIndex }
|
|||
|
vinsertf32x8, 0x661A, AVX512DQ, Modrm|EVex512|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=5|NoSuf, { Imm8, RegYMM|Unspecified|BaseIndex, RegZMM, RegZMM }
|
|||
|
vinserti32x8, 0x663A, AVX512DQ, Modrm|EVex512|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=5|NoSuf, { Imm8, RegYMM|Unspecified|BaseIndex, RegZMM, RegZMM }
|
|||
|
|
|||
|
-vpextr<dq>, 0x6616, AVX512DQ|<dq:cpu64>, Modrm|EVex128|Space0F3A|<dq:vexw64>|Disp8MemShift|NoSuf, { Imm8, RegXMM, <dq:gpr>|Unspecified|BaseIndex }
|
|||
|
-vpinsr<dq>, 0x6622, AVX512DQ|<dq:cpu64>, Modrm|EVex128|Space0F3A|VexVVVV|<dq:vexw64>|Disp8MemShift|NoSuf, { Imm8, <dq:gpr>|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
+vpextr<dq>, 0x6616, AVX512DQ&<dq:cpu64>, Modrm|EVex128|Space0F3A|<dq:vexw64>|Disp8MemShift|NoSuf, { Imm8, RegXMM, <dq:gpr>|Unspecified|BaseIndex }
|
|||
|
+vpinsr<dq>, 0x6622, AVX512DQ&<dq:cpu64>, Modrm|EVex128|Space0F3A|VexVVVV|<dq:vexw64>|Disp8MemShift|NoSuf, { Imm8, <dq:gpr>|Unspecified|BaseIndex, RegXMM, RegXMM }
|
|||
|
|
|||
|
vextractf64x2, 0x6619, AVX512DQ, Modrm|Masking|Space0F3A|VexW=2|Disp8MemShift=4|NoSuf, { Imm8, RegYMM|RegZMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
vextracti64x2, 0x6639, AVX512DQ, Modrm|Masking|Space0F3A|VexW=2|Disp8MemShift=4|NoSuf, { Imm8, RegYMM|RegZMM, RegXMM|Unspecified|BaseIndex }
|
|||
|
@@ -2777,8 +2832,8 @@ vinserti64x2, 0x6638, AVX512DQ, Modrm|Masking|Space0F3A|VexVVVV|VexW1|Disp8MemSh
|
|||
|
vfpclassp<sd>, 0x6666, AVX512DQ, Modrm|Masking|Space0F3A|<sd:vexw>|Broadcast|Disp8ShiftVL|NoSuf|IntelSyntax, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|<sd:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
vfpclassp<sd>, 0x6666, AVX512DQ, Modrm|Masking|Space0F3A|<sd:vexw>|Broadcast|Disp8ShiftVL|NoSuf|ATTSyntax, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|<sd:elem>|BaseIndex, RegMask }
|
|||
|
vfpclassp<sd>z, 0x6666, AVX512DQ, Modrm|EVex512|Masking|Space0F3A|<sd:vexw>|Broadcast|Disp8MemShift=6|NoSuf, { Imm8|Imm8S, RegZMM|<sd:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
-vfpclassp<sd>x, 0x6666, AVX512DQ|AVX512VL, Modrm|EVex128|Masking|Space0F3A|<sd:vexw>|Broadcast|Disp8MemShift=4|NoSuf, { Imm8|Imm8S, RegXMM|<sd:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
-vfpclassp<sd>y, 0x6666, AVX512DQ|AVX512VL, Modrm|EVex256|Masking|Space0F3A|<sd:vexw>|Broadcast|Disp8MemShift=5|NoSuf, { Imm8|Imm8S, RegYMM|<sd:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
+vfpclassp<sd>x, 0x6666, AVX512DQ&AVX512VL, Modrm|EVex128|Masking|Space0F3A|<sd:vexw>|Broadcast|Disp8MemShift=4|NoSuf, { Imm8|Imm8S, RegXMM|<sd:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
+vfpclassp<sd>y, 0x6666, AVX512DQ&AVX512VL, Modrm|EVex256|Masking|Space0F3A|<sd:vexw>|Broadcast|Disp8MemShift=5|NoSuf, { Imm8|Imm8S, RegYMM|<sd:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
vfpclasss<sdh>, 0x<sdh:pfx>67, <sdh:cpudq>, Modrm|EVexLIG|Masking|Space0F3A|<sdh:vexw>|Disp8MemShift|NoSuf, { Imm8|Imm8S, RegXMM|<sdh:elem>|Unspecified|BaseIndex, RegMask }
|
|||
|
|
|||
|
vpmov<dq>2m, 0xf339, AVX512DQ, Modrm|EVexDYN|Space0F38|<dq:vexw>|NoSuf, { RegXMM|RegYMM|RegZMM, RegMask }
|
|||
|
@@ -2916,8 +2971,8 @@ vpshufbitqmb, 0x668f, AVX512_BITALG, Modrm|Masking|Space0F38|VexVVVV|VexW0|Disp8
|
|||
|
|
|||
|
// AVX512 + GFNI instructions
|
|||
|
|
|||
|
-vgf2p8affineinvqb, 0x66cf, GFNI|AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
-vgf2p8affineqb, 0x66ce, GFNI|AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vgf2p8affineinvqb, 0x66cf, GFNI&AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
+vgf2p8affineqb, 0x66ce, GFNI&AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW1|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM|RegZMM|Qword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
// AVX512 + GFNI instructions end
|
|||
|
|
|||
|
@@ -2946,7 +3001,7 @@ clzero, 0xf01fc, CLZERO, AddrPrefixOpReg|NoSuf, { Acc|Word|Dword|Qword }
|
|||
|
monitorx, 0xf01fa, MWAITX, NoSuf, {}
|
|||
|
monitorx, 0xf01fa, MWAITX, AddrPrefixOpReg|NoSuf, { Acc|Word|Dword|Qword, RegC|Dword, RegD|Dword }
|
|||
|
// The 64-bit form exists only for compatibility with older gas.
|
|||
|
-monitorx, 0xf01fa, MWAITX|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
+monitorx, 0xf01fa, MWAITX&x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
|
|||
|
mwaitx, 0xf01fb, MWAITX, NoSuf, {}
|
|||
|
// The 64-bit form exists only for compatibility with older gas.
|
|||
|
@@ -2963,30 +3018,34 @@ wrpkru, 0xf01ef, OSPKE, NoSuf, {}
|
|||
|
|
|||
|
// RDPID instructions.
|
|||
|
|
|||
|
-rdpid, 0xf30fc7/7, RDPID|No64, Modrm|IgnoreSize|NoSuf, { Reg32 }
|
|||
|
-rdpid, 0xf30fc7/7, RDPID|x64, Modrm|NoSuf|NoRex64, { Reg64 }
|
|||
|
+rdpid, 0xf30fc7/7, RDPID&No64, Modrm|IgnoreSize|NoSuf, { Reg32 }
|
|||
|
+rdpid, 0xf30fc7/7, RDPID&x64, Modrm|NoSuf|NoRex64, { Reg64 }
|
|||
|
|
|||
|
// RDPID instructions end.
|
|||
|
|
|||
|
// PTWRITE instructions.
|
|||
|
|
|||
|
-ptwrite, 0xf30fae/4, PTWRITE|No64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Unspecified|BaseIndex }
|
|||
|
-ptwrite, 0xf30fae/4, PTWRITE|x64, Modrm|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
+ptwrite, 0xf30fae/4, PTWRITE&No64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex }
|
|||
|
+ptwrite, 0xf30fae/4, PTWRITE&x64, Modrm|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// PTWRITE instructions end.
|
|||
|
|
|||
|
// CET instructions.
|
|||
|
|
|||
|
incsspd, 0xf30fae/5, SHSTK, Modrm|IgnoreSize|NoSuf, { Reg32 }
|
|||
|
-incsspq, 0xf30fae/5, SHSTK|x64, Modrm|NoSuf, { Reg64 }
|
|||
|
+incsspq, 0xf30fae/5, SHSTK&x64, Modrm|NoSuf, { Reg64 }
|
|||
|
rdsspd, 0xf30f1e/1, SHSTK, Modrm|IgnoreSize|NoSuf, { Reg32 }
|
|||
|
-rdsspq, 0xf30f1e/1, SHSTK|x64, Modrm|NoSuf, { Reg64 }
|
|||
|
+rdsspq, 0xf30f1e/1, SHSTK&x64, Modrm|NoSuf, { Reg64 }
|
|||
|
saveprevssp, 0xf30f01ea, SHSTK, NoSuf, {}
|
|||
|
rstorssp, 0xf30f01/5, SHSTK, Modrm|NoSuf, { Qword|Unspecified|BaseIndex }
|
|||
|
wrssd, 0x0f38f6, SHSTK, Modrm|IgnoreSize|NoSuf, { Reg32, Dword|Unspecified|BaseIndex }
|
|||
|
-wrssq, 0x0f38f6, SHSTK|x64, Modrm|NoSuf|Size64, { Reg64, Qword|Unspecified|BaseIndex }
|
|||
|
+wrssd, 0x66, SHSTK&APX_F, Modrm|NoSuf|EVexMap4, { Reg32, Dword|Unspecified|BaseIndex }
|
|||
|
+wrssq, 0x0f38f6, SHSTK&x64, Modrm|NoSuf, { Reg64, Qword|Unspecified|BaseIndex }
|
|||
|
+wrssq, 0x66, SHSTK&APX_F, Modrm|NoSuf|EVexMap4, { Reg64, Qword|Unspecified|BaseIndex }
|
|||
|
wrussd, 0x660f38f5, SHSTK, Modrm|IgnoreSize|NoSuf, { Reg32, Dword|Unspecified|BaseIndex }
|
|||
|
-wrussq, 0x660f38f5, SHSTK|x64, Modrm|NoSuf, { Reg64, Qword|Unspecified|BaseIndex }
|
|||
|
+wrussd, 0x6665, SHSTK&APX_F, Modrm|NoSuf|EVexMap4, { Reg32, Dword|Unspecified|BaseIndex }
|
|||
|
+wrussq, 0x660f38f5, SHSTK&x64, Modrm|NoSuf, { Reg64, Qword|Unspecified|BaseIndex }
|
|||
|
+wrussq, 0x6665, SHSTK&APX_F, Modrm|NoSuf|EVexMap4, { Reg64, Qword|Unspecified|BaseIndex }
|
|||
|
setssbsy, 0xf30f01e8, SHSTK, NoSuf, {}
|
|||
|
clrssbsy, 0xf30fae/6, SHSTK, Modrm|NoSuf, { Qword|Unspecified|BaseIndex }
|
|||
|
endbr64, 0xf30f1efa, IBT, NoSuf, {}
|
|||
|
@@ -3011,7 +3070,7 @@ pconfig, 0x0f01c5, PCONFIG, NoSuf, {}
|
|||
|
|
|||
|
// PBNDKB instruction.
|
|||
|
|
|||
|
-pbndkb, 0x0f01c7, PBNDKB|x64, NoSuf, {}
|
|||
|
+pbndkb, 0x0f01c7, PBNDKB, NoSuf, {}
|
|||
|
|
|||
|
// PBNDKB instruction end.
|
|||
|
|
|||
|
@@ -3034,7 +3093,9 @@ cldemote, 0x0f1c/0, CLDEMOTE, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex }
|
|||
|
// MOVDIR[I,64B] instructions.
|
|||
|
|
|||
|
movdiri, 0xf38f9, MOVDIRI, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+movdiri, 0xf9, MOVDIRI&APX_F, Modrm|CheckOperandSize|No_bSuf|No_wSuf|No_sSuf|EVexMap4, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
movdir64b, 0x660f38f8, MOVDIR64B, Modrm|AddrPrefixOpReg|NoSuf, { Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+movdir64b, 0x66f8, MOVDIR64B&APX_F, Modrm|AddrPrefixOpReg|NoSuf|EVexMap4, { Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
|
|||
|
// MOVEDIR instructions end.
|
|||
|
|
|||
|
@@ -3042,7 +3103,7 @@ movdir64b, 0x660f38f8, MOVDIR64B, Modrm|AddrPrefixOpReg|NoSuf, { Unspecified|Bas
|
|||
|
|
|||
|
vcvtne2ps2bf16, 0xf272, AVX512_BF16, Modrm|Space0F38|VexVVVV|Masking|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
-vcvtneps2bf16<Exy>, 0xf372, AVX512_BF16|<Exy:vl>, Modrm|Space0F38|<Exy:attr>|Masking|VexW0|Broadcast|NoSuf, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
+vcvtneps2bf16<Exy>, 0xf372, AVX512_BF16&<Exy:vl>, Modrm|Space0F38|<Exy:attr>|Masking|VexW0|Broadcast|NoSuf, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
|
|||
|
vdpbf16ps, 0xf352, AVX512_BF16, Modrm|Space0F38|VexVVVV|Masking|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
@@ -3063,7 +3124,9 @@ vcvtneps2bf16<Vxy>, 0xf372, AVX_NE_CONVERT, Modrm|<Vxy:vex>|Space0F38|VexW0|NoSu
|
|||
|
// ENQCMD instructions.
|
|||
|
|
|||
|
enqcmd, 0xf20f38f8, ENQCMD, Modrm|AddrPrefixOpReg|NoSuf, { Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+enqcmd, 0xf2f8, APX_F(ENQCMD), Modrm|AddrPrefixOpReg|NoSuf|EVexMap4, { Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
enqcmds, 0xf30f38f8, ENQCMD, Modrm|AddrPrefixOpReg|NoSuf, { Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
|
|||
|
+enqcmds, 0xf3f8, APX_F(ENQCMD), Modrm|AddrPrefixOpReg|NoSuf|EVexMap4, { Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
|
|||
|
// ENQCMD instructions end.
|
|||
|
|
|||
|
@@ -3081,25 +3144,25 @@ mcommit, 0xf30f01fa, MCOMMIT, NoSuf, {}
|
|||
|
|
|||
|
// SNP instructions
|
|||
|
|
|||
|
-psmash, 0xf30f01ff, SNP|x64, NoSuf, {}
|
|||
|
-psmash, 0xf30f01ff, SNP|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword }
|
|||
|
+psmash, 0xf30f01ff, SNP&x64, NoSuf, {}
|
|||
|
+psmash, 0xf30f01ff, SNP&x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword }
|
|||
|
pvalidate, 0xf20f01ff, SNP, NoSuf, {}
|
|||
|
pvalidate, 0xf20f01ff, SNP, AddrPrefixOpReg|NoSuf, { Acc|Word|Dword|Qword, RegC|Dword, RegD|Dword }
|
|||
|
-rmpupdate, 0xf20f01fe, SNP|x64, NoSuf, {}
|
|||
|
-rmpupdate, 0xf20f01fe, SNP|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword }
|
|||
|
-rmpadjust, 0xf30f01fe, SNP|x64, NoSuf, {}
|
|||
|
-rmpadjust, 0xf30f01fe, SNP|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
+rmpupdate, 0xf20f01fe, SNP&x64, NoSuf, {}
|
|||
|
+rmpupdate, 0xf20f01fe, SNP&x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword }
|
|||
|
+rmpadjust, 0xf30f01fe, SNP&x64, NoSuf, {}
|
|||
|
+rmpadjust, 0xf30f01fe, SNP&x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
// The single-operand forms exist only for compatibility with older gas.
|
|||
|
pvalidate, 0xf20f01ff, SNP, AddrPrefixOpReg|NoSuf, { Acc|Word|Dword|Qword }
|
|||
|
-rmpupdate, 0xf20f01fe, SNP|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword }
|
|||
|
-rmpadjust, 0xf30f01fe, SNP|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword }
|
|||
|
+rmpupdate, 0xf20f01fe, SNP&x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword }
|
|||
|
+rmpadjust, 0xf30f01fe, SNP&x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword }
|
|||
|
|
|||
|
// SNP instructions end
|
|||
|
|
|||
|
// RMPQUERY instruction
|
|||
|
|
|||
|
-rmpquery, 0xf30f01fd, RMPQUERY|x64, NoSuf, {}
|
|||
|
-rmpquery, 0xf30f01fd, RMPQUERY|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
+rmpquery, 0xf30f01fd, RMPQUERY, NoSuf, {}
|
|||
|
+rmpquery, 0xf30f01fd, RMPQUERY, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword }
|
|||
|
|
|||
|
// RMPQUERY instruction end
|
|||
|
|
|||
|
@@ -3124,26 +3187,26 @@ xresldtrk, 0xf20f01e9, TSXLDTRK, NoSuf, {}
|
|||
|
|
|||
|
// AMX instructions.
|
|||
|
|
|||
|
-ldtilecfg, 0x49/0, AMX_TILE|x64, Modrm|Vex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex }
|
|||
|
-sttilecfg, 0x6649/0, AMX_TILE|x64, Modrm|Vex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex }
|
|||
|
+ldtilecfg, 0x49/0, APX_F(AMX_TILE), Modrm|Vex128|EVex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex }
|
|||
|
+sttilecfg, 0x6649/0, APX_F(AMX_TILE), Modrm|Vex128|EVex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex }
|
|||
|
|
|||
|
-tcmmimfp16ps, 0x666c, AMX_COMPLEX|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
-tcmmrlfp16ps, 0x6c, AMX_COMPLEX|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tcmmimfp16ps, 0x666c, AMX_COMPLEX, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tcmmrlfp16ps, 0x6c, AMX_COMPLEX, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
|
|||
|
-tdpbf16ps, 0xf35c, AMX_BF16|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
-tdpfp16ps, 0xf25c, AMX_FP16|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
-tdpbssd, 0xf25e, AMX_INT8|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
-tdpbuud, 0x5e, AMX_INT8|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
-tdpbusd, 0x665e, AMX_INT8|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
-tdpbsud, 0xf35e, AMX_INT8|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tdpbf16ps, 0xf35c, AMX_BF16, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tdpfp16ps, 0xf25c, AMX_FP16, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tdpbssd, 0xf25e, AMX_INT8, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tdpbuud, 0x5e, AMX_INT8, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tdpbusd, 0x665e, AMX_INT8, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
+tdpbsud, 0xf35e, AMX_INT8, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
|
|||
|
|
|||
|
-tileloadd, 0xf24b, AMX_TILE|x64, Sibmem|Vex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex, RegTMM }
|
|||
|
-tileloaddt1, 0x664b, AMX_TILE|x64, Sibmem|Vex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex, RegTMM }
|
|||
|
-tilestored, 0xf34b, AMX_TILE|x64, Sibmem|Vex128|Space0F38|VexW0|NoSuf, { RegTMM, Unspecified|BaseIndex }
|
|||
|
+tileloadd, 0xf24b, APX_F(AMX_TILE), Sibmem|Vex128|EVex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex, RegTMM }
|
|||
|
+tileloaddt1, 0x664b, APX_F(AMX_TILE), Sibmem|Vex128|EVex128|Space0F38|VexW0|NoSuf, { Unspecified|BaseIndex, RegTMM }
|
|||
|
+tilestored, 0xf34b, APX_F(AMX_TILE), Sibmem|Vex128|EVex128|Space0F38|VexW0|NoSuf, { RegTMM, Unspecified|BaseIndex }
|
|||
|
|
|||
|
-tilerelease, 0x49c0, AMX_TILE|x64, Vex128|Space0F38|VexW0|NoSuf, {}
|
|||
|
+tilerelease, 0x49c0, AMX_TILE, Vex128|Space0F38|VexW0|NoSuf, {}
|
|||
|
|
|||
|
-tilezero, 0xf249, AMX_TILE|x64, Modrm|Vex128|Space0F38|VexW0|NoSuf, { RegTMM }
|
|||
|
+tilezero, 0xf249, AMX_TILE, Modrm|Vex128|Space0F38|VexW0|NoSuf, { RegTMM }
|
|||
|
|
|||
|
// AMX instructions end.
|
|||
|
|
|||
|
@@ -3166,19 +3229,19 @@ aesdecwide256kl, 0xf30f38d8/3, WideKL, Modrm|NoSuf, { Unspecified|BaseIndex }
|
|||
|
// TDX instructions.
|
|||
|
|
|||
|
tdcall, 0x660f01cc, TDX, NoSuf, {}
|
|||
|
-seamret, 0x660f01cd, TDX|x64, NoSuf, {}
|
|||
|
-seamops, 0x660f01ce, TDX|x64, NoSuf, {}
|
|||
|
-seamcall, 0x660f01cf, TDX|x64, NoSuf, {}
|
|||
|
+seamret, 0x660f01cd, TDX&x64, NoSuf, {}
|
|||
|
+seamops, 0x660f01ce, TDX&x64, NoSuf, {}
|
|||
|
+seamcall, 0x660f01cf, TDX&x64, NoSuf, {}
|
|||
|
|
|||
|
// TDX instructions end.
|
|||
|
|
|||
|
// UINTR instructions.
|
|||
|
|
|||
|
-uiret, 0xf30f01ec, UINTR|x64, NoSuf, {}
|
|||
|
-clui, 0xf30f01ee, UINTR|x64, NoSuf, {}
|
|||
|
-stui, 0xf30f01ef, UINTR|x64, NoSuf, {}
|
|||
|
-testui, 0xf30f01ed, UINTR|x64, NoSuf, {}
|
|||
|
-senduipi, 0xf30fc7/6, UINTR|x64, Modrm|NoSuf|NoRex64, { Reg64 }
|
|||
|
+uiret, 0xf30f01ec, UINTR, NoSuf, {}
|
|||
|
+clui, 0xf30f01ee, UINTR, NoSuf, {}
|
|||
|
+stui, 0xf30f01ef, UINTR, NoSuf, {}
|
|||
|
+testui, 0xf30f01ed, UINTR, NoSuf, {}
|
|||
|
+senduipi, 0xf30fc7/6, UINTR, Modrm|NoSuf|NoRex64, { Reg64 }
|
|||
|
|
|||
|
// UINTR instructions end.
|
|||
|
|
|||
|
@@ -3208,37 +3271,37 @@ vcmpph, 0xc2, AVX512_FP16, Modrm|Masking|Space0F3A|VexVVVV|VexW0|Broadcast|Disp8
|
|||
|
vcmp<frel>sh, 0xf3c2/0x<frel:imm>, AVX512_FP16, Modrm|EVexLIG|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=1|NoSuf|ImmExt|SAE, { RegXMM|Word|Unspecified|BaseIndex, RegXMM, RegMask }
|
|||
|
vcmpsh, 0xf3c2, AVX512_FP16, Modrm|EVexLIG|Masking|Space0F3A|VexVVVV|VexW0|Disp8MemShift=1|NoSuf|SAE, { Imm8, RegXMM|Word|Unspecified|BaseIndex, RegXMM, RegMask }
|
|||
|
|
|||
|
-vcvtdq2ph<Exy>, 0x5b, AVX512_FP16|<Exy:vl>, Modrm|<Exy:attr>|Masking|EVexMap5|VexW0|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
-vcvtudq2ph<Exy>, 0xf27a, AVX512_FP16|<Exy:vl>, Modrm|<Exy:attr>|Masking|EVexMap5|VexW0|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
+vcvtdq2ph<Exy>, 0x5b, AVX512_FP16&<Exy:vl>, Modrm|<Exy:attr>|Masking|EVexMap5|VexW0|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
+vcvtudq2ph<Exy>, 0xf27a, AVX512_FP16&<Exy:vl>, Modrm|<Exy:attr>|Masking|EVexMap5|VexW0|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
|
|||
|
-vcvtqq2ph<xyz>, 0x5b, AVX512_FP16|<xyz:vl>, Modrm|<xyz:attr>|Masking|EVexMap5|VexW1|Broadcast|NoSuf|<xyz:sr>|<xyz:att>, { <xyz:src>|Qword, RegXMM }
|
|||
|
-vcvtuqq2ph<xyz>, 0xf27a, AVX512_FP16|<xyz:vl>, Modrm|<xyz:attr>|Masking|EVexMap5|VexW1|Broadcast|NoSuf|<xyz:sr>|<xyz:att>, { <xyz:src>|Qword, RegXMM }
|
|||
|
+vcvtqq2ph<xyz>, 0x5b, AVX512_FP16&<xyz:vl>, Modrm|<xyz:attr>|Masking|EVexMap5|VexW1|Broadcast|NoSuf|<xyz:sr>|<xyz:att>, { <xyz:src>|Qword, RegXMM }
|
|||
|
+vcvtuqq2ph<xyz>, 0xf27a, AVX512_FP16&<xyz:vl>, Modrm|<xyz:attr>|Masking|EVexMap5|VexW1|Broadcast|NoSuf|<xyz:sr>|<xyz:att>, { <xyz:src>|Qword, RegXMM }
|
|||
|
|
|||
|
-vcvtpd2ph<xyz>, 0x665a, AVX512_FP16|<xyz:vl>, Modrm|<xyz:attr>|Masking|EVexMap5|VexW1|Broadcast|NoSuf|<xyz:sr>|<xyz:att>, { <xyz:src>|Qword, RegXMM }
|
|||
|
+vcvtpd2ph<xyz>, 0x665a, AVX512_FP16&<xyz:vl>, Modrm|<xyz:attr>|Masking|EVexMap5|VexW1|Broadcast|NoSuf|<xyz:sr>|<xyz:att>, { <xyz:src>|Qword, RegXMM }
|
|||
|
|
|||
|
-vcvtps2phx<Exy>, 0x661d, AVX512_FP16|<Exy:vl>, Modrm|<Exy:attr>|Masking|EVexMap5|VexW0|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
+vcvtps2phx<Exy>, 0x661d, AVX512_FP16&<Exy:vl>, Modrm|<Exy:attr>|Masking|EVexMap5|VexW0|Broadcast|NoSuf|<Exy:sr>, { <Exy:src>|Dword, <Exy:dst> }
|
|||
|
|
|||
|
vcvtw2ph, 0xf37d, AVX512_FP16, Modrm|Masking|EVexMap5|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Word|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
vcvtuw2ph, 0xf27d, AVX512_FP16, Modrm|Masking|EVexMap5|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Word|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
|
|||
|
-vcvtph2dq, 0x665b, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtph2dq, 0x665b, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtph2dq, 0x665b, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtph2dq, 0x665b, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvtph2dq, 0x665b, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=5|NoSuf|StaticRounding|SAE, { RegYMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvtph2udq, 0x79, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtph2udq, 0x79, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtph2udq, 0x79, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtph2udq, 0x79, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvtph2udq, 0x79, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=5|NoSuf|StaticRounding|SAE, { RegYMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvtph2qq, 0x667b, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtph2qq, 0x667b, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtph2qq, 0x667b, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtph2qq, 0x667b, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvtph2qq, 0x667b, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf|StaticRounding|SAE, { RegXMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvtph2uqq, 0x6679, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtph2uqq, 0x6679, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtph2uqq, 0x6679, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtph2uqq, 0x6679, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvtph2uqq, 0x6679, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf|StaticRounding|SAE, { RegXMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvtph2pd, 0x5a, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtph2pd, 0x5a, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtph2pd, 0x5a, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtph2pd, 0x5a, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvtph2pd, 0x5a, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf|SAE, { RegXMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
vcvtph2w, 0x667d, AVX512_FP16, Modrm|Masking|EVexMap5|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|Word|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
@@ -3258,24 +3321,24 @@ vcvtsh2ss, 0x13, AVX512_FP16, Modrm|EVexLIG|Masking|EVexMap6|VexVVVV|VexW0|Disp8
|
|||
|
|
|||
|
vcvtsh2si, 0xf32d, AVX512_FP16, Modrm|EVexLIG|EVexMap5|Disp8MemShift=1|NoSuf|StaticRounding|SAE, { RegXMM|Word|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
|
|||
|
-vcvttph2dq, 0xf35b, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvttph2dq, 0xf35b, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvttph2dq, 0xf35b, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvttph2dq, 0xf35b, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvttph2dq, 0xf35b, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=5|NoSuf|SAE, { RegYMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvttph2udq, 0x78, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvttph2udq, 0x78, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvttph2udq, 0x78, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvttph2udq, 0x78, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvttph2udq, 0x78, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=5|NoSuf|SAE, { RegYMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvttph2qq, 0x667a, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvttph2qq, 0x667a, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvttph2qq, 0x667a, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvttph2qq, 0x667a, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvttph2qq, 0x667a, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf|SAE, { RegXMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvttph2uqq, 0x6678, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvttph2uqq, 0x6678, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvttph2uqq, 0x6678, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=2|NoSuf, { RegXMM|Word|Dword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvttph2uqq, 0x6678, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvttph2uqq, 0x6678, AVX512_FP16, Modrm|EVex512|Masking|EVexMap5|VexW0|Broadcast|Disp8MemShift=4|NoSuf|SAE, { RegXMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
-vcvtph2psx, 0x6613, AVX512_FP16|AVX512VL, Modrm|EVex128|Masking|EVexMap6|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
-vcvtph2psx, 0x6613, AVX512_FP16|AVX512VL, Modrm|EVex256|Masking|EVexMap6|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
+vcvtph2psx, 0x6613, AVX512_FP16&AVX512VL, Modrm|EVex128|Masking|EVexMap6|VexW0|Broadcast|Disp8MemShift=3|NoSuf, { RegXMM|Word|Qword|Unspecified|BaseIndex, RegXMM }
|
|||
|
+vcvtph2psx, 0x6613, AVX512_FP16&AVX512VL, Modrm|EVex256|Masking|EVexMap6|VexW0|Broadcast|Disp8MemShift=4|NoSuf, { RegXMM|Word|Unspecified|BaseIndex, RegYMM }
|
|||
|
vcvtph2psx, 0x6613, AVX512_FP16, Modrm|EVex512|Masking|EVexMap6|VexW0|Broadcast|Disp8MemShift=5|NoSuf|SAE, { RegYMM|Word|Unspecified|BaseIndex, RegZMM }
|
|||
|
|
|||
|
vcvttph2w, 0x667c, AVX512_FP16, Modrm|Masking|EVexMap5|VexW0|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { RegXMM|RegYMM|RegZMM|Word|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM }
|
|||
|
@@ -3283,7 +3346,7 @@ vcvttph2uw, 0x7c, AVX512_FP16, Modrm|Masking|EVexMap5|VexW0|Broadcast|Disp8Shift
|
|||
|
|
|||
|
vcvttsh2si, 0xf32c, AVX512_FP16, Modrm|EVexLIG|EVexMap5|Disp8MemShift=1|NoSuf|SAE, { RegXMM|Word|Unspecified|BaseIndex, Reg32|Reg64 }
|
|||
|
|
|||
|
-vfpclassph<xyz>, 0x66, AVX512_FP16|<xyz:vl>, Modrm|<xyz:attr>|Masking|Space0F3A|VexW0|Broadcast|NoSuf|<xyz:att>, { Imm8|Imm8S, <xyz:src>|Word, RegMask }
|
|||
|
+vfpclassph<xyz>, 0x66, AVX512_FP16&<xyz:vl>, Modrm|<xyz:attr>|Masking|Space0F3A|VexW0|Broadcast|NoSuf|<xyz:att>, { Imm8|Imm8S, <xyz:src>|Word, RegMask }
|
|||
|
|
|||
|
vmovw, 0x666e, AVX512_FP16, D|Modrm|EVex128|VexWIG|EVexMap5|Disp8MemShift=1|NoSuf, { Word|Unspecified|BaseIndex, RegXMM }
|
|||
|
vmovw, 0x667e, AVX512_FP16, D|RegMem|EVex128|VexWIG|EVexMap5|NoSuf, { RegXMM, Reg32 }
|
|||
|
@@ -3300,14 +3363,14 @@ vrsqrtsh, 0x664f, AVX512_FP16, Modrm|EVexLIG|Masking|EVexMap6|VexVVVV|VexW0|Disp
|
|||
|
|
|||
|
// PREFETCHI instructions.
|
|||
|
|
|||
|
-prefetchit0, 0xf18/7, PREFETCHI|x64, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex }
|
|||
|
-prefetchit1, 0xf18/6, PREFETCHI|x64, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex }
|
|||
|
+prefetchit0, 0xf18/7, PREFETCHI, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex }
|
|||
|
+prefetchit1, 0xf18/6, PREFETCHI, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex }
|
|||
|
|
|||
|
// PREFETCHI instructions end.
|
|||
|
|
|||
|
// CMPCCXADD instructions.
|
|||
|
|
|||
|
-cmp<cc>xadd, 0x66e<cc:opc>, CMPCCXADD|x64, Modrm|Vex|Space0F38|VexVVVV|SwapSources|CheckOperandSize|NoSuf, { Reg32|Reg64, Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+cmp<cc>xadd, 0x66e<cc:opc>, APX_F(CMPCCXADD), Modrm|Vex|EVex128|Space0F38|VexVVVV|SwapSources|CheckOperandSize|NoSuf, { Reg32|Reg64, Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// CMPCCXADD instructions end.
|
|||
|
|
|||
|
@@ -3319,30 +3382,52 @@ wrmsrns, 0x0f01c6, WRMSRNS, NoSuf, {}
|
|||
|
|
|||
|
// MSRLIST instructions.
|
|||
|
|
|||
|
-rdmsrlist, 0xf20f01c6, MSRLIST|x64, NoSuf, {}
|
|||
|
-wrmsrlist, 0xf30f01c6, MSRLIST|x64, NoSuf, {}
|
|||
|
+rdmsrlist, 0xf20f01c6, MSRLIST, NoSuf, {}
|
|||
|
+wrmsrlist, 0xf30f01c6, MSRLIST, NoSuf, {}
|
|||
|
|
|||
|
// MSRLIST instructions end.
|
|||
|
|
|||
|
// RAO-INT instructions.
|
|||
|
|
|||
|
-aadd, 0xf38fc, RAO_INT, Modrm|IgnoreSize|CheckOperandSize|NoSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-aand, 0x660f38fc, RAO_INT, Modrm|IgnoreSize|CheckOperandSize|NoSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-aor, 0xf20f38fc, RAO_INT, Modrm|IgnoreSize|CheckOperandSize|NoSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
-axor, 0xf30f38fc, RAO_INT, Modrm|IgnoreSize|CheckOperandSize|NoSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<rao:pfx, add:, and:66, or:f2, xor:f3>
|
|||
|
+a<rao>, 0x<rao:pfx>0f38fc, RAO_INT, Modrm|IgnoreSize|CheckOperandSize|NoSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+a<rao>, 0x<rao:pfx>fc, RAO_INT&APX_F, Modrm|CheckOperandSize|NoSuf|EVexMap4, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex }
|
|||
|
+<rao>
|
|||
|
|
|||
|
// RAO-INT instructions end.
|
|||
|
|
|||
|
// LKGS instruction.
|
|||
|
|
|||
|
-lkgs, 0xf20f00/6, LKGS|x64, Modrm|IgnoreSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64 }
|
|||
|
-lkgs, 0xf20f00/6, LKGS|x64, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { Word|Unspecified|BaseIndex }
|
|||
|
+lkgs, 0xf20f00/6, LKGS, Modrm|IgnoreSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64 }
|
|||
|
+lkgs, 0xf20f00/6, LKGS, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { Word|Unspecified|BaseIndex }
|
|||
|
|
|||
|
// LKGS instruction end.
|
|||
|
|
|||
|
// FRED instructions.
|
|||
|
|
|||
|
-erets, 0xf20f01ca, FRED|x64, NoSuf, {}
|
|||
|
-eretu, 0xf30f01ca, FRED|x64, NoSuf, {}
|
|||
|
+erets, 0xf20f01ca, FRED, NoSuf, {}
|
|||
|
+eretu, 0xf30f01ca, FRED, NoSuf, {}
|
|||
|
|
|||
|
// FRED instructions end.
|
|||
|
+
|
|||
|
+// USER_MSR instructions.
|
|||
|
+
|
|||
|
+urdmsr, 0xf20f38f8, USER_MSR, RegMem|NoSuf|NoRex64, { Reg64, Reg64 }
|
|||
|
+urdmsr, 0xf2f8, USER_MSR&APX_F, RegMem|EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
|
|||
|
+urdmsr, 0xf2f8/0, APX_F(USER_MSR), Modrm|Vex128|VexMap7|EVex128|VexW0|NoSuf, { Imm32, Reg64 }
|
|||
|
+uwrmsr, 0xf30f38f8, USER_MSR, Modrm|NoSuf|NoRex64, { Reg64, Reg64 }
|
|||
|
+uwrmsr, 0xf3f8, USER_MSR&APX_F, Modrm|EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
|
|||
|
+// Immediates want to be first; md_assemble() takes care of swapping operands
|
|||
|
+// accordingly.
|
|||
|
+uwrmsr, 0xf3f8/0, APX_F(USER_MSR), Modrm|Vex128|VexMap7|EVex128|VexW0|NoSuf, { Imm32, Reg64 }
|
|||
|
+
|
|||
|
+// USER_MSR instructions end.
|
|||
|
+
|
|||
|
+// APX Push2/Pop2 instructions.
|
|||
|
+
|
|||
|
+push2, 0xff/6, APX_F, Modrm|VexW0|EVexMap4|VexVVVV|ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Reg64, Reg64 }
|
|||
|
+push2p, 0xff/6, APX_F, Modrm|VexW1|EVexMap4|VexVVVV|ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Reg64, Reg64 }
|
|||
|
+pop2, 0x8f/0, APX_F, Modrm|VexW0|EVexMap4|VexVVVV|ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Reg64, Reg64 }
|
|||
|
+pop2p, 0x8f/0, APX_F, Modrm|VexW1|EVexMap4|VexVVVV|ImplicitStackOp|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Reg64, Reg64 }
|
|||
|
+
|
|||
|
+// APX Push2/Pop2 instructions end.
|