From 963f35869dd021f4a2a236ca6fa1242efc860d86 Mon Sep 17 00:00:00 2001 From: Ilya Tocar Date: Mon, 25 Nov 2013 16:35:42 +0400 Subject: Add clflushopt, xsaves, xsavec, xrstors gas/ 2014-02-12 Ilya Tocar * config/tc-i386.c (cpu_arch): Add .clflushopt, .xsavec, .xsaves. * doc/c-i386.texi: Document .xsavec/xsavec/.xsaves/xsaves/ clflushopt/.clfushopt. gas/testsuite/ 2014-02-12 Ilya Tocar * gas/i386/clflushopt-intel.d: New. * gas/i386/clflushopt.d: Ditto. * gas/i386/clflushopt.s: Ditto. * gas/i386/i386.exp: Run new tests. * gas/i386/x86-64-clflushopt-intel.d: New. * gas/i386/x86-64-clflushopt.d: Ditto. * gas/i386/x86-64-clflushopt.s: Ditto. * gas/i386/x86-64-xsavec-intel.d: Ditto. * gas/i386/x86-64-xsavec.d: Ditto. * gas/i386/x86-64-xsavec.s: Ditto. * gas/i386/x86-64-xsaves-intel.d: Ditto. * gas/i386/x86-64-xsaves.d: Ditto. * gas/i386/x86-64-xsaves.s: Ditto. * gas/i386/xsavec-intel.d: Ditto. * gas/i386/xsavec.d: Ditto. * gas/i386/xsavec.s: Ditto. * gas/i386/xsaves-intel.d: Ditto. * gas/i386/xsaves.d: Ditto. * gas/i386/xsaves.s: Ditto. opcodes/ 2014-02-12 Ilya Tocar * i386-dis.c (MOD enum): Add MOD_0FC7_REG_3, MOD_0FC7_REG_4, MOD_0FC7_REG_5. (PREFIX enum): Add PREFIX_0FAE_REG_7. (reg_table): Add MOD_0FC7_REG_3, MOD_0FC7_REG_4 MOD_0FC7_REG_5. (prefix_table): Add clflusopt. (mod_table): Add xrstors, xsavec, xsaves. * i386-gen.c (cpu_flag_init): Add CPU_CLFLUSHOPT_FLAGS, CPU_XSAVES_FLAGS, CPU_XSAVEC_FLAGS. (cpu_flags): Add CpuClflushOpt, CpuXSAVES, CpuXSAVEC. * i386-init.h: Regenerate. * i386-opc.tbl: Add clflushopt, xrstors, xrstors64, xsaves, xsaves64, xsavec, xsavec64. * i386-tbl.h: Regenerate. --- opcodes/i386-dis.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'opcodes/i386-dis.c') diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 3645daf..126d497 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -769,6 +769,9 @@ enum MOD_0FB2, MOD_0FB4, MOD_0FB5, + MOD_0FC7_REG_3, + MOD_0FC7_REG_4, + MOD_0FC7_REG_5, MOD_0FC7_REG_6, MOD_0FC7_REG_7, MOD_0FD7, @@ -884,6 +887,7 @@ enum PREFIX_0FAE_REG_1, PREFIX_0FAE_REG_2, PREFIX_0FAE_REG_3, + PREFIX_0FAE_REG_7, PREFIX_0FB8, PREFIX_0FBC, PREFIX_0FBD, @@ -3354,9 +3358,9 @@ static const struct dis386 reg_table[][8] = { { Bad_Opcode }, { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } }, { Bad_Opcode }, - { Bad_Opcode }, - { Bad_Opcode }, - { Bad_Opcode }, + { MOD_TABLE (MOD_0FC7_REG_3) }, + { MOD_TABLE (MOD_0FC7_REG_4) }, + { MOD_TABLE (MOD_0FC7_REG_5) }, { MOD_TABLE (MOD_0FC7_REG_6) }, { MOD_TABLE (MOD_0FC7_REG_7) }, }, @@ -3759,6 +3763,13 @@ static const struct dis386 prefix_table[][4] = { { "wrgsbase", { Ev } }, }, + /* PREFIX_0FAE_REG_7 */ + { + { "clflush", { Mb } }, + { Bad_Opcode }, + { "clflushopt", { Mb } }, + }, + /* PREFIX_0FB8 */ { { Bad_Opcode }, @@ -11286,7 +11297,7 @@ static const struct dis386 mod_table[][2] = { }, { /* MOD_0FAE_REG_7 */ - { "clflush", { Mb } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_7) }, { RM_TABLE (RM_0FAE_REG_7) }, }, { @@ -11302,6 +11313,18 @@ static const struct dis386 mod_table[][2] = { { "lgsS", { Gv, Mp } }, }, { + /* MOD_0FC7_REG_3 */ + { "xrstors", { FXSAVE } }, + }, + { + /* MOD_0FC7_REG_4 */ + { "xsavec", { FXSAVE } }, + }, + { + /* MOD_0FC7_REG_5 */ + { "xsaves", { FXSAVE } }, + }, + { /* MOD_0FC7_REG_6 */ { PREFIX_TABLE (PREFIX_0FC7_REG_6) }, { "rdrand", { Ev } }, -- cgit v1.1