Files
binutils-gdb/opcodes/i386-dis-evex-len.h
Haochen Jiang 7473229fa8 Support Intel AMX-AVX512
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.
2025-01-14 10:30:40 +08:00

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) },
},
};