summaryrefslogtreecommitdiff
path: root/opcodes/i386-dis-evex.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2020-07-06 13:40:13 +0200
committerJan Beulich <jbeulich@suse.com>2020-07-06 13:40:13 +0200
commit6df22cf64c935c7a467759048858bb7e8ef70235 (patch)
tree7cb4e6edbbdf879c65729d750e14fb6243205167 /opcodes/i386-dis-evex.h
parent39e0f45682a39e09ab115333c593dbdd25658dd2 (diff)
downloadbinutils-gdb-6df22cf64c935c7a467759048858bb7e8ef70235.tar.gz
x86: drop EVEX table entries that can be served by VEX ones
The duplication is not only space inefficient, but also risks entries going out of sync (some of which that I became aware of while doing this work will get addressed subsequently). Right here note that for VGF2P8MULB this also addresses the prior lack of EVEX.W decoding (i.e. a first example of out of sync entries). This introduces EXxEVexR to some VEX templates, on the basis that this operand is benign there and only relevant when EVEX encoding ends up reaching these entries.
Diffstat (limited to 'opcodes/i386-dis-evex.h')
-rw-r--r--opcodes/i386-dis-evex.h160
1 files changed, 80 insertions, 80 deletions
diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h
index 6f1fe944d64..249812b8304 100644
--- a/opcodes/i386-dis-evex.h
+++ b/opcodes/i386-dis-evex.h
@@ -110,17 +110,17 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F5E) },
{ PREFIX_TABLE (PREFIX_EVEX_0F5F) },
/* 60 */
- { PREFIX_TABLE (PREFIX_EVEX_0F60) },
- { PREFIX_TABLE (PREFIX_EVEX_0F61) },
+ { PREFIX_TABLE (PREFIX_VEX_0F60) },
+ { PREFIX_TABLE (PREFIX_VEX_0F61) },
{ PREFIX_TABLE (PREFIX_EVEX_0F62) },
- { PREFIX_TABLE (PREFIX_EVEX_0F63) },
+ { PREFIX_TABLE (PREFIX_VEX_0F63) },
{ PREFIX_TABLE (PREFIX_EVEX_0F64) },
{ PREFIX_TABLE (PREFIX_EVEX_0F65) },
{ PREFIX_TABLE (PREFIX_EVEX_0F66) },
- { PREFIX_TABLE (PREFIX_EVEX_0F67) },
+ { PREFIX_TABLE (PREFIX_VEX_0F67) },
/* 68 */
- { PREFIX_TABLE (PREFIX_EVEX_0F68) },
- { PREFIX_TABLE (PREFIX_EVEX_0F69) },
+ { PREFIX_TABLE (PREFIX_VEX_0F68) },
+ { PREFIX_TABLE (PREFIX_VEX_0F69) },
{ PREFIX_TABLE (PREFIX_EVEX_0F6A) },
{ PREFIX_TABLE (PREFIX_EVEX_0F6B) },
{ PREFIX_TABLE (PREFIX_EVEX_0F6C) },
@@ -237,67 +237,67 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
/* D0 */
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0FD1) },
+ { PREFIX_TABLE (PREFIX_VEX_0FD1) },
{ PREFIX_TABLE (PREFIX_EVEX_0FD2) },
{ PREFIX_TABLE (PREFIX_EVEX_0FD3) },
{ PREFIX_TABLE (PREFIX_EVEX_0FD4) },
- { PREFIX_TABLE (PREFIX_EVEX_0FD5) },
+ { PREFIX_TABLE (PREFIX_VEX_0FD5) },
{ PREFIX_TABLE (PREFIX_EVEX_0FD6) },
{ Bad_Opcode },
/* D8 */
- { PREFIX_TABLE (PREFIX_EVEX_0FD8) },
- { PREFIX_TABLE (PREFIX_EVEX_0FD9) },
- { PREFIX_TABLE (PREFIX_EVEX_0FDA) },
+ { PREFIX_TABLE (PREFIX_VEX_0FD8) },
+ { PREFIX_TABLE (PREFIX_VEX_0FD9) },
+ { PREFIX_TABLE (PREFIX_VEX_0FDA) },
{ PREFIX_TABLE (PREFIX_EVEX_0FDB) },
- { PREFIX_TABLE (PREFIX_EVEX_0FDC) },
- { PREFIX_TABLE (PREFIX_EVEX_0FDD) },
- { PREFIX_TABLE (PREFIX_EVEX_0FDE) },
+ { PREFIX_TABLE (PREFIX_VEX_0FDC) },
+ { PREFIX_TABLE (PREFIX_VEX_0FDD) },
+ { PREFIX_TABLE (PREFIX_VEX_0FDE) },
{ PREFIX_TABLE (PREFIX_EVEX_0FDF) },
/* E0 */
- { PREFIX_TABLE (PREFIX_EVEX_0FE0) },
- { PREFIX_TABLE (PREFIX_EVEX_0FE1) },
+ { PREFIX_TABLE (PREFIX_VEX_0FE0) },
+ { PREFIX_TABLE (PREFIX_VEX_0FE1) },
{ PREFIX_TABLE (PREFIX_EVEX_0FE2) },
- { PREFIX_TABLE (PREFIX_EVEX_0FE3) },
- { PREFIX_TABLE (PREFIX_EVEX_0FE4) },
- { PREFIX_TABLE (PREFIX_EVEX_0FE5) },
+ { PREFIX_TABLE (PREFIX_VEX_0FE3) },
+ { PREFIX_TABLE (PREFIX_VEX_0FE4) },
+ { PREFIX_TABLE (PREFIX_VEX_0FE5) },
{ PREFIX_TABLE (PREFIX_EVEX_0FE6) },
{ PREFIX_TABLE (PREFIX_EVEX_0FE7) },
/* E8 */
- { PREFIX_TABLE (PREFIX_EVEX_0FE8) },
- { PREFIX_TABLE (PREFIX_EVEX_0FE9) },
- { PREFIX_TABLE (PREFIX_EVEX_0FEA) },
+ { PREFIX_TABLE (PREFIX_VEX_0FE8) },
+ { PREFIX_TABLE (PREFIX_VEX_0FE9) },
+ { PREFIX_TABLE (PREFIX_VEX_0FEA) },
{ PREFIX_TABLE (PREFIX_EVEX_0FEB) },
- { PREFIX_TABLE (PREFIX_EVEX_0FEC) },
- { PREFIX_TABLE (PREFIX_EVEX_0FED) },
- { PREFIX_TABLE (PREFIX_EVEX_0FEE) },
+ { PREFIX_TABLE (PREFIX_VEX_0FEC) },
+ { PREFIX_TABLE (PREFIX_VEX_0FED) },
+ { PREFIX_TABLE (PREFIX_VEX_0FEE) },
{ PREFIX_TABLE (PREFIX_EVEX_0FEF) },
/* F0 */
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0FF1) },
+ { PREFIX_TABLE (PREFIX_VEX_0FF1) },
{ PREFIX_TABLE (PREFIX_EVEX_0FF2) },
{ PREFIX_TABLE (PREFIX_EVEX_0FF3) },
{ PREFIX_TABLE (PREFIX_EVEX_0FF4) },
- { PREFIX_TABLE (PREFIX_EVEX_0FF5) },
- { PREFIX_TABLE (PREFIX_EVEX_0FF6) },
+ { PREFIX_TABLE (PREFIX_VEX_0FF5) },
+ { PREFIX_TABLE (PREFIX_VEX_0FF6) },
{ Bad_Opcode },
/* F8 */
- { PREFIX_TABLE (PREFIX_EVEX_0FF8) },
- { PREFIX_TABLE (PREFIX_EVEX_0FF9) },
+ { PREFIX_TABLE (PREFIX_VEX_0FF8) },
+ { PREFIX_TABLE (PREFIX_VEX_0FF9) },
{ PREFIX_TABLE (PREFIX_EVEX_0FFA) },
{ PREFIX_TABLE (PREFIX_EVEX_0FFB) },
- { PREFIX_TABLE (PREFIX_EVEX_0FFC) },
- { PREFIX_TABLE (PREFIX_EVEX_0FFD) },
+ { PREFIX_TABLE (PREFIX_VEX_0FFC) },
+ { PREFIX_TABLE (PREFIX_VEX_0FFD) },
{ PREFIX_TABLE (PREFIX_EVEX_0FFE) },
{ Bad_Opcode },
},
/* EVEX_0F38 */
{
/* 00 */
- { PREFIX_TABLE (PREFIX_EVEX_0F3800) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3800) },
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F3804) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3804) },
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
@@ -305,8 +305,8 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F380B) },
- { PREFIX_TABLE (PREFIX_EVEX_0F380C) },
+ { PREFIX_TABLE (PREFIX_VEX_0F380B) },
+ { PREFIX_TABLE (PREFIX_VEX_0F380C) },
{ PREFIX_TABLE (PREFIX_EVEX_0F380D) },
{ Bad_Opcode },
{ Bad_Opcode },
@@ -320,12 +320,12 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F3816) },
{ Bad_Opcode },
/* 18 */
- { PREFIX_TABLE (PREFIX_EVEX_0F3818) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3818) },
{ PREFIX_TABLE (PREFIX_EVEX_0F3819) },
{ PREFIX_TABLE (PREFIX_EVEX_0F381A) },
{ PREFIX_TABLE (PREFIX_EVEX_0F381B) },
- { PREFIX_TABLE (PREFIX_EVEX_0F381C) },
- { PREFIX_TABLE (PREFIX_EVEX_0F381D) },
+ { PREFIX_TABLE (PREFIX_VEX_0F381C) },
+ { PREFIX_TABLE (PREFIX_VEX_0F381D) },
{ PREFIX_TABLE (PREFIX_EVEX_0F381E) },
{ PREFIX_TABLE (PREFIX_EVEX_0F381F) },
/* 20 */
@@ -360,9 +360,9 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F3839) },
{ PREFIX_TABLE (PREFIX_EVEX_0F383A) },
{ PREFIX_TABLE (PREFIX_EVEX_0F383B) },
- { PREFIX_TABLE (PREFIX_EVEX_0F383C) },
+ { PREFIX_TABLE (PREFIX_VEX_0F383C) },
{ PREFIX_TABLE (PREFIX_EVEX_0F383D) },
- { PREFIX_TABLE (PREFIX_EVEX_0F383E) },
+ { PREFIX_TABLE (PREFIX_VEX_0F383E) },
{ PREFIX_TABLE (PREFIX_EVEX_0F383F) },
/* 40 */
{ PREFIX_TABLE (PREFIX_EVEX_0F3840) },
@@ -392,7 +392,7 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
/* 58 */
- { PREFIX_TABLE (PREFIX_EVEX_0F3858) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3858) },
{ PREFIX_TABLE (PREFIX_EVEX_0F3859) },
{ PREFIX_TABLE (PREFIX_EVEX_0F385A) },
{ PREFIX_TABLE (PREFIX_EVEX_0F385B) },
@@ -428,8 +428,8 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F3876) },
{ PREFIX_TABLE (PREFIX_EVEX_0F3877) },
/* 78 */
- { PREFIX_TABLE (PREFIX_EVEX_0F3878) },
- { PREFIX_TABLE (PREFIX_EVEX_0F3879) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3878) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3879) },
{ PREFIX_TABLE (PREFIX_EVEX_0F387A) },
{ PREFIX_TABLE (PREFIX_EVEX_0F387B) },
{ PREFIX_TABLE (PREFIX_EVEX_0F387C) },
@@ -461,17 +461,17 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F3893) },
{ Bad_Opcode },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F3896) },
- { PREFIX_TABLE (PREFIX_EVEX_0F3897) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3896) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3897) },
/* 98 */
- { PREFIX_TABLE (PREFIX_EVEX_0F3898) },
- { PREFIX_TABLE (PREFIX_EVEX_0F3899) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3898) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3899) },
{ PREFIX_TABLE (PREFIX_EVEX_0F389A) },
{ PREFIX_TABLE (PREFIX_EVEX_0F389B) },
- { PREFIX_TABLE (PREFIX_EVEX_0F389C) },
- { PREFIX_TABLE (PREFIX_EVEX_0F389D) },
- { PREFIX_TABLE (PREFIX_EVEX_0F389E) },
- { PREFIX_TABLE (PREFIX_EVEX_0F389F) },
+ { PREFIX_TABLE (PREFIX_VEX_0F389C) },
+ { PREFIX_TABLE (PREFIX_VEX_0F389D) },
+ { PREFIX_TABLE (PREFIX_VEX_0F389E) },
+ { PREFIX_TABLE (PREFIX_VEX_0F389F) },
/* A0 */
{ PREFIX_TABLE (PREFIX_EVEX_0F38A0) },
{ PREFIX_TABLE (PREFIX_EVEX_0F38A1) },
@@ -479,17 +479,17 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F38A3) },
{ Bad_Opcode },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F38A6) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38A7) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38A6) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38A7) },
/* A8 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38A8) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38A9) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38A8) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38A9) },
{ PREFIX_TABLE (PREFIX_EVEX_0F38AA) },
{ PREFIX_TABLE (PREFIX_EVEX_0F38AB) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38AC) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38AD) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38AE) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38AF) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38AC) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38AD) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38AE) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38AF) },
/* B0 */
{ Bad_Opcode },
{ Bad_Opcode },
@@ -497,17 +497,17 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ PREFIX_TABLE (PREFIX_EVEX_0F38B4) },
{ PREFIX_TABLE (PREFIX_EVEX_0F38B5) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38B6) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38B7) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38B6) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38B7) },
/* B8 */
- { PREFIX_TABLE (PREFIX_EVEX_0F38B8) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38B9) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38BA) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38BB) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38BC) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38BD) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38BE) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38BF) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38B8) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38B9) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38BA) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38BB) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38BC) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38BD) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38BE) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38BF) },
/* C0 */
{ Bad_Opcode },
{ Bad_Opcode },
@@ -525,7 +525,7 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F38CC) },
{ PREFIX_TABLE (PREFIX_EVEX_0F38CD) },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F38CF) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38CF) },
/* D0 */
{ Bad_Opcode },
{ Bad_Opcode },
@@ -540,10 +540,10 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F38DC) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38DD) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38DE) },
- { PREFIX_TABLE (PREFIX_EVEX_0F38DF) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38DC) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38DD) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38DE) },
+ { PREFIX_TABLE (PREFIX_VEX_0F38DF) },
/* E0 */
{ Bad_Opcode },
{ Bad_Opcode },
@@ -588,7 +588,7 @@ static const struct dis386 evex_table[][256] = {
{ PREFIX_TABLE (PREFIX_EVEX_0F3A01) },
{ Bad_Opcode },
{ PREFIX_TABLE (PREFIX_EVEX_0F3A03) },
- { PREFIX_TABLE (PREFIX_EVEX_0F3A04) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3A04) },
{ PREFIX_TABLE (PREFIX_EVEX_0F3A05) },
{ Bad_Opcode },
{ Bad_Opcode },
@@ -600,7 +600,7 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F3A0F) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3A0F) },
/* 10 */
{ Bad_Opcode },
{ Bad_Opcode },
@@ -660,7 +660,7 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ PREFIX_TABLE (PREFIX_EVEX_0F3A42) },
{ PREFIX_TABLE (PREFIX_EVEX_0F3A43) },
- { PREFIX_TABLE (PREFIX_EVEX_0F3A44) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3A44) },
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
@@ -815,8 +815,8 @@ static const struct dis386 evex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { PREFIX_TABLE (PREFIX_EVEX_0F3ACE) },
- { PREFIX_TABLE (PREFIX_EVEX_0F3ACF) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3ACE) },
+ { PREFIX_TABLE (PREFIX_VEX_0F3ACF) },
/* D0 */
{ Bad_Opcode },
{ Bad_Opcode },