On 2012년 07월 05일 22:23, Yeongkyoon Lee wrote:
Summarized feature is as following.
- All the changes are wrapped by macro "CONFIG_QEMU_LDST_OPTIMIZATION" and
disabled by default.
- They are enabled by "configure --enable-ldst-optimization" and need
CONFIG_SOFTMMU.
- They do not work with CONFIG_TCG_PASS_AREG0 because it looks better apply
them after areg0 codes come steady.
- Currently, they support only x86 and x86-64 and have been tested with x86
and ARM linux targets on x86/x86-64 host platforms.
- Build test has been done for all targets.
I'd like to summarize community's feedbacks/observations and propose new
patch for ldst optimization.
* Feedbacks/observations
1. It needs to work with PASS_AREG0 (CONFIG_TCG_PASS_AREG0).
2. It does not need to be configured by user.
3. It looks good for a target to be ldst-optimized on x86/64 hosts not
optionally.
4. CONFIG_QEMU_LDST_OPTIMIZATION looks necessary because common code
(e.g. tcg.h/tcg.c) is used on-x86 hosts and it should support
non-softmmu targets.
5. It might need two versions of MMU helpers, standard and extended,
simultaneously because C code might want to call the standard version.
* Modification proposals
1. Apply ldst optimization also when PASS_AREG0 enabled.
2. Make softmmu targets always to use ldst optimization on x86/64 hosts.
But testing for many targets is an issue...
3. Make target mem(op) helpers to provide extended MMU helpers and
softmmu_header.h to provide standard MMU helpers.
4. Fix some mistypings and redundant checks.
I'm not sure whether my proposals are feasible, however, I'd like to try
them.
How do you think about it?
Yeongkyoon Lee (4):
tcg: add declarations and templates of extended MMU helpers
tcg: add extended MMU helpers to softmmu targets
tcg: add optimized TCG qemu_ld/st generation
configure: add CONFIG_QEMU_LDST_OPTIMIZATION for TCG qemu_ld/st
optimization
configure | 15 ++
softmmu_defs.h | 13 ++
softmmu_template.h | 51 +++++--
target-alpha/mem_helper.c | 22 +++
target-arm/op_helper.c | 23 +++
target-cris/op_helper.c | 22 +++
target-i386/mem_helper.c | 22 +++
target-lm32/op_helper.c | 23 +++-
target-m68k/op_helper.c | 22 +++
target-microblaze/op_helper.c | 22 +++
target-mips/op_helper.c | 22 +++
target-ppc/mem_helper.c | 22 +++
target-s390x/op_helper.c | 22 +++
target-sh4/op_helper.c | 22 +++
target-sparc/ldst_helper.c | 23 +++
target-xtensa/op_helper.c | 22 +++
tcg/i386/tcg-target.c | 328 +++++++++++++++++++++++++++++++++++++++++
tcg/tcg.c | 12 ++
tcg/tcg.h | 35 +++++
19 files changed, 732 insertions(+), 11 deletions(-)