mbox series

[00/22] target/i386: first part of TCG changes for 9.0

Message ID 20231222181603.174137-1-pbonzini@redhat.com
Headers show
Series target/i386: first part of TCG changes for 9.0 | expand

Message

Paolo Bonzini Dec. 22, 2023, 6:15 p.m. UTC
The main things here are a bunch of cleanups to the common logic of
the new decoder, some changes to translate.c that prepare for redoing
one-byte opcodes in the new framework, and the implementation of the
CMPccXADD instruction that is new in Sierra Forest processors.

These are all relatively innocuous changes, and easy to bisect in
case things go wrong.

Paolo


Paolo Bonzini (22):
  target/i386: optimize computation of JL and JLE from flags
  target/i386: speedup JO/SETO after MUL or IMUL
  target/i386: remove unnecessary arguments from raise_interrupt
  target/i386: remove unnecessary truncations
  target/i386: clean up cpu_cc_compute_all
  target/i386: document more deviations from the manual
  target/i386: reimplement check for validity of LOCK prefix
  target/i386: avoid trunc and ext for MULX and RORX
  target/i386: rename zext0/zext2 and make them closer to the manual
  target/i386: add X86_SPECIALs for MOVSX and MOVZX
  target/i386: do not decode string source/destination into decode->mem
  target/i386: do not clobber A0 in POP translation
  target/i386: do not clobber T0 on string operations
  target/i386: split eflags computation out of gen_compute_eflags
  target/i386: do not use s->tmp4 for push
  target/i386: do not use s->tmp0 for jumps on ECX ==/!= 0
  target/i386: extract gen_far_call/jmp, reordering temporaries
  target/i386: prepare for implementation of STOS/SCAS in new decoder
  target/i386: move operand load and writeback out of gen_cmovcc1
  target/i386: adjust decoding of J operand
  target/i386: introduce flags writeback mechanism
  target/i386: implement CMPccXADD

 target/i386/cpu.c                |   2 +-
 target/i386/cpu.h                |   5 +-
 target/i386/tcg/cc_helper.c      |   6 +-
 target/i386/tcg/decode-new.c.inc | 152 +++++++++++++------
 target/i386/tcg/decode-new.h     |  29 +++-
 target/i386/tcg/emit.c.inc       | 224 +++++++++++++++++++++------
 target/i386/tcg/excp_helper.c    |   7 +-
 target/i386/tcg/fpu_helper.c     |  10 +-
 target/i386/tcg/helper-tcg.h     |   3 +-
 target/i386/tcg/int_helper.c     |   8 +-
 target/i386/tcg/misc_helper.c    |   4 +-
 target/i386/tcg/seg_helper.c     |   8 +-
 target/i386/tcg/translate.c      | 250 ++++++++++++++++++-------------
 tests/tcg/i386/Makefile.target   |   2 +-
 tests/tcg/i386/test-flags.c      |  37 +++++
 15 files changed, 509 insertions(+), 238 deletions(-)
 create mode 100644 tests/tcg/i386/test-flags.c