From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30581 invoked by alias); 3 Mar 2010 23:20:41 -0000 Received: (qmail 30552 invoked by uid 22791); 3 Mar 2010 23:20:34 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO glazunov.sibelius.xs4all.nl) (83.163.83.176) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 03 Mar 2010 23:20:25 +0000 Received: from glazunov.sibelius.xs4all.nl (kettenis@localhost [127.0.0.1]) by glazunov.sibelius.xs4all.nl (8.14.3/8.14.3) with ESMTP id o23NKHGa025064; Thu, 4 Mar 2010 00:20:17 +0100 (CET) Received: (from kettenis@localhost) by glazunov.sibelius.xs4all.nl (8.14.3/8.14.3/Submit) id o23NKFXd000257; Thu, 4 Mar 2010 00:20:15 +0100 (CET) Date: Wed, 03 Mar 2010 23:20:00 -0000 Message-Id: <201003032320.o23NKFXd000257@glazunov.sibelius.xs4all.nl> From: Mark Kettenis To: hjl.tools@gmail.com CC: gdb-patches@sourceware.org In-reply-to: <20100303000029.GA19705@intel.com> (hongjiu.lu@intel.com) Subject: Re: PATCH: Add x86 AVX XML files References: <20100302152128.GA28089@intel.com> <20100303000029.GA19705@intel.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-03/txt/msg00136.txt.bz2 > Date: Tue, 2 Mar 2010 16:00:29 -0800 > From: "H.J. Lu" > > 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 > > > > * 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 > > * 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 @@ > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > 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 @@ > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > 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 @@ > + > + > + > + > + > + > + > + i386:x86-64 > + GNU/Linux > + > + > + > + > 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 @@ > + > + > + > + > + > + > + > + i386:x86-64 > + > + > + > 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 @@ > + > + > + > + > + > + > + > + i386 > + GNU/Linux > + > + > + > + > 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 @@ > + > + > + > + > + > + > + > + i386 > + > + > + > 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 >