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]

PATCH: Add x86 AVX XML files


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.

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]