mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
This patch will support AMX-AVX512. In disassmbler, we pull out all GPR mode out of the vex length switch to make it more general. gas/ChangeLog: * NEWS: Mention the full support on DMR AMX ISAs. * config/tc-i386.c: Add amx_avx512. * doc/c-i386.texi: Document .amx_avx512. * testsuite/gas/i386/x86-64.exp: Run AMX-AVX512 tests. * testsuite/gas/i386/x86-64-amx-avx512-intel.d: New test. * testsuite/gas/i386/x86-64-amx-avx512.d: Ditto. * testsuite/gas/i386/x86-64-amx-avx512.s: Ditto. opcodes/ChangeLog: * i386-dis-evex-len.h: Add EVEX_LEN_0F384A_X86_64_W_0, EVEX_LEN_0F386D_X86_64_W_0, EVEX_LEN_0F3A07_X86_64_W_0, EVEX_LEN_0F3A77_X86_64_W_0. * i386-dis-evex-prefix.h: Add PREFIX_EVEX_0F384A_W_0_L_2, PREFIX_EVEX_0F386D_W_0_L_2, PREFIX_EVEX_0F3A07_W_0_L_2, PREFIX_EVEX_0F3A77_W_0_L_2. * i386-dis-evex-w.h: Add EVEX_W_0F384A_X86_64, EVEX_W_0F386D_X86_64, EVEX_W_0F3A07_X86_64, EVEX_W_0F3A77_X86_64. * i386-dis-evex-x86-64.h: Add X86_64_EVEX_0F384A, X86_64_EVEX_0F386D, X86_64_EVEX_0F3A07, X86_64_EVEX_0F3A77. * i386-dis-evex.h: Ditto. * i386-dis.c (EVEX_LEN_0F384A_X86_64_W_0): New. (EVEX_LEN_0F386D_X86_64_W_0): Ditto. (EVEX_LEN_0F3A07_X86_64_W_0): Ditto. (EVEX_LEN_0F3A77_X86_64_W_0): Ditto. (MOD_EVEX_0F384A_X86_64_W_0): Ditto. (MOD_EVEX_0F386D_X86_64_W_0): Ditto. (MOD_EVEX_0F3A07_X86_64_W_0): Ditto. (MOD_EVEX_0F3A77_X86_64_W_0): Ditto. (PREFIX_EVEX_0F384A_W_0_L_2): Ditto. (PREFIX_EVEX_0F386D_W_0_L_2): Ditto. (PREFIX_EVEX_0F3A07_W_0_L_2): Ditto. (PREFIX_EVEX_0F3A77_W_0_L_2): Ditto. (EVEX_W_0F384A_X86_64): Ditto. (EVEX_W_0F386D_X86_64): Ditto. (EVEX_W_0F3A07_X86_64): Ditto. (EVEX_W_0F3A77_X86_64): Ditto. (X86_64_EVEX_0F384A): Ditto. (X86_64_EVEX_0F386D): Ditto. (X86_64_EVEX_0F3A07): Ditto. (X86_64_EVEX_0F3A77): Ditto. (OP_VEX): Pull out all GPR mode out of the vector length switch. * i386-gen.c (isa_dependencies): Add AMX-AVX512. (cpu_flags): Ditto. * i386-init.h: Regenerated. * i386-mnem.h: Ditto. * i386-opc.h (CpuAMX_AVX512): New. (i386_cpu_flags): Add cpuamx_avx512. * i386-opc.tbl: Add AMX-AVX512 instructions. * i386-tbl.h: Regenerated.
197 lines
3.6 KiB
C
197 lines
3.6 KiB
C
static const struct dis386 evex_len_table[][3] = {
|
|
/* EVEX_LEN_0F7E_P_1_W_0 */
|
|
{
|
|
{ "vmovd", { XMScalar, EXd }, 0 },
|
|
},
|
|
|
|
/* EVEX_LEN_0FD6_P_2_W_0 */
|
|
{
|
|
{ "vmovd", { EXdS, XMScalar }, 0 },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3816 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ "%XEvpermp%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
|
{ "vpermp%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3819 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3819_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F3819_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F381A */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F381A_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F381A_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F381B */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F381B_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3836 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ "%XEvperm%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
|
{ "vperm%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
|
},
|
|
|
|
/* EVEX_LEN_0F384A_X86_64_W_0 */
|
|
{
|
|
{ X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F384A_X86_64_W_0_L_0) },
|
|
{ Bad_Opcode },
|
|
{ PREFIX_TABLE (PREFIX_EVEX_0F384A_X86_64_W_0_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F385A */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F385A_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F385A_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F385B */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F385B_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F386D_X86_64_W_0_M_1 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ PREFIX_TABLE (PREFIX_EVEX_0F386D_X86_64_W_0_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F38C6 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ REG_TABLE (REG_EVEX_0F38C6_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F38C7 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ REG_TABLE (REG_EVEX_0F38C7_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A00 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (VEX_W_0F3A00_L_1) },
|
|
{ VEX_W_TABLE (VEX_W_0F3A00_L_1) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A01 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (VEX_W_0F3A01_L_1) },
|
|
{ VEX_W_TABLE (VEX_W_0F3A01_L_1) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A07_X86_64_W_0 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ PREFIX_TABLE (PREFIX_EVEX_0F3A07_X86_64_W_0_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A18 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A18_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A18_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A19 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A19_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A19_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A1A */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A1A_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A1B */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A1B_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A23 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A23_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A23_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A38 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A38_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A38_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A39 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A39_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A39_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A3A */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A3A_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A3B */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A3B_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A43 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A43_L_n) },
|
|
{ VEX_W_TABLE (EVEX_W_0F3A43_L_n) },
|
|
},
|
|
|
|
/* EVEX_LEN_0F3A77_X86_64_W_0 */
|
|
{
|
|
{ Bad_Opcode },
|
|
{ Bad_Opcode },
|
|
{ PREFIX_TABLE (PREFIX_EVEX_0F3A77_X86_64_W_0_L_2) },
|
|
},
|
|
|
|
/* EVEX_LEN_MAP5_6E */
|
|
{
|
|
{ PREFIX_TABLE (PREFIX_EVEX_MAP5_6E_L_0) },
|
|
},
|
|
|
|
/* EVEX_LEN_MAP5_7E */
|
|
{
|
|
{ PREFIX_TABLE (PREFIX_EVEX_MAP5_7E_L_0) },
|
|
},
|
|
};
|