Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* PATCH: Add x86 AVX XML files
@ 2010-03-02 15:21 H.J. Lu
  2010-03-02 18:00 ` Eli Zaretskii
  2010-03-03  0:01 ` H.J. Lu
  0 siblings, 2 replies; 10+ messages in thread
From: H.J. Lu @ 2010-03-02 15:21 UTC (permalink / raw)
  To: GDB

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-02 15:21 PATCH: Add x86 AVX XML files H.J. Lu
@ 2010-03-02 18:00 ` Eli Zaretskii
  2010-03-02 19:16   ` H.J. Lu
  2010-03-03  0:01 ` H.J. Lu
  1 sibling, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2010-03-02 18:00 UTC (permalink / raw)
  To: H.J. Lu; +Cc: gdb-patches

> Date: Tue, 2 Mar 2010 07:21:28 -0800
> From: "H.J. Lu" <hongjiu.lu@intel.com>
> 
> I am submitting AVX patches in pieces since AVX changes are quite
> large.  This patch adds x86 AVX target descriptions.  OK to install?

Could you please add the necessary file-name mappings to
config/djgpp/fnchange.lst?  Some of the new files will have their
names clash under the 8+3 DOS butchery.  (You can use `doschk' to see
which files fall victim to this.)

Thanks.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-02 18:00 ` Eli Zaretskii
@ 2010-03-02 19:16   ` H.J. Lu
  2010-03-02 20:24     ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: H.J. Lu @ 2010-03-02 19:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gdb-patches

On Tue, Mar 2, 2010 at 10:00 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>> Date: Tue, 2 Mar 2010 07:21:28 -0800
>> From: "H.J. Lu" <hongjiu.lu@intel.com>
>>
>> I am submitting AVX patches in pieces since AVX changes are quite
>> large.  This patch adds x86 AVX target descriptions.  OK to install?
>
> Could you please add the necessary file-name mappings to
> config/djgpp/fnchange.lst?  Some of the new files will have their
> names clash under the 8+3 DOS butchery.  (You can use `doschk' to see
> which files fall victim to this.)
>

Where is  `doschk' ? It is not in src CVS.


-- 
H.J.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-02 19:16   ` H.J. Lu
@ 2010-03-02 20:24     ` Eli Zaretskii
  2010-03-02 21:05       ` H.J. Lu
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2010-03-02 20:24 UTC (permalink / raw)
  To: H.J. Lu; +Cc: gdb-patches

> Date: Tue, 2 Mar 2010 11:16:18 -0800
> From: "H.J. Lu" <hjl.tools@gmail.com>
> Cc: gdb-patches@sourceware.org
> 
> Where is  `doschk' ? It is not in src CVS.

ftp://ftp.gnu.org/non-gnu/doschk/


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-02 20:24     ` Eli Zaretskii
@ 2010-03-02 21:05       ` H.J. Lu
  2010-03-02 21:40         ` Eli Zaretskii
  2010-03-02 23:10         ` Mark Kettenis
  0 siblings, 2 replies; 10+ messages in thread
From: H.J. Lu @ 2010-03-02 21:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 336 bytes --]

On Tue, Mar 2, 2010 at 12:24 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>> Date: Tue, 2 Mar 2010 11:16:18 -0800
>> From: "H.J. Lu" <hjl.tools@gmail.com>
>> Cc: gdb-patches@sourceware.org
>>
>> Where is  `doschk' ? It is not in src CVS.
>
> ftp://ftp.gnu.org/non-gnu/doschk/
>

Does this patch look OK?

Thanks.


-- 
H.J.

[-- Attachment #2: gdb-avx-dos-1.patch --]
[-- Type: text/plain, Size: 1173 bytes --]

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-02 21:05       ` H.J. Lu
@ 2010-03-02 21:40         ` Eli Zaretskii
  2010-03-02 23:10         ` Mark Kettenis
  1 sibling, 0 replies; 10+ messages in thread
