This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]