diff options
author | Haochen Jiang <haochen.jiang@intel.com> | 2023-07-24 11:09:49 +0800 |
---|---|---|
committer | Haochen Jiang <haochen.jiang@intel.com> | 2023-07-27 20:52:25 +0800 |
commit | c55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2 (patch) | |
tree | 1036380164aeffdde1e76bea6b76161d69d64eb0 /opcodes/i386-dis.c | |
parent | 3ac2eb94812e229843d4c799fc6702250e950310 (diff) | |
download | gdb-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.c | 40 |
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 }, |