This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: PATCH: Add x86 AVX XML files
> Date: Tue, 2 Mar 2010 16:00:29 -0800
> From: "H.J. Lu" <hongjiu.lu@intel.com>
>
> On Tue, Mar 02, 2010 at 07:21:28AM -0800, H.J. Lu wrote:
> > Hi,
> >
> > I am submitting AVX patches in pieces since AVX changes are quite
> > large. This patch adds x86 AVX target descriptions. OK to install?
This looks reasonable. So AVX will fully replace SSE in the target
description and I presume an AVX target will implement the SSE
registers as pseudo registers?
In any case, I can't properly review this diff without seeing the
impact on the actual implementation of the AVX code.
> > 2010-03-02 H.J. Lu <hongjiu.lu@intel.com>
> >
> > * features/Makefile (WHICH): Add i386/i386-avx,
> > i386/i386-avx-linux, i386/x86-64-avx and i386/x86-64-avx-linux.
> > (i386/i386-avx-expedite): New.
> > (i386/i386-avx-linux-expedite): Likewise.
> > (i386/x86-64-avx-expedite):Likewise.
> > (i386/x86-64-avx-linux-expedite): Likewise.
> > ($(outdir)/i386/i386-avx.dat): New dependency.
> > ($(outdir)/i386/i386-avx-linux.dat): Likewise.
> > ($(outdir)/i386/x86-avx-64.dat): Likewise.
> > ($(outdir)/i386/x86-64-avx-linux.dat): Likewise.
> >
> > * features/i386/32bit-avx.xml: New.
> > * features/i386/64bit-avx.xml: Likewise.
> > * features/i386/i386-avx-linux.c: Likewise.
> > * features/i386/i386-avx-linux.xml: Likewise.
> > * features/i386/i386-avx.c: Likewise.
> > * features/i386/i386-avx.xml: Likewise.
> > * features/i386/x86-64-avx-linux.c: Likewise.
> > * features/i386/x86-64-avx-linux.xml: Likewise.
> > * features/i386/x86-64-avx.c: Likewise.
> > * features/i386/x86-64-avx.xml: Likewise.
> > * regformats/i386/i386-avx-linux.dat: Likewise.
> > * regformats/i386/i386-avx.dat: Likewise.
> > * regformats/i386/x86-64-avx-linux.dat: Likewise.
> > * regformats/i386/x86-64-avx.dat: Likewise.
> >
>
> Here is the updated patch with config/djgpp/fnchange.lst change.
> OK to install?
>
> Thanks.
>
>
> H.J.
> ---
> 2010-03-02 H.J. Lu <hongjiu.lu@intel.com>
>
> * config/djgpp/fnchange.lst: Add x86 AVX XML files.
>
> * features/Makefile (WHICH): Add i386/i386-avx,
> i386/i386-avx-linux, i386/x86-64-avx and i386/x86-64-avx-linux.
> (i386/i386-avx-expedite): New.
> (i386/i386-avx-linux-expedite): Likewise.
> (i386/x86-64-avx-expedite):Likewise.
> (i386/x86-64-avx-linux-expedite): Likewise.
> ($(outdir)/i386/i386-avx.dat): New dependency.
> ($(outdir)/i386/i386-avx-linux.dat): Likewise.
> ($(outdir)/i386/x86-avx-64.dat): Likewise.
> ($(outdir)/i386/x86-64-avx-linux.dat): Likewise.
>
> * features/i386/32bit-avx.xml: New.
> * features/i386/64bit-avx.xml: Likewise.
> * features/i386/i386-avx-linux.c: Likewise.
> * features/i386/i386-avx-linux.xml: Likewise.
> * features/i386/i386-avx.c: Likewise.
> * features/i386/i386-avx.xml: Likewise.
> * features/i386/x86-64-avx-linux.c: Likewise.
> * features/i386/x86-64-avx-linux.xml: Likewise.
> * features/i386/x86-64-avx.c: Likewise.
> * features/i386/x86-64-avx.xml: Likewise.
> * regformats/i386/i386-avx-linux.dat: Likewise.
> * regformats/i386/i386-avx.dat: Likewise.
> * regformats/i386/x86-64-avx-linux.dat: Likewise.
> * regformats/i386/x86-64-avx.dat: Likewise.
>
> diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst
> index 3982f1d..7bec57d 100644
> --- a/gdb/config/djgpp/fnchange.lst
> +++ b/gdb/config/djgpp/fnchange.lst
> @@ -228,6 +228,14 @@
> @V@/gdb/features/rs6000/powerpc-vsx64l.xml @V@/gdb/features/rs6000/ppc-v64l.xml
> @V@/gdb/features/rs6000/powerpc-cell32l.xml @V@/gdb/features/rs6000/ppc-c32l.xml
> @V@/gdb/features/rs6000/powerpc-cell64l.xml @V@/gdb/features/rs6000/ppc-c64l.xml
> +@V@/gdb/features/i386/amd64-avx-linux.c @V@/gdb/features/i386/a64-al.c
> +@V@/gdb/features/i386/amd64-avx.c @V@/gdb/features/i386/a64-a.c
> +@V@/gdb/features/i386/amd64-avx-linux.xml @V@/gdb/features/i386/a64-al.xml
> +@V@/gdb/features/i386/amd64-avx.xml @V@/gdb/features/i386/a64-a.xml
> +@V@/gdb/features/i386/i386-avx-linux.c @V@/features/i386/i32-al.c
> +@V@/gdb/features/i386/i386-avx.c @V@/gdb/features/i386/i32-a.c
> +@V@/gdb/features/i386/i386-avx-linux.xml @V@/gdb/features/i386/i32-al.xml
> +@V@/gdb/features/i386/i386-avx.xml @V@/gdb/features/i386/i32-a.xml
> @V@/gdb/f-exp.tab.c @V@/gdb/f-exp_tab.c
> @V@/gdb/gdbserver/linux-cris-low.c @V@/gdb/gdbserver/lx-cris.c
> @V@/gdb/gdbserver/linux-crisv32-low.c @V@/gdb/gdbserver/lx-cris32.c
> diff --git a/gdb/features/Makefile b/gdb/features/Makefile
> index b00800c..1166582 100644
> --- a/gdb/features/Makefile
> +++ b/gdb/features/Makefile
> @@ -33,6 +33,8 @@
> WHICH = arm-with-iwmmxt arm-with-vfpv2 arm-with-vfpv3 arm-with-neon \
> i386/i386 i386/i386-linux \
> i386/amd64 i386/amd64-linux \
> + i386/i386-avx i386/i386-avx-linux \
> + i386/amd64-avx i386/amd64-avx-linux \
> mips-linux mips64-linux \
> rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \
> rs6000/powerpc-64l rs6000/powerpc-altivec64l rs6000/powerpc-vsx32l \
> @@ -45,6 +47,10 @@ i386/i386-expedite = ebp,esp,eip
> i386/i386-linux-expedite = ebp,esp,eip
> i386/amd64-expedite = rbp,rsp,rip
> i386/amd64-linux-expedite = rbp,rsp,rip
> +i386/i386-avx-expedite = ebp,esp,eip
> +i386/i386-avx-linux-expedite = ebp,esp,eip
> +i386/amd64-avx-expedite = rbp,rsp,rip
> +i386/amd64-avx-linux-expedite = rbp,rsp,rip
> mips-expedite = r29,pc
> mips64-expedite = r29,pc
> powerpc-expedite = r1,pc
> @@ -90,3 +96,9 @@ $(outdir)/i386/i386-linux.dat: i386/32bit-core.xml i386/32bit-sse.xml \
> $(outdir)/i386/amd64.dat: i386/64bit-core.xml i386/64bit-sse.xml
> $(outdir)/i386/amd64-linux.dat: i386/64bit-core.xml i386/64bit-sse.xml \
> i386/64bit-linux.xml
> +$(outdir)/i386/i386-avx.dat: i386/32bit-core.xml i386/32bit-avx.xml
> +$(outdir)/i386/i386-avx-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
> + i386/32bit-linux.xml
> +$(outdir)/i386/amd64-avx.dat: i386/64bit-core.xml i386/64bit-avx.xml
> +$(outdir)/i386/amd64-avx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
> + i386/64bit-linux.xml
> diff --git a/gdb/features/i386/32bit-avx.xml b/gdb/features/i386/32bit-avx.xml
> new file mode 100644
> index 0000000..d8d53e9
> --- /dev/null
> +++ b/gdb/features/i386/32bit-avx.xml
> @@ -0,0 +1,53 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2010 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!DOCTYPE feature SYSTEM "gdb-target.dtd">
> +<feature name="org.gnu.gdb.i386.avx">
> + <vector id="v8f" type="ieee_single" count="8"/>
> + <vector id="v4d" type="ieee_double" count="4"/>
> + <vector id="v32i8" type="int8" count="32"/>
> + <vector id="v16i16" type="int16" count="16"/>
> + <vector id="v8i32" type="int32" count="8"/>
> + <vector id="v4i64" type="int64" count="4"/>
> + <vector id="v2i128" type="uint128" count="2"/>
> + <union id="vec256">
> + <field name="v8_float" type="v8f"/>
> + <field name="v4_double" type="v4d"/>
> + <field name="v32_int8" type="v32i8"/>
> + <field name="v16_int16" type="v16i16"/>
> + <field name="v8_int32" type="v8i32"/>
> + <field name="v4_int64" type="v4i64"/>
> + <field name="v2_uint128" type="v2i128"/>
> + </union>
> + <flags id="i386_mxcsr" size="4">
> + <field name="IE" start="0" end="0"/>
> + <field name="DE" start="1" end="1"/>
> + <field name="ZE" start="2" end="2"/>
> + <field name="OE" start="3" end="3"/>
> + <field name="UE" start="4" end="4"/>
> + <field name="PE" start="5" end="5"/>
> + <field name="DAZ" start="6" end="6"/>
> + <field name="IM" start="7" end="7"/>
> + <field name="DM" start="8" end="8"/>
> + <field name="ZM" start="9" end="9"/>
> + <field name="OM" start="10" end="10"/>
> + <field name="UM" start="11" end="11"/>
> + <field name="PM" start="12" end="12"/>
> + <field name="FZ" start="15" end="15"/>
> + </flags>
> +
> + <reg name="ymm0" bitsize="256" type="vec256" regnum="32"/>
> + <reg name="ymm1" bitsize="256" type="vec256"/>
> + <reg name="ymm2" bitsize="256" type="vec256"/>
> + <reg name="ymm3" bitsize="256" type="vec256"/>
> + <reg name="ymm4" bitsize="256" type="vec256"/>
> + <reg name="ymm5" bitsize="256" type="vec256"/>
> + <reg name="ymm6" bitsize="256" type="vec256"/>
> + <reg name="ymm7" bitsize="256" type="vec256"/>
> +
> + <reg name="mxcsr" bitsize="32" type="i386_mxcsr" group="vector"/>
> +</feature>
> diff --git a/gdb/features/i386/64bit-avx.xml b/gdb/features/i386/64bit-avx.xml
> new file mode 100644
> index 0000000..da96eed
> --- /dev/null
> +++ b/gdb/features/i386/64bit-avx.xml
> @@ -0,0 +1,61 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2010 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!DOCTYPE feature SYSTEM "gdb-target.dtd">
> +<feature name="org.gnu.gdb.i386.avx">
> + <vector id="v8f" type="ieee_single" count="8"/>
> + <vector id="v4d" type="ieee_double" count="4"/>
> + <vector id="v32i8" type="int8" count="32"/>
> + <vector id="v16i16" type="int16" count="16"/>
> + <vector id="v8i32" type="int32" count="8"/>
> + <vector id="v4i64" type="int64" count="4"/>
> + <vector id="v2i128" type="uint128" count="2"/>
> + <union id="vec256">
> + <field name="v8_float" type="v8f"/>
> + <field name="v4_double" type="v4d"/>
> + <field name="v32_int8" type="v32i8"/>
> + <field name="v16_int16" type="v16i16"/>
> + <field name="v8_int32" type="v8i32"/>
> + <field name="v4_int64" type="v4i64"/>
> + <field name="v2_uint128" type="v2i128"/>
> + </union>
> + <flags id="i386_mxcsr" size="4">
> + <field name="IE" start="0" end="0"/>
> + <field name="DE" start="1" end="1"/>
> + <field name="ZE" start="2" end="2"/>
> + <field name="OE" start="3" end="3"/>
> + <field name="UE" start="4" end="4"/>
> + <field name="PE" start="5" end="5"/>
> + <field name="DAZ" start="6" end="6"/>
> + <field name="IM" start="7" end="7"/>
> + <field name="DM" start="8" end="8"/>
> + <field name="ZM" start="9" end="9"/>
> + <field name="OM" start="10" end="10"/>
> + <field name="UM" start="11" end="11"/>
> + <field name="PM" start="12" end="12"/>
> + <field name="FZ" start="15" end="15"/>
> + </flags>
> +
> + <reg name="ymm0" bitsize="256" type="vec256" regnum="40"/>
> + <reg name="ymm1" bitsize="256" type="vec256"/>
> + <reg name="ymm2" bitsize="256" type="vec256"/>
> + <reg name="ymm3" bitsize="256" type="vec256"/>
> + <reg name="ymm4" bitsize="256" type="vec256"/>
> + <reg name="ymm5" bitsize="256" type="vec256"/>
> + <reg name="ymm6" bitsize="256" type="vec256"/>
> + <reg name="ymm7" bitsize="256" type="vec256"/>
> + <reg name="ymm8" bitsize="256" type="vec256"/>
> + <reg name="ymm9" bitsize="256" type="vec256"/>
> + <reg name="ymm10" bitsize="256" type="vec256"/>
> + <reg name="ymm11" bitsize="256" type="vec256"/>
> + <reg name="ymm12" bitsize="256" type="vec256"/>
> + <reg name="ymm13" bitsize="256" type="vec256"/>
> + <reg name="ymm14" bitsize="256" type="vec256"/>
> + <reg name="ymm15" bitsize="256" type="vec256"/>
> +
> + <reg name="mxcsr" bitsize="32" type="i386_mxcsr" group="vector"/>
> +</feature>
> diff --git a/gdb/features/i386/amd64-avx-linux.c b/gdb/features/i386/amd64-avx-linux.c
> new file mode 100644
> index 0000000..10c6fc7
> --- /dev/null
> +++ b/gdb/features/i386/amd64-avx-linux.c
> @@ -0,0 +1,156 @@
> +/* THIS FILE IS GENERATED. Original: amd64-avx-linux.xml */
> +
> +#include "defs.h"
> +#include "osabi.h"
> +#include "target-descriptions.h"
> +
> +struct target_desc *tdesc_amd64_avx_linux;
> +static void
> +initialize_tdesc_amd64_avx_linux (void)
> +{
> + struct target_desc *result = allocate_target_description ();
> + struct tdesc_feature *feature;
> + struct tdesc_type *field_type, *type;
> +
> + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
> +
> + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
> + field_type = tdesc_create_flags (feature, "i386_eflags", 4);
> + tdesc_add_flag (field_type, 0, "CF");
> + tdesc_add_flag (field_type, 1, "");
> + tdesc_add_flag (field_type, 2, "PF");
> + tdesc_add_flag (field_type, 4, "AF");
> + tdesc_add_flag (field_type, 6, "ZF");
> + tdesc_add_flag (field_type, 7, "SF");
> + tdesc_add_flag (field_type, 8, "TF");
> + tdesc_add_flag (field_type, 9, "IF");
> + tdesc_add_flag (field_type, 10, "DF");
> + tdesc_add_flag (field_type, 11, "OF");
> + tdesc_add_flag (field_type, 14, "NT");
> + tdesc_add_flag (field_type, 16, "RF");
> + tdesc_add_flag (field_type, 17, "VM");
> + tdesc_add_flag (field_type, 18, "AC");
> + tdesc_add_flag (field_type, 19, "VIF");
> + tdesc_add_flag (field_type, 20, "VIP");
> + tdesc_add_flag (field_type, 21, "ID");
> +
> + tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
> + tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
> + tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
> + tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
> + tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
> + field_type = tdesc_named_type (feature, "ieee_single");
> + tdesc_create_vector (feature, "v8f", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "ieee_double");
> + tdesc_create_vector (feature, "v4d", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "int8");
> + tdesc_create_vector (feature, "v32i8", field_type, 32);
> +
> + field_type = tdesc_named_type (feature, "int16");
> + tdesc_create_vector (feature, "v16i16", field_type, 16);
> +
> + field_type = tdesc_named_type (feature, "int32");
> + tdesc_create_vector (feature, "v8i32", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "int64");
> + tdesc_create_vector (feature, "v4i64", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "uint128");
> + tdesc_create_vector (feature, "v2i128", field_type, 2);
> +
> + type = tdesc_create_union (feature, "vec256");
> + field_type = tdesc_named_type (feature, "v8f");
> + tdesc_add_field (type, "v8_float", field_type);
> + field_type = tdesc_named_type (feature, "v4d");
> + tdesc_add_field (type, "v4_double", field_type);
> + field_type = tdesc_named_type (feature, "v32i8");
> + tdesc_add_field (type, "v32_int8", field_type);
> + field_type = tdesc_named_type (feature, "v16i16");
> + tdesc_add_field (type, "v16_int16", field_type);
> + field_type = tdesc_named_type (feature, "v8i32");
> + tdesc_add_field (type, "v8_int32", field_type);
> + field_type = tdesc_named_type (feature, "v4i64");
> + tdesc_add_field (type, "v4_int64", field_type);
> + field_type = tdesc_named_type (feature, "v2i128");
> + tdesc_add_field (type, "v2_uint128", field_type);
> +
> + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
> + tdesc_add_flag (field_type, 0, "IE");
> + tdesc_add_flag (field_type, 1, "DE");
> + tdesc_add_flag (field_type, 2, "ZE");
> + tdesc_add_flag (field_type, 3, "OE");
> + tdesc_add_flag (field_type, 4, "UE");
> + tdesc_add_flag (field_type, 5, "PE");
> + tdesc_add_flag (field_type, 6, "DAZ");
> + tdesc_add_flag (field_type, 7, "IM");
> + tdesc_add_flag (field_type, 8, "DM");
> + tdesc_add_flag (field_type, 9, "ZM");
> + tdesc_add_flag (field_type, 10, "OM");
> + tdesc_add_flag (field_type, 11, "UM");
> + tdesc_add_flag (field_type, 12, "PM");
> + tdesc_add_flag (field_type, 15, "FZ");
> +
> + tdesc_create_reg (feature, "ymm0", 40, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm1", 41, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm2", 42, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm3", 43, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm4", 44, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm5", 45, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm6", 46, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm7", 47, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm8", 48, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm9", 49, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm10", 50, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm11", 51, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm12", 52, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm13", 53, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm14", 54, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm15", 55, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
> + tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
> +
> + tdesc_amd64_avx_linux = result;
> +}
> diff --git a/gdb/features/i386/amd64-avx-linux.xml b/gdb/features/i386/amd64-avx-linux.xml
> new file mode 100644
> index 0000000..0d7f9c5
> --- /dev/null
> +++ b/gdb/features/i386/amd64-avx-linux.xml
> @@ -0,0 +1,17 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2010 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!-- AMD64 with AVX - Includes Linux-only special "register". -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd">
> +<target>
> + <architecture>i386:x86-64</architecture>
> + <osabi>GNU/Linux</osabi>
> + <xi:include href="64bit-core.xml"/>
> + <xi:include href="64bit-avx.xml"/>
> + <xi:include href="64bit-linux.xml"/>
> +</target>
> diff --git a/gdb/features/i386/amd64-avx.c b/gdb/features/i386/amd64-avx.c
> new file mode 100644
> index 0000000..7917f25
> --- /dev/null
> +++ b/gdb/features/i386/amd64-avx.c
> @@ -0,0 +1,151 @@
> +/* THIS FILE IS GENERATED. Original: amd64-avx.xml */
> +
> +#include "defs.h"
> +#include "osabi.h"
> +#include "target-descriptions.h"
> +
> +struct target_desc *tdesc_amd64_avx;
> +static void
> +initialize_tdesc_amd64_avx (void)
> +{
> + struct target_desc *result = allocate_target_description ();
> + struct tdesc_feature *feature;
> + struct tdesc_type *field_type, *type;
> +
> + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
> + field_type = tdesc_create_flags (feature, "i386_eflags", 4);
> + tdesc_add_flag (field_type, 0, "CF");
> + tdesc_add_flag (field_type, 1, "");
> + tdesc_add_flag (field_type, 2, "PF");
> + tdesc_add_flag (field_type, 4, "AF");
> + tdesc_add_flag (field_type, 6, "ZF");
> + tdesc_add_flag (field_type, 7, "SF");
> + tdesc_add_flag (field_type, 8, "TF");
> + tdesc_add_flag (field_type, 9, "IF");
> + tdesc_add_flag (field_type, 10, "DF");
> + tdesc_add_flag (field_type, 11, "OF");
> + tdesc_add_flag (field_type, 14, "NT");
> + tdesc_add_flag (field_type, 16, "RF");
> + tdesc_add_flag (field_type, 17, "VM");
> + tdesc_add_flag (field_type, 18, "AC");
> + tdesc_add_flag (field_type, 19, "VIF");
> + tdesc_add_flag (field_type, 20, "VIP");
> + tdesc_add_flag (field_type, 21, "ID");
> +
> + tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
> + tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
> + tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
> + tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
> + tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
> + tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
> + field_type = tdesc_named_type (feature, "ieee_single");
> + tdesc_create_vector (feature, "v8f", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "ieee_double");
> + tdesc_create_vector (feature, "v4d", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "int8");
> + tdesc_create_vector (feature, "v32i8", field_type, 32);
> +
> + field_type = tdesc_named_type (feature, "int16");
> + tdesc_create_vector (feature, "v16i16", field_type, 16);
> +
> + field_type = tdesc_named_type (feature, "int32");
> + tdesc_create_vector (feature, "v8i32", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "int64");
> + tdesc_create_vector (feature, "v4i64", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "uint128");
> + tdesc_create_vector (feature, "v2i128", field_type, 2);
> +
> + type = tdesc_create_union (feature, "vec256");
> + field_type = tdesc_named_type (feature, "v8f");
> + tdesc_add_field (type, "v8_float", field_type);
> + field_type = tdesc_named_type (feature, "v4d");
> + tdesc_add_field (type, "v4_double", field_type);
> + field_type = tdesc_named_type (feature, "v32i8");
> + tdesc_add_field (type, "v32_int8", field_type);
> + field_type = tdesc_named_type (feature, "v16i16");
> + tdesc_add_field (type, "v16_int16", field_type);
> + field_type = tdesc_named_type (feature, "v8i32");
> + tdesc_add_field (type, "v8_int32", field_type);
> + field_type = tdesc_named_type (feature, "v4i64");
> + tdesc_add_field (type, "v4_int64", field_type);
> + field_type = tdesc_named_type (feature, "v2i128");
> + tdesc_add_field (type, "v2_uint128", field_type);
> +
> + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
> + tdesc_add_flag (field_type, 0, "IE");
> + tdesc_add_flag (field_type, 1, "DE");
> + tdesc_add_flag (field_type, 2, "ZE");
> + tdesc_add_flag (field_type, 3, "OE");
> + tdesc_add_flag (field_type, 4, "UE");
> + tdesc_add_flag (field_type, 5, "PE");
> + tdesc_add_flag (field_type, 6, "DAZ");
> + tdesc_add_flag (field_type, 7, "IM");
> + tdesc_add_flag (field_type, 8, "DM");
> + tdesc_add_flag (field_type, 9, "ZM");
> + tdesc_add_flag (field_type, 10, "OM");
> + tdesc_add_flag (field_type, 11, "UM");
> + tdesc_add_flag (field_type, 12, "PM");
> + tdesc_add_flag (field_type, 15, "FZ");
> +
> + tdesc_create_reg (feature, "ymm0", 40, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm1", 41, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm2", 42, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm3", 43, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm4", 44, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm5", 45, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm6", 46, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm7", 47, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm8", 48, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm9", 49, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm10", 50, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm11", 51, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm12", 52, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm13", 53, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm14", 54, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm15", 55, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
> +
> + tdesc_amd64_avx = result;
> +}
> diff --git a/gdb/features/i386/amd64-avx.xml b/gdb/features/i386/amd64-avx.xml
> new file mode 100644
> index 0000000..29adeb8
> --- /dev/null
> +++ b/gdb/features/i386/amd64-avx.xml
> @@ -0,0 +1,15 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2010 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!-- AMD64 with AVX -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd">
> +<target>
> + <architecture>i386:x86-64</architecture>
> + <xi:include href="64bit-core.xml"/>
> + <xi:include href="64bit-avx.xml"/>
> +</target>
> diff --git a/gdb/features/i386/i386-avx-linux.c b/gdb/features/i386/i386-avx-linux.c
> new file mode 100644
> index 0000000..283d3b6
> --- /dev/null
> +++ b/gdb/features/i386/i386-avx-linux.c
> @@ -0,0 +1,140 @@
> +/* THIS FILE IS GENERATED. Original: i386-avx-linux.xml */
> +
> +#include "defs.h"
> +#include "osabi.h"
> +#include "target-descriptions.h"
> +
> +struct target_desc *tdesc_i386_avx_linux;
> +static void
> +initialize_tdesc_i386_avx_linux (void)
> +{
> + struct target_desc *result = allocate_target_description ();
> + struct tdesc_feature *feature;
> + struct tdesc_type *field_type, *type;
> +
> + set_tdesc_architecture (result, bfd_scan_arch ("i386"));
> +
> + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
> + field_type = tdesc_create_flags (feature, "i386_eflags", 4);
> + tdesc_add_flag (field_type, 0, "CF");
> + tdesc_add_flag (field_type, 1, "");
> + tdesc_add_flag (field_type, 2, "PF");
> + tdesc_add_flag (field_type, 4, "AF");
> + tdesc_add_flag (field_type, 6, "ZF");
> + tdesc_add_flag (field_type, 7, "SF");
> + tdesc_add_flag (field_type, 8, "TF");
> + tdesc_add_flag (field_type, 9, "IF");
> + tdesc_add_flag (field_type, 10, "DF");
> + tdesc_add_flag (field_type, 11, "OF");
> + tdesc_add_flag (field_type, 14, "NT");
> + tdesc_add_flag (field_type, 16, "RF");
> + tdesc_add_flag (field_type, 17, "VM");
> + tdesc_add_flag (field_type, 18, "AC");
> + tdesc_add_flag (field_type, 19, "VIF");
> + tdesc_add_flag (field_type, 20, "VIP");
> + tdesc_add_flag (field_type, 21, "ID");
> +
> + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
> + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
> + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
> + tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
> + field_type = tdesc_named_type (feature, "ieee_single");
> + tdesc_create_vector (feature, "v8f", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "ieee_double");
> + tdesc_create_vector (feature, "v4d", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "int8");
> + tdesc_create_vector (feature, "v32i8", field_type, 32);
> +
> + field_type = tdesc_named_type (feature, "int16");
> + tdesc_create_vector (feature, "v16i16", field_type, 16);
> +
> + field_type = tdesc_named_type (feature, "int32");
> + tdesc_create_vector (feature, "v8i32", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "int64");
> + tdesc_create_vector (feature, "v4i64", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "uint128");
> + tdesc_create_vector (feature, "v2i128", field_type, 2);
> +
> + type = tdesc_create_union (feature, "vec256");
> + field_type = tdesc_named_type (feature, "v8f");
> + tdesc_add_field (type, "v8_float", field_type);
> + field_type = tdesc_named_type (feature, "v4d");
> + tdesc_add_field (type, "v4_double", field_type);
> + field_type = tdesc_named_type (feature, "v32i8");
> + tdesc_add_field (type, "v32_int8", field_type);
> + field_type = tdesc_named_type (feature, "v16i16");
> + tdesc_add_field (type, "v16_int16", field_type);
> + field_type = tdesc_named_type (feature, "v8i32");
> + tdesc_add_field (type, "v8_int32", field_type);
> + field_type = tdesc_named_type (feature, "v4i64");
> + tdesc_add_field (type, "v4_int64", field_type);
> + field_type = tdesc_named_type (feature, "v2i128");
> + tdesc_add_field (type, "v2_uint128", field_type);
> +
> + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
> + tdesc_add_flag (field_type, 0, "IE");
> + tdesc_add_flag (field_type, 1, "DE");
> + tdesc_add_flag (field_type, 2, "ZE");
> + tdesc_add_flag (field_type, 3, "OE");
> + tdesc_add_flag (field_type, 4, "UE");
> + tdesc_add_flag (field_type, 5, "PE");
> + tdesc_add_flag (field_type, 6, "DAZ");
> + tdesc_add_flag (field_type, 7, "IM");
> + tdesc_add_flag (field_type, 8, "DM");
> + tdesc_add_flag (field_type, 9, "ZM");
> + tdesc_add_flag (field_type, 10, "OM");
> + tdesc_add_flag (field_type, 11, "UM");
> + tdesc_add_flag (field_type, 12, "PM");
> + tdesc_add_flag (field_type, 15, "FZ");
> +
> + tdesc_create_reg (feature, "ymm0", 32, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm1", 33, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm2", 34, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm3", 35, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm4", 36, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm5", 37, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm6", 38, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm7", 39, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
> +
> + tdesc_i386_avx_linux = result;
> +}
> diff --git a/gdb/features/i386/i386-avx-linux.xml b/gdb/features/i386/i386-avx-linux.xml
> new file mode 100644
> index 0000000..789dd01
> --- /dev/null
> +++ b/gdb/features/i386/i386-avx-linux.xml
> @@ -0,0 +1,17 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2010 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!-- I386 with AVX- Includes Linux-only special "register". -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd">
> +<target>
> + <architecture>i386</architecture>
> + <osabi>GNU/Linux</osabi>
> + <xi:include href="32bit-core.xml"/>
> + <xi:include href="32bit-linux.xml"/>
> + <xi:include href="32bit-avx.xml"/>
> +</target>
> diff --git a/gdb/features/i386/i386-avx.c b/gdb/features/i386/i386-avx.c
> new file mode 100644
> index 0000000..4c34461
> --- /dev/null
> +++ b/gdb/features/i386/i386-avx.c
> @@ -0,0 +1,135 @@
> +/* THIS FILE IS GENERATED. Original: i386-avx.xml */
> +
> +#include "defs.h"
> +#include "osabi.h"
> +#include "target-descriptions.h"
> +
> +struct target_desc *tdesc_i386_avx;
> +static void
> +initialize_tdesc_i386_avx (void)
> +{
> + struct target_desc *result = allocate_target_description ();
> + struct tdesc_feature *feature;
> + struct tdesc_type *field_type, *type;
> +
> + set_tdesc_architecture (result, bfd_scan_arch ("i386"));
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
> + field_type = tdesc_create_flags (feature, "i386_eflags", 4);
> + tdesc_add_flag (field_type, 0, "CF");
> + tdesc_add_flag (field_type, 1, "");
> + tdesc_add_flag (field_type, 2, "PF");
> + tdesc_add_flag (field_type, 4, "AF");
> + tdesc_add_flag (field_type, 6, "ZF");
> + tdesc_add_flag (field_type, 7, "SF");
> + tdesc_add_flag (field_type, 8, "TF");
> + tdesc_add_flag (field_type, 9, "IF");
> + tdesc_add_flag (field_type, 10, "DF");
> + tdesc_add_flag (field_type, 11, "OF");
> + tdesc_add_flag (field_type, 14, "NT");
> + tdesc_add_flag (field_type, 16, "RF");
> + tdesc_add_flag (field_type, 17, "VM");
> + tdesc_add_flag (field_type, 18, "AC");
> + tdesc_add_flag (field_type, 19, "VIF");
> + tdesc_add_flag (field_type, 20, "VIP");
> + tdesc_add_flag (field_type, 21, "ID");
> +
> + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
> + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
> + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
> + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
> + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
> + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
> + field_type = tdesc_named_type (feature, "ieee_single");
> + tdesc_create_vector (feature, "v8f", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "ieee_double");
> + tdesc_create_vector (feature, "v4d", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "int8");
> + tdesc_create_vector (feature, "v32i8", field_type, 32);
> +
> + field_type = tdesc_named_type (feature, "int16");
> + tdesc_create_vector (feature, "v16i16", field_type, 16);
> +
> + field_type = tdesc_named_type (feature, "int32");
> + tdesc_create_vector (feature, "v8i32", field_type, 8);
> +
> + field_type = tdesc_named_type (feature, "int64");
> + tdesc_create_vector (feature, "v4i64", field_type, 4);
> +
> + field_type = tdesc_named_type (feature, "uint128");
> + tdesc_create_vector (feature, "v2i128", field_type, 2);
> +
> + type = tdesc_create_union (feature, "vec256");
> + field_type = tdesc_named_type (feature, "v8f");
> + tdesc_add_field (type, "v8_float", field_type);
> + field_type = tdesc_named_type (feature, "v4d");
> + tdesc_add_field (type, "v4_double", field_type);
> + field_type = tdesc_named_type (feature, "v32i8");
> + tdesc_add_field (type, "v32_int8", field_type);
> + field_type = tdesc_named_type (feature, "v16i16");
> + tdesc_add_field (type, "v16_int16", field_type);
> + field_type = tdesc_named_type (feature, "v8i32");
> + tdesc_add_field (type, "v8_int32", field_type);
> + field_type = tdesc_named_type (feature, "v4i64");
> + tdesc_add_field (type, "v4_int64", field_type);
> + field_type = tdesc_named_type (feature, "v2i128");
> + tdesc_add_field (type, "v2_uint128", field_type);
> +
> + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
> + tdesc_add_flag (field_type, 0, "IE");
> + tdesc_add_flag (field_type, 1, "DE");
> + tdesc_add_flag (field_type, 2, "ZE");
> + tdesc_add_flag (field_type, 3, "OE");
> + tdesc_add_flag (field_type, 4, "UE");
> + tdesc_add_flag (field_type, 5, "PE");
> + tdesc_add_flag (field_type, 6, "DAZ");
> + tdesc_add_flag (field_type, 7, "IM");
> + tdesc_add_flag (field_type, 8, "DM");
> + tdesc_add_flag (field_type, 9, "ZM");
> + tdesc_add_flag (field_type, 10, "OM");
> + tdesc_add_flag (field_type, 11, "UM");
> + tdesc_add_flag (field_type, 12, "PM");
> + tdesc_add_flag (field_type, 15, "FZ");
> +
> + tdesc_create_reg (feature, "ymm0", 32, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm1", 33, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm2", 34, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm3", 35, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm4", 36, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm5", 37, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm6", 38, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "ymm7", 39, 1, NULL, 256, "vec256");
> + tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
> +
> + tdesc_i386_avx = result;
> +}
> diff --git a/gdb/features/i386/i386-avx.xml b/gdb/features/i386/i386-avx.xml
> new file mode 100644
> index 0000000..7e19fd1
> --- /dev/null
> +++ b/gdb/features/i386/i386-avx.xml
> @@ -0,0 +1,15 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2010 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!-- I386 with AVX -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd">
> +<target>
> + <architecture>i386</architecture>
> + <xi:include href="32bit-core.xml"/>
> + <xi:include href="32bit-avx.xml"/>
> +</target>
> diff --git a/gdb/regformats/i386/amd64-avx-linux.dat b/gdb/regformats/i386/amd64-avx-linux.dat
> new file mode 100644
> index 0000000..066308e
> --- /dev/null
> +++ b/gdb/regformats/i386/amd64-avx-linux.dat
> @@ -0,0 +1,62 @@
> +# DO NOT EDIT: generated from i386/amd64-avx-linux.xml
> +name:amd64_avx_linux
> +xmltarget:amd64-avx-linux.xml
> +expedite:rbp,rsp,rip
> +64:rax
> +64:rbx
> +64:rcx
> +64:rdx
> +64:rsi
> +64:rdi
> +64:rbp
> +64:rsp
> +64:r8
> +64:r9
> +64:r10
> +64:r11
> +64:r12
> +64:r13
> +64:r14
> +64:r15
> +64:rip
> +32:eflags
> +32:cs
> +32:ss
> +32:ds
> +32:es
> +32:fs
> +32:gs
> +80:st0
> +80:st1
> +80:st2
> +80:st3
> +80:st4
> +80:st5
> +80:st6
> +80:st7
> +32:fctrl
> +32:fstat
> +32:ftag
> +32:fiseg
> +32:fioff
> +32:foseg
> +32:fooff
> +32:fop
> +256:ymm0
> +256:ymm1
> +256:ymm2
> +256:ymm3
> +256:ymm4
> +256:ymm5
> +256:ymm6
> +256:ymm7
> +256:ymm8
> +256:ymm9
> +256:ymm10
> +256:ymm11
> +256:ymm12
> +256:ymm13
> +256:ymm14
> +256:ymm15
> +32:mxcsr
> +64:orig_rax
> diff --git a/gdb/regformats/i386/amd64-avx.dat b/gdb/regformats/i386/amd64-avx.dat
> new file mode 100644
> index 0000000..59a64d9
> --- /dev/null
> +++ b/gdb/regformats/i386/amd64-avx.dat
> @@ -0,0 +1,61 @@
> +# DO NOT EDIT: generated from i386/amd64-avx.xml
> +name:amd64_avx
> +xmltarget:amd64-avx.xml
> +expedite:rbp,rsp,rip
> +64:rax
> +64:rbx
> +64:rcx
> +64:rdx
> +64:rsi
> +64:rdi
> +64:rbp
> +64:rsp
> +64:r8
> +64:r9
> +64:r10
> +64:r11
> +64:r12
> +64:r13
> +64:r14
> +64:r15
> +64:rip
> +32:eflags
> +32:cs
> +32:ss
> +32:ds
> +32:es
> +32:fs
> +32:gs
> +80:st0
> +80:st1
> +80:st2
> +80:st3
> +80:st4
> +80:st5
> +80:st6
> +80:st7
> +32:fctrl
> +32:fstat
> +32:ftag
> +32:fiseg
> +32:fioff
> +32:foseg
> +32:fooff
> +32:fop
> +256:ymm0
> +256:ymm1
> +256:ymm2
> +256:ymm3
> +256:ymm4
> +256:ymm5
> +256:ymm6
> +256:ymm7
> +256:ymm8
> +256:ymm9
> +256:ymm10
> +256:ymm11
> +256:ymm12
> +256:ymm13
> +256:ymm14
> +256:ymm15
> +32:mxcsr
> diff --git a/gdb/regformats/i386/i386-avx-linux.dat b/gdb/regformats/i386/i386-avx-linux.dat
> new file mode 100644
> index 0000000..6a08926
> --- /dev/null
> +++ b/gdb/regformats/i386/i386-avx-linux.dat
> @@ -0,0 +1,46 @@
> +# DO NOT EDIT: generated from i386/i386-avx-linux.xml
> +name:i386_avx_linux
> +xmltarget:i386-avx-linux.xml
> +expedite:ebp,esp,eip
> +32:eax
> +32:ecx
> +32:edx
> +32:ebx
> +32:esp
> +32:ebp
> +32:esi
> +32:edi
> +32:eip
> +32:eflags
> +32:cs
> +32:ss
> +32:ds
> +32:es
> +32:fs
> +32:gs
> +80:st0
> +80:st1
> +80:st2
> +80:st3
> +80:st4
> +80:st5
> +80:st6
> +80:st7
> +32:fctrl
> +32:fstat
> +32:ftag
> +32:fiseg
> +32:fioff
> +32:foseg
> +32:fooff
> +32:fop
> +256:ymm0
> +256:ymm1
> +256:ymm2
> +256:ymm3
> +256:ymm4
> +256:ymm5
> +256:ymm6
> +256:ymm7
> +32:mxcsr
> +32:orig_eax
> diff --git a/gdb/regformats/i386/i386-avx.dat b/gdb/regformats/i386/i386-avx.dat
> new file mode 100644
> index 0000000..7eac6cc
> --- /dev/null
> +++ b/gdb/regformats/i386/i386-avx.dat
> @@ -0,0 +1,45 @@
> +# DO NOT EDIT: generated from i386/i386-avx.xml
> +name:i386_avx
> +xmltarget:i386-avx.xml
> +expedite:ebp,esp,eip
> +32:eax
> +32:ecx
> +32:edx
> +32:ebx
> +32:esp
> +32:ebp
> +32:esi
> +32:edi
> +32:eip
> +32:eflags
> +32:cs
> +32:ss
> +32:ds
> +32:es
> +32:fs
> +32:gs
> +80:st0
> +80:st1
> +80:st2
> +80:st3
> +80:st4
> +80:st5
> +80:st6
> +80:st7
> +32:fctrl
> +32:fstat
> +32:ftag
> +32:fiseg
> +32:fioff
> +32:foseg
> +32:fooff
> +32:fop
> +256:ymm0
> +256:ymm1
> +256:ymm2
> +256:ymm3
> +256:ymm4
> +256:ymm5
> +256:ymm6
> +256:ymm7
> +32:mxcsr
>