From: Eli Zaretskii @ 2010-03-02 21:40 UTC (permalink / raw)
  To: H.J. Lu; +Cc: gdb-patches

> Date: Tue, 2 Mar 2010 13:04:54 -0800
> From: "H.J. Lu" <hjl.tools@gmail.com>
> Cc: gdb-patches@sourceware.org
> 
> Does this patch look OK?

Yes, thank you.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-02 21:05       ` H.J. Lu
  2010-03-02 21:40         ` Eli Zaretskii
@ 2010-03-02 23:10         ` Mark Kettenis
  1 sibling, 0 replies; 10+ messages in thread
From: Mark Kettenis @ 2010-03-02 23:10 UTC (permalink / raw)
  To: hjl.tools; +Cc: eliz, gdb-patches

> Date: Tue, 2 Mar 2010 13:04:54 -0800
> From: "H.J. Lu" <hjl.tools@gmail.com>
> 
> On Tue, Mar 2, 2010 at 12:24 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> >> Date: Tue, 2 Mar 2010 11:16:18 -0800
> >> From: "H.J. Lu" <hjl.tools@gmail.com>
> >> Cc: gdb-patches@sourceware.org
> >>
> >> Where is =A0`doschk' ? It is not in src CVS.
> >
> > ftp://ftp.gnu.org/non-gnu/doschk/
> >
> 
> Does this patch look OK?

No:

> ZGlmZiAtLWdpdCBhL2dkYi9jb25maWcvZGpncHAvZm5jaGFuZ2UubHN0IGIv
> Z2RiL2NvbmZpZy9kamdwcC9mbmNoYW5nZS5sc3QKaW5kZXggMzk4MmYxZC4u
> N2JlYzU3ZCAxMDA2NDQKLS0tIGEvZ2RiL2NvbmZpZy9kamdwcC9mbmNoYW5n
> ZS5sc3QKKysrIGIvZ2RiL2NvbmZpZy9kamdwcC9mbmNoYW5nZS5sc3QKQEAg
> LTIyOCw2ICsyMjgsMTQgQEAKIEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3Bv
> d2VycGMtdnN4NjRsLnhtbCBAVkAvZ2RiL2ZlYXR1cmVzL3JzNjAwMC9wcGMt
> djY0bC54bWwKIEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtY2Vs
> bDMybC54bWwgQFZAL2dkYi9mZWF0dXJlcy9yczYwMDAvcHBjLWMzMmwueG1s
> CiBAVkAvZ2RiL2ZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWNlbGw2NGwueG1s
> IEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3BwYy1jNjRsLnhtbAorQFZAL2dk
> Yi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1saW51eC5jIEBWQC9nZGIvZmVh
> dHVyZXMvaTM4Ni9hNjQtYWwuYworQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2Ft
> ZDY0LWF2eC5jIEBWQC9nZGIvZmVhdHVyZXMvaTM4Ni9hNjQtYS5jCitAVkAv
> Z2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LWxpbnV4LnhtbCBAVkAvZ2Ri
> L2ZlYXR1cmVzL2kzODYvYTY0LWFsLnhtbAorQFZAL2dkYi9mZWF0dXJlcy9p
> Mzg2L2FtZDY0LWF2eC54bWwgQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2E2NC1h
> LnhtbAorQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LWxpbnV4LmMg
> QFZAL2ZlYXR1cmVzL2kzODYvaTMyLWFsLmMKK0BWQC9nZGIvZmVhdHVyZXMv
> aTM4Ni9pMzg2LWF2eC5jIEBWQC9nZGIvZmVhdHVyZXMvaTM4Ni9pMzItYS5j
> CitAVkAvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbGludXgueG1sIEBW
> QC9nZGIvZmVhdHVyZXMvaTM4Ni9pMzItYWwueG1sCitAVkAvZ2RiL2ZlYXR1
> cmVzL2kzODYvaTM4Ni1hdngueG1sIEBWQC9nZGIvZmVhdHVyZXMvaTM4Ni9p
> MzItYS54bWwKIEBWQC9nZGIvZi1leHAudGFiLmMgQFZAL2dkYi9mLWV4cF90
> YWIuYwogQFZAL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpcy1sb3cuYyBAVkAv
> Z2RiL2dkYnNlcnZlci9seC1jcmlzLmMKIEBWQC9nZGIvZ2Ric2VydmVyL2xp
> bnV4LWNyaXN2MzItbG93LmMgQFZAL2dkYi9nZGJzZXJ2ZXIvbHgtY3JpczMy
> LmMK


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-02 15:21 PATCH: Add x86 AVX XML files H.J. Lu
  2010-03-02 18:00 ` Eli Zaretskii
@ 2010-03-03  0:01 ` H.J. Lu
  2010-03-03 23:20   ` Mark Kettenis
  1 sibling, 1 reply; 10+ messages in thread
From: H.J. Lu @ 2010-03-03  0:01 UTC (permalink / raw)
  To: GDB

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-03  0:01 ` H.J. Lu
@ 2010-03-03 23:20   ` Mark Kettenis
  2010-03-03 23:34     ` H.J. Lu
  0 siblings, 1 reply; 10+ messages in thread
