aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis.c
diff options
context:
space:
mode:
authorHaochen Jiang <haochen.jiang@intel.com>2023-07-24 11:09:49 +0800
committerHaochen Jiang <haochen.jiang@intel.com>2023-07-27 20:52:25 +0800
commitc55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2 (patch)
tree1036380164aeffdde1e76bea6b76161d69d64eb0 /opcodes/i386-dis.c
parent3ac2eb94812e229843d4c799fc6702250e950310 (diff)
downloadgdb-c55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2.zip
gdb-c55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2.tar.gz
gdb-c55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2.tar.bz2
Support Intel SM3
gas/ChangeLog: * NEWS: Support Intel SM3. * config/tc-i386.c: Add sm3. * doc/c-i386.texi: Document .sm3. * testsuite/gas/i386/i386.exp: Run sm3 tests. * testsuite/gas/i386/x86-64.exp: Ditto. * testsuite/gas/i386/sm3-intel.d: New test. * testsuite/gas/i386/sm3.d: Ditto. * testsuite/gas/i386/sm3.s: Ditto. * testsuite/gas/i386/x86-64-sm3-intel.d: Ditto. * testsuite/gas/i386/x86-64-sm3.d: Ditto. * testsuite/gas/i386/x86-64-sm3.s: Ditto. opcodes/ChangeLog: * i386-dis.c (PREFIX_VEX_0F38DA_W_0): New. (VEX_LEN_0F38DA_W_0_P_0): Ditto. (VEX_LEN_0F38DA_W_0_P_2): Ditto. (VEX_LEN_0F3ADE_W_0): Ditto. (VEX_W_0F38DA): Ditto. (VEX_W_0F3ADE): Ditto. (prefix_table): Add PREFIX_VEX_0F38DA_W_0. (vex_len_table): Add VEX_LEN_0F38DA_W_0_P_0, VEX_LEN_0F38DA_W_0_P_2, VEX_LEN_0F3ADE_W_0. (vex_w_table): Add VEX_W_0F38DA, VEX_W_0F3ADE. * i386-gen.c (isa_dependencies): Add SM3. (cpu_flags): Ditto. * i386-init.h: Regenerated. * i386-mnem.h: Ditto. * i386-opc.h (CpuSM3): New. (i386_cpu_flags): Add cpusm3. * i386-opc.tbl: Add SM3 instructions. * i386-tbl.h: Regenerated.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r--opcodes/i386-dis.c40
1 files changed, 38 insertions, 2 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 57cb1e3..01b9096 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -1067,6 +1067,7 @@ enum
PREFIX_VEX_0F38CB,
PREFIX_VEX_0F38CC,
PREFIX_VEX_0F38CD,
+ PREFIX_VEX_0F38DA_W_0,
PREFIX_VEX_0F38F5_L_0,
PREFIX_VEX_0F38F6_L_0,
PREFIX_VEX_0F38F7_L_0,
@@ -1312,6 +1313,8 @@ enum
VEX_LEN_0F38CB_P_3_W_0,
VEX_LEN_0F38CC_P_3_W_0,
VEX_LEN_0F38CD_P_3_W_0,
+ VEX_LEN_0F38DA_W_0_P_0,
+ VEX_LEN_0F38DA_W_0_P_2,
VEX_LEN_0F38DB,
VEX_LEN_0F38F2,
VEX_LEN_0F38F3,
@@ -1342,6 +1345,7 @@ enum
VEX_LEN_0F3A61,
VEX_LEN_0F3A62,
VEX_LEN_0F3A63,
+ VEX_LEN_0F3ADE_W_0,
VEX_LEN_0F3ADF,
VEX_LEN_0F3AF0,
VEX_LEN_XOP_08_85,
@@ -1485,6 +1489,7 @@ enum
VEX_W_0F38CF,
VEX_W_0F38D2,
VEX_W_0F38D3,
+ VEX_W_0F38DA,
VEX_W_0F3A00_L_1,
VEX_W_0F3A01_L_1,
VEX_W_0F3A02,
@@ -1502,6 +1507,7 @@ enum
VEX_W_0F3A4C,
VEX_W_0F3ACE,
VEX_W_0F3ACF,
+ VEX_W_0F3ADE,
VEX_W_XOP_08_85_L_0,
VEX_W_XOP_08_86_L_0,
@@ -3961,6 +3967,13 @@ static const struct dis386 prefix_table[][4] = {
{ VEX_W_TABLE (VEX_W_0F38CD_P_3) },
},
+ /* PREFIX_VEX_0F38DA_W_0 */
+ {
+ { VEX_LEN_TABLE (VEX_LEN_0F38DA_W_0_P_0) },
+ { Bad_Opcode },
+ { VEX_LEN_TABLE (VEX_LEN_0F38DA_W_0_P_2) },
+ },
+
/* PREFIX_VEX_0F38F5_L_0 */
{
{ "bzhiS", { Gdq, Edq, VexGdq }, 0 },
@@ -6430,7 +6443,7 @@ static const struct dis386 vex_table[][256] = {
/* d8 */
{ Bad_Opcode },
{ Bad_Opcode },
- { Bad_Opcode },
+ { VEX_W_TABLE (VEX_W_0F38DA) },
{ VEX_LEN_TABLE (VEX_LEN_0F38DB) },
{ "vaesenc", { XM, Vex, EXx }, PREFIX_DATA },
{ "vaesenclast", { XM, Vex, EXx }, PREFIX_DATA },
@@ -6725,7 +6738,7 @@ static const struct dis386 vex_table[][256] = {
{ Bad_Opcode },
{ Bad_Opcode },
{ Bad_Opcode },
- { Bad_Opcode },
+ { VEX_W_TABLE (VEX_W_0F3ADE) },
{ VEX_LEN_TABLE (VEX_LEN_0F3ADF) },
/* e0 */
{ Bad_Opcode },
@@ -6995,6 +7008,16 @@ static const struct dis386 vex_len_table[][2] = {
{ "vsha512msg2", { XM, Rymm }, 0 },
},
+ /* VEX_LEN_0F38DA_W_0_P_0 */
+ {
+ { "vsm3msg1", { XM, Vex, EXxmm }, 0 },
+ },
+
+ /* VEX_LEN_0F38DA_W_0_P_2 */
+ {
+ { "vsm3msg2", { XM, Vex, EXxmm }, 0 },
+ },
+
/* VEX_LEN_0F38DB */
{
{ "vaesimc", { XM, EXx }, PREFIX_DATA },
@@ -7153,6 +7176,11 @@ static const struct dis386 vex_len_table[][2] = {
{ "vpcmpistri", { XM, EXx, Ib }, PREFIX_DATA },
},
+ /* VEX_LEN_0F3ADE_W_0 */
+ {
+ { "vsm3rnds2", { XM, Vex, EXxmm, Ib }, PREFIX_DATA },
+ },
+
/* VEX_LEN_0F3ADF */
{
{ "vaeskeygenassist", { XM, EXx, Ib }, PREFIX_DATA },
@@ -7690,6 +7718,10 @@ static const struct dis386 vex_w_table[][2] = {
{ PREFIX_TABLE (PREFIX_VEX_0F38D3_W_0) },
},
{
+ /* VEX_W_0F38DA */
+ { PREFIX_TABLE (PREFIX_VEX_0F38DA_W_0) },
+ },
+ {
/* VEX_W_0F3A00_L_1 */
{ Bad_Opcode },
{ "%XEvpermq", { XM, EXx, Ib }, PREFIX_DATA },
@@ -7761,6 +7793,10 @@ static const struct dis386 vex_w_table[][2] = {
{ Bad_Opcode },
{ "%XEvgf2p8affineinvqb", { XM, Vex, EXx, Ib }, PREFIX_DATA },
},
+ {
+ /* VEX_W_0F3ADE */
+ { VEX_LEN_TABLE (VEX_LEN_0F3ADE_W_0) },
+ },
/* VEX_W_XOP_08_85_L_0 */
{
{ "vpmacssww", { XM, Vex, EXx, XMVexI4 }, 0 },