+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+       * features/Makefile: Add feature marker to targets with new style
+       target descriptions.
+       * regformats/aarch64.dat: Regenerate.
+       * regformats/i386/amd64-avx-avx512-linux.dat: Likewise.
+       * regformats/i386/amd64-avx-linux.dat: Likewise.
+       * regformats/i386/amd64-avx-mpx-avx512-pku-linux.dat: Likewise.
+       * regformats/i386/amd64-avx-mpx-linux.dat: Likewise.
+       * regformats/i386/amd64-linux.dat: Likewise.
+       * regformats/i386/amd64-mpx-linux.dat: Likewise.
+       * regformats/i386/amd64.dat: Likewise.
+       * regformats/i386/i386-avx-avx512-linux.dat: Likewise.
+       * regformats/i386/i386-avx-linux.dat: Likewise.
+       * regformats/i386/i386-avx-mpx-avx512-pku-linux.dat: Likewise.
+       * regformats/i386/i386-avx-mpx-linux.dat: Likewise.
+       * regformats/i386/i386-linux.dat: Likewise.
+       * regformats/i386/i386-mmx-linux.dat: Likewise.
+       * regformats/i386/i386-mpx-linux.dat: Likewise.
+       * regformats/i386/i386.dat: Likewise.
+       * regformats/i386/x32-avx-avx512-linux.dat: Likewise.
+       * regformats/i386/x32-avx-linux.dat: Likewise.
+       * regformats/i386/x32-linux.dat: Likewise.
+       * regformats/tic6x-c62x-linux.dat: Likewise.
+       * regformats/tic6x-c64x-linux.dat: Likewise.
+       * regformats/tic6x-c64xp-linux.dat: Likewise.
+       * regformats/regdat.sh: Parse feature marker.
+
 2018-04-18  Alan Hayward  <alan.hayward@arm.com>
 
        * common/tdesc.h (tdesc_architecture_name): Add new declaration.
 
 TDESC_CFILES = $(patsubst %.xml,%.c,$(XMLTOC))
 GDB = false
 
+#Targets which use feature based target descriptions.
+aarch64-feature = 1
+i386-feature = 1
+tic6x-feature = 1
+
 all: $(OUTPUTS)
 
 $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl
        echo "# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:" > $(outdir)/$*.tmp
        echo "# Generated from: $<" >> $(outdir)/$*.tmp
        echo "name:`echo $(notdir $*) | sed 's/-/_/g'`" >> $(outdir)/$*.tmp
+       $(if $($(firstword $(subst /, ,$(subst -, ,$*)))-feature), echo "feature:1") >> $(outdir)/$*.tmp
        echo "xmltarget:$(<F)" >> $(outdir)/$*.tmp
        echo "expedite:$(if $($*-expedite),$($*-expedite),$($(firstword $(subst -, ,$(notdir $*)))-expedite))" \
          >> $(outdir)/$*.tmp
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: aarch64.xml
 name:aarch64
+feature:1
 xmltarget:aarch64.xml
 expedite:x29,sp,pc
 64:x0
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/amd64-avx-avx512-linux.xml
 name:amd64_avx_avx512_linux
+feature:1
 xmltarget:amd64-avx-avx512-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/amd64-avx-linux.xml
 name:amd64_avx_linux
+feature:1
 xmltarget:amd64-avx-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/amd64-avx-mpx-avx512-pku-linux.xml
 name:amd64_avx_mpx_avx512_pku_linux
+feature:1
 xmltarget:amd64-avx-mpx-avx512-pku-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/amd64-avx-mpx-linux.xml
 name:amd64_avx_mpx_linux
+feature:1
 xmltarget:amd64-avx-mpx-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/amd64-linux.xml
 name:amd64_linux
+feature:1
 xmltarget:amd64-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/amd64-mpx-linux.xml
 name:amd64_mpx_linux
+feature:1
 xmltarget:amd64-mpx-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/amd64.xml
 name:amd64
+feature:1
 xmltarget:amd64.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386-avx-avx512-linux.xml
 name:i386_avx_avx512_linux
+feature:1
 xmltarget:i386-avx-avx512-linux.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386-avx-linux.xml
 name:i386_avx_linux
+feature:1
 xmltarget:i386-avx-linux.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386-avx-mpx-avx512-pku-linux.xml
 name:i386_avx_mpx_avx512_pku_linux
+feature:1
 xmltarget:i386-avx-mpx-avx512-pku-linux.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386-avx-mpx-linux.xml
 name:i386_avx_mpx_linux
+feature:1
 xmltarget:i386-avx-mpx-linux.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386-linux.xml
 name:i386_linux
+feature:1
 xmltarget:i386-linux.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386-mmx-linux.xml
 name:i386_mmx_linux
+feature:1
 xmltarget:i386-mmx-linux.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386-mpx-linux.xml
 name:i386_mpx_linux
+feature:1
 xmltarget:i386-mpx-linux.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/i386.xml
 name:i386
+feature:1
 xmltarget:i386.xml
 expedite:ebp,esp,eip
 32:eax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/x32-avx-avx512-linux.xml
 name:x32_avx_avx512_linux
+feature:1
 xmltarget:x32-avx-avx512-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/x32-avx-linux.xml
 name:x32_avx_linux
+feature:1
 xmltarget:x32-avx-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: i386/x32-linux.xml
 name:x32_linux
+feature:1
 xmltarget:x32-linux.xml
 expedite:rbp,rsp,rip
 64:rax
 
 xmlarch=x
 xmlosabi=x
 expedite=x
+feature=x
 exec < $1
 while do_read
 do
   elif test "${type}" = "expedite"; then
     expedite="${entry}"
     continue
+  elif test "${type}" = "feature"; then
+    feature="${entry}"
+    continue
   elif test "${name}" = x; then
     echo "$0: $1 does not specify \`\`name''." 1>&2
     exit 1
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: tic6x-c62x-linux.xml
 name:tic6x_c62x_linux
+feature:1
 xmltarget:tic6x-c62x-linux.xml
 expedite:A15,PC
 32:A0
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: tic6x-c64x-linux.xml
 name:tic6x_c64x_linux
+feature:1
 xmltarget:tic6x-c64x-linux.xml
 expedite:A15,PC
 32:A0
 
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
 # Generated from: tic6x-c64xp-linux.xml
 name:tic6x_c64xp_linux
+feature:1
 xmltarget:tic6x-c64xp-linux.xml
 expedite:A15,PC
 32:A0