Right now, AVX and AVX512 registers are stored part in the SSE registers,
part in separate fields that follow the XSAVE format.

This series instead uses a single 512-bit field for each of the
32 registers.  It makes the marshalling a bit more complicated but
keeps the madness out of CPUX86State's public interface.  Also, a
hypothetical XSAVE implementation of TCG would probably need something
like this too, and it could share most of the implementation with KVM's
kvm_get_xsave/kvm_put_xsave wrappers.

As a bonus, patch 1 fixes a real bug found while inspecting uses of
xmm_regs.

Paolo

Paolo Bonzini (4):
  target-i386: fix movntsd on big-endian hosts
  target-i386: do not memcpy in and out of xmm_regs
  target-i386: use vmstate_offset_sub_array for AVX registers
  target-i386: make xmm_regs 512-bit wide

 include/migration/vmstate.h | 10 +++++++
 target-i386/cpu.h           | 68 +++++------------------------------------
 target-i386/kvm.c           | 62 +++++++++++++++++++++++++++-----------
 target-i386/machine.c       | 73 +++++++++++++++++++++++----------------------
 target-i386/translate.c     | 11 +++----
 5 files changed, 106 insertions(+), 118 deletions(-)

-- 
1.8.3.1


Reply via email to