Next: LoongArch Features, Previous: ARM Features, Up: Standard Target Features

#### G.5.4 i386 Features

The ``org.gnu.gdb.i386.core`' feature is required for i386/amd64 targets. It should describe the following registers:

- ``eax`' through ``edi`' plus ``eip`' for i386
- ``rax`' through ``r15`' plus ``rip`' for amd64
- ``eflags`', ``cs`', ``ss`', ``ds`', ``es`', ``fs`', ``gs`'
- ``st0`' through ``st7`'
- ``fctrl`', ``fstat`', ``ftag`', ``fiseg`', ``fioff`', ``foseg`', ``fooff`' and ``fop`'

The register sets may be different, depending on the target.

The ``org.gnu.gdb.i386.sse`' feature is optional. It should describe registers:

- ``xmm0`' through ``xmm7`' for i386
- ``xmm0`' through ``xmm15`' for amd64
- ``mxcsr`'

The ``org.gnu.gdb.i386.avx`' feature is optional and requires the ``org.gnu.gdb.i386.sse`' feature. It should describe the upper 128 bits of ymm registers:

- ``ymm0h`' through ``ymm7h`' for i386
- ``ymm0h`' through ``ymm15h`' for amd64

The ``org.gnu.gdb.i386.mpx`' is an optional feature representing Intel Memory Protection Extension (MPX). It should describe the following registers:

- ``bnd0raw`' through ``bnd3raw`' for i386 and amd64.
- ``bndcfgu`' and ``bndstatus`' for i386 and amd64.

The ``org.gnu.gdb.i386.linux`' feature is optional. It should describe a single register, ``orig_eax`'.

The ``org.gnu.gdb.i386.segments`' feature is optional. It should describe two system registers: ``fs_base`' and ``gs_base`'.

The ``org.gnu.gdb.i386.avx512`' feature is optional and requires the ``org.gnu.gdb.i386.avx`' feature. It should describe additional xmm registers:

- ``xmm16h`' through ``xmm31h`', only valid for amd64.

It should describe the upper 128 bits of additional ymm registers:

- ``ymm16h`' through ``ymm31h`', only valid for amd64.

It should describe the upper 256 bits of zmm registers:

- ``zmm0h`' through ``zmm7h`' for i386.
- ``zmm0h`' through ``zmm15h`' for amd64.

It should describe the additional zmm registers:

- ``zmm16h`' through ``zmm31h`', only valid for amd64.

The ``org.gnu.gdb.i386.pkeys`' feature is optional. It should describe a single register, ``pkru`'. It is a 32-bit register valid for i386 and amd64.