diff options
author | konglin1 <lingling.kong@intel.com> | 2022-11-04 10:40:07 +0800 |
---|---|---|
committer | Cui,Lili <lili.cui@intel.com> | 2022-11-04 11:42:17 +0800 |
commit | 01d8ce742c257b697eed52de5520d0a4489e4e5b (patch) | |
tree | 9efb92c67057a8d8b67c7553d7243394d167fc40 /opcodes/i386-dis.c | |
parent | 4e0dd3abffe7e8d83399938c38001c0375339d65 (diff) | |
download | binutils-gdb-01d8ce742c257b697eed52de5520d0a4489e4e5b.tar.gz |
Support Intel AVX-NE-CONVERT
gas/ChangeLog:
* NEWS: Support Intel AVX-NE-CONVERT.
* config/tc-i386.c: Add avx_ne_convert.
* doc/c-i386.texi: Document .avx_ne_convert.
* testsuite/gas/i386/i386.exp: Run AVX NE CONVERT tests.
* testsuite/gas/i386/avx-ne-convert-intel.d: New test.
* testsuite/gas/i386/avx-ne-convert.d: Ditto.
* testsuite/gas/i386/avx-ne-convert.s: Ditto.
* testsuite/gas/i386/x86-64-avx-ne-convert-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx-ne-convert.d: Ditto.
* testsuite/gas/i386/x86-64-avx-ne-convert.s: Ditto.
opcodes/ChangeLog:
* i386-dis.c (Mw): New.
(PREFIX_VEX_0F3872): Ditto.
(PREFIX_VEX_0F38B0_W_0): Ditto.
(PREFIX_VEX_0F38B1_W_0): Ditto.
(VEX_W_0F3872_P_1): Ditto.
(VEX_W_0F38B0): Ditto.
(VEX_W_0F38B1): Ditto.
(prefix_table): Add PREFIX_VEX_0F3872, PREFIX_VEX_0F38B0_W_0,
PREFIX_VEX_0F38B1_W_0.
(vex_w_table): Add VEX_W_0F3872_P_1, VEX_W_0F38B0, VEX_W_0F38B1.
* i386-gen.c (cpu_flag_init): Add CPU_AVX_NE_CONVERT_FLGAS and
CPU_ANY_AVX_NE_CONVERT_FLAGS.
(cpu_flags): Add CpuAVX_NE_CONVERT.
* i386-init.h: Regenerated.
* i386-opc.h (CpuAVX_NE CONVERT): New.
(i386_cpu_flags): Add cpuavx_ne_convert.
* i386-opc.tbl: Add Intel AVX-NE-CONVERT instructions.
* i386-tbl.h: Regenerated.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r-- | opcodes/i386-dis.c | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 61cef0c86a2..f0638a3193c 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -373,6 +373,7 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define Mq { OP_M, q_mode } #define Mv { OP_M, v_mode } #define Mv_bnd { OP_M, v_bndmk_mode } +#define Mw { OP_M, w_mode } #define Mx { OP_M, x_mode } #define Mxmm { OP_M, xmm_mode } #define Gb { OP_G, b_mode } @@ -1140,6 +1141,9 @@ enum PREFIX_VEX_0F3851_W_0, PREFIX_VEX_0F385C_X86_64, PREFIX_VEX_0F385E_X86_64, + PREFIX_VEX_0F3872, + PREFIX_VEX_0F38B0_W_0, + PREFIX_VEX_0F38B1_W_0, PREFIX_VEX_0F38F5_L_0, PREFIX_VEX_0F38F6_L_0, PREFIX_VEX_0F38F7_L_0, @@ -1556,8 +1560,11 @@ enum VEX_W_0F385E_X86_64_P_1, VEX_W_0F385E_X86_64_P_2, VEX_W_0F385E_X86_64_P_3, + VEX_W_0F3872_P_1, VEX_W_0F3878, VEX_W_0F3879, + VEX_W_0F38B0, + VEX_W_0F38B1, VEX_W_0F38B4, VEX_W_0F38B5, VEX_W_0F38CF, @@ -4093,6 +4100,27 @@ static const struct dis386 prefix_table[][4] = { { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_3) }, }, + /* PREFIX_VEX_0F3872 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_0F3872_P_1) }, + }, + + /* PREFIX_VEX_0F38B0_W_0 */ + { + { "vcvtneoph2ps", { XM, Mx }, 0 }, + { "vcvtneebf162ps", { XM, Mx }, 0 }, + { "vcvtneeph2ps", { XM, Mx }, 0 }, + { "vcvtneobf162ps", { XM, Mx }, 0 }, + }, + + /* PREFIX_VEX_0F38B1_W_0 */ + { + { Bad_Opcode }, + { "vbcstnebf162ps", { XM, Mw }, 0 }, + { "vbcstnesh2ps", { XM, Mw }, 0 }, + }, + /* PREFIX_VEX_0F38F5_L_0 */ { { "bzhiS", { Gdq, Edq, VexGdq }, 0 }, @@ -6415,7 +6443,7 @@ static const struct dis386 vex_table[][256] = { /* 70 */ { Bad_Opcode }, { Bad_Opcode }, - { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_VEX_0F3872) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -6485,8 +6513,8 @@ static const struct dis386 vex_table[][256] = { { "vfnmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, { "vfnmsub213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, /* b0 */ - { Bad_Opcode }, - { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_0F38B0) }, + { VEX_W_TABLE (VEX_W_0F38B1) }, { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (VEX_W_0F38B4) }, @@ -7797,6 +7825,10 @@ static const struct dis386 vex_w_table[][2] = { { MOD_TABLE (MOD_VEX_0F385E_X86_64_P_3_W_0) }, }, { + /* VEX_W_0F3872_P_1 */ + { "%XVvcvtneps2bf16%XY", { XMM, EXx }, 0 }, + }, + { /* VEX_W_0F3878 */ { "%XEvpbroadcastb", { XM, EXb }, PREFIX_DATA }, }, @@ -7805,6 +7837,14 @@ static const struct dis386 vex_w_table[][2] = { { "%XEvpbroadcastw", { XM, EXw }, PREFIX_DATA }, }, { + /* VEX_W_0F38B0 */ + { PREFIX_TABLE (PREFIX_VEX_0F38B0_W_0) }, + }, + { + /* VEX_W_0F38B1 */ + { PREFIX_TABLE (PREFIX_VEX_0F38B1_W_0) }, + }, + { /* VEX_W_0F38B4 */ { Bad_Opcode }, { "%XVvpmadd52luq", { XM, Vex, EXx }, PREFIX_DATA }, |