From: Mark Kettenis @ 2010-03-03 23:20 UTC (permalink / raw)
  To: hjl.tools; +Cc: gdb-patches

> Date: Tue, 2 Mar 2010 16:00:29 -0800
> From: "H.J. Lu" <hongjiu.lu@intel.com>
> 
> On Tue, Mar 02, 2010 at 07:21:28AM -0800, H.J. Lu wrote:
> > Hi,
> > 
> > I am submitting AVX patches in pieces since AVX changes are quite
> > large.  This patch adds x86 AVX target descriptions.  OK to install?

This looks reasonable.  So AVX will fully replace SSE in the target
description and I presume an AVX target will implement the SSE
registers as pseudo registers?

In any case, I can't properly review this diff without seeing the
impact on the actual implementation of the AVX code.


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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: PATCH: Add x86 AVX XML files
  2010-03-03 23:20   ` Mark Kettenis
@ 2010-03-03 23:34     ` H.J. Lu
  0 siblings, 0 replies; 10+ messages in thread
From: H.J. Lu @ 2010-03-03 23:34 UTC (permalink / raw)
  To: Mark Kettenis; +Cc: gdb-patches

On Wed, Mar 3, 2010 at 3:20 PM, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
>> Date: Tue, 2 Mar 2010 16:00:29 -0800
>> From: "H.J. Lu" <hongjiu.lu@intel.com>
>>
>> On Tue, Mar 02, 2010 at 07:21:28AM -0800, H.J. Lu wrote:
>> > Hi,
>> >
>> > I am submitting AVX patches in pieces since AVX changes are quite
>> > large.  This patch adds x86 AVX target descriptions.  OK to install?
>
> This looks reasonable.  So AVX will fully replace SSE in the target
> description and I presume an AVX target will implement the SSE
> registers as pseudo registers?

That is correct.

> In any case, I can't properly review this diff without seeing the
> impact on the actual implementation of the AVX code.
>
>

I will submit the rest of AVX patches in several pieces
since total changes > 4000 lines.


-- 
H.J.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-03-03 23:34 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-02 15:21 PATCH: Add x86 AVX XML files H.J. Lu
2010-03-02 18:00 ` Eli Zaretskii
2010-03-02 19:16   ` H.J. Lu
2010-03-02 20:24     ` Eli Zaretskii
2010-03-02 21:05       ` H.J. Lu
2010-03-02 21:40         ` Eli Zaretskii
2010-03-02 23:10         ` Mark Kettenis
2010-03-03  0:01 ` H.J. Lu
2010-03-03 23:20   ` Mark Kettenis
2010-03-03 23:34     ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox