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] |
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? > > Thanks. > > > H.J. > ---- > 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] |