[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 00/57] target-i386 eflags cleanup and bmi/adx ex
From: |
Laurent Desnogues |
Subject: |
Re: [Qemu-devel] [PATCH 00/57] target-i386 eflags cleanup and bmi/adx extensions |
Date: |
Thu, 24 Jan 2013 17:46:05 +0100 |
On Thu, Jan 24, 2013 at 5:02 AM, Richard Henderson <address@hidden> wrote:
> This is a re-working of Paolo's eflags cleanup from October, which
> I consider a pre-requisite to implementing the ADX extension. I've
> rearranged most of the patches in trivial ways, and some quite
> significantly.
>
> I've tested the result by running the FC17 installer in both i386
> and x86_64 mode, and the bmi/adx extensions with small user-land
> test cases.
>
> The patch series is at
>
> git://github.com/rth7680/qemu.git eflags3
I gave a quick try a your branch. My host is an x86_64 CPU and I
ran an i386 nbench in user mode. It works but some parts of the
benchmark are noticeably slower (>10%). Is that expected?
Thanks,
Laurent
> Please review.
>
>
> r~
>
>
> Paolo Bonzini (19):
> test-i386: QEMU_PACKED is not defined here
> test-i386: make it compile with a recent gcc
> target-i386: use OT_* consistently
> target-i386: introduce gen_ext_tl
> target-i386: factor setting of s->cc_op handling for string functions
> target-i386: drop cc_op argument of gen_jcc1
> target-i386: move carry computation for inc/dec closer to
> gen_op_set_cc_op
> target-i386: move eflags computation closer to gen_op_set_cc_op
> target-i386: compute eflags outside rcl/rcr helper
> target-i386: clean up sahf
> target-i386: use gen_jcc1 to compile loopz
> target-i386: factor gen_op_set_cc_op/tcg_gen_discard_tl around
> computing flags
> target-i386: add helper functions to get other flags
> target-i386: change gen_setcc_slow_T0 to gen_setcc_slow
> target-i386: optimize setcc instructions
> target-i386: use CCPrepare to generate conditional jumps
> target-i386: cleanup temporary macros for CCPrepare
> target-i386: introduce gen_cmovcc1
> target-i386: kill cpu_T3
>
> Richard Henderson (38):
> target-i386: Name the cc_op enumeration
> target-i386: Introduce set_cc_op
> target-i386: Don't clobber s->cc_op in gen_update_cc_op
> target-i386: Use gen_update_cc_op everywhere
> target-i386: do not compute eflags multiple times consecutively
> target-i386: no need to flush out cc_op before gen_eob
> target-i386: Move CC discards to set_cc_op
> target-i386: do not call helper to compute ZF/SF
> target-i386: use inverted setcond when computing NS or NZ
> target-i386: convert gen_compute_eflags_c to TCG
> target-i386: optimize setbe
> target-i386: optimize setle
> target-i386: introduce CCPrepare
> target-i386: introduce gen_prepare_cc
> target-i386: inline gen_prepare_cc_slow
> target-i386: expand cmov via movcond
> target-i386: use gen_op for cmps/scas
> target-i386: introduce gen_jcc1_noeob
> target-i386: Update cc_op before TCG branches
> target-i386: optimize flags checking after sub using CC_SRC2
> target-i386: Use CC_SRC2 for ADC and SBB
> target-i386: Don't reference ENV through most of cc helpers
> target-i386: Make helper_cc_compute_all const
> target-i386: Tidy prefix parsing
> target-i386: Decode the VEX prefixes
> target-i386: Implement MOVBE
> target-i386: Implement ANDN
> target-i386: Implement BEXTR
> target-i386: Implement BLSR, BLSMSK, BLSI
> target-i386: Implement BZHI
> target-i386: Implement MULX
> target-i386: Implement PDEP, PEXT
> target-i386: Implement SHLX, SARX, SHRX
> target-i386: Implement RORX
> target-i386: Implement ADX extension
> target-i386: Use clz/ctz for bsf/bsr helpers
> target-i386: Simplify bsf/bsr flags computation
> target-i386: Implement tzcnt and fix lzcnt
>
> target-i386/cc_helper.c | 243 ++--
> target-i386/cc_helper_template.h | 268 ++---
> target-i386/cpu.c | 18 +-
> target-i386/cpu.h | 24 +-
> target-i386/helper.c | 11 +-
> target-i386/helper.h | 12 +-
> target-i386/int_helper.c | 69 +-
> target-i386/shift_helper_template.h | 12 +-
> target-i386/translate.c | 2195
> +++++++++++++++++++++--------------
> tests/tcg/test-i386.c | 10 +-
> 10 files changed, 1581 insertions(+), 1281 deletions(-)
>
> --
> 1.7.11.7
>
>
- [Qemu-devel] [PATCH 22/57] target-i386: use inverted setcond when computing NS or NZ, (continued)
- [Qemu-devel] [PATCH 22/57] target-i386: use inverted setcond when computing NS or NZ, Richard Henderson, 2013/01/24
- [Qemu-devel] [PATCH 24/57] target-i386: change gen_setcc_slow_T0 to gen_setcc_slow, Richard Henderson, 2013/01/24
- [Qemu-devel] [PATCH 29/57] target-i386: introduce gen_prepare_cc, Richard Henderson, 2013/01/24
- [Qemu-devel] [PATCH 27/57] target-i386: optimize setcc instructions, Richard Henderson, 2013/01/24
- [Qemu-devel] [PATCH 47/57] target-i386: Implement BEXTR, Richard Henderson, 2013/01/24
- [Qemu-devel] [PATCH 41/57] target-i386: Don't reference ENV through most of cc helpers, Richard Henderson, 2013/01/24
- [Qemu-devel] [PATCH 19/57] target-i386: no need to flush out cc_op before gen_eob, Richard Henderson, 2013/01/24
- Re: [Qemu-devel] [PATCH 00/57] target-i386 eflags cleanup and bmi/adx extensions, Andreas Färber, 2013/01/24
- Re: [Qemu-devel] [PATCH 00/57] target-i386 eflags cleanup and bmi/adx extensions,
Laurent Desnogues <=
Re: [Qemu-devel] [PATCH 00/57] target-i386 eflags cleanup and bmi/adx extensions, Anthony Liguori, 2013/01/25