qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/20] target-sparc: Cleanup handling of temps
@ 2012-10-09 22:04 Richard Henderson
  2012-10-09 22:04 ` [Qemu-devel] [PATCH 01/20] target-sparc: Add gen_load/store/dest_gpr Richard Henderson
                   ` (20 more replies)
  0 siblings, 21 replies; 23+ messages in thread
From: Richard Henderson @ 2012-10-09 22:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Blue Swirl

The primary goal of this patch set is to have all references to windowed
registers to go through new routines that have access to DisasContext.
This is a prerequisite to any change in how windowed registers might be
managed.

Since such a goal must of course touch get_src[12], and therefore touch
the use of the cpu_src[12] temporaries, a secondary goal of the patch set
became to clean up all of the temporary management within the translator.
And in particular eliminate the 6 "global" temps that we currently allocate
inside gen_intermediate_code_internal.

In some cases we convert their uses to simple temps allocated and freed
nearby their uses.  In some cases we push the cpu_foo temp down into the
disassembly of a given opcode, making it local to the code that ought to
be able to access it.  And finally we provide for temps to be allocated
dynamically, and then automatically freed at the end of the insn.

The result ought to be microscopically faster than before, if only
because TCG is iterating over fewer temporaries.


r~


Richard Henderson (20):
  target-sparc: Add gen_load/store/dest_gpr
  target-sparc: Conversion to gen_*_gpr, part 1
  target-sparc: Use gen_load_gpr in get_src[12]
  target-sparc: Convert asi helpers to gen_*_gpr
  target-sparc: Convert swap to gen_load/store_gpr
  target-sparc: Finish conversion to gen_load_gpr
  target-sparc: Cleanup cpu_src[12] allocation
  target-sparc: Make the cpu_addr variable local to load/store handling
  target-sparc: Split out get_temp_i32
  target-sparc: Use get_temp_i32 in gen_dest_fpr_F
  target-sparc: Avoid cpu_tmp32 in Read Priv Register
  target-sparc: Avoid cpu_tmp32 in Write Priv Register
  target-sparc: Tidy ldfsr, stfsr
  target-sparc: Remove usage of cpu_tmp64 from most helper functions
  target-sparc: Don't use a temporary for gen_dest_fpr_D
  target-sparc: Remove cpu_tmp64 use from softint insns
  target-sparc: Remove last uses of cpu_tmp64
  target-sparc: Only use cpu_dst for eventual writes to a gpr
  target-sparc: Make cpu_dst local to OP=2 insns
  target-sparc: Remove cpu_tmp0 as a global

 target-sparc/translate.c | 1233 +++++++++++++++++++++++-----------------------
 1 file changed, 609 insertions(+), 624 deletions(-)

-- 
1.7.11.4

^ permalink raw reply	[flat|nested] 23+ messages in thread
* [Qemu-devel] [PATCH v2 00/20] target-sparc: Cleanup handling of temps
@ 2012-10-16  9:32 Richard Henderson
  2012-10-16  9:32 ` [Qemu-devel] [PATCH 01/20] target-sparc: Add gen_load/store/dest_gpr Richard Henderson
  0 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2012-10-16  9:32 UTC (permalink / raw)
  To: qemu-devel; +Cc: blauwirbel

The primary goal of this patch set is to have all references to windowed
registers to go through new routines that have access to DisasContext.
This is a prerequisite to any change in how windowed registers might be
managed.

Since such a goal must of course touch get_src[12], and therefore touch
the use of the cpu_src[12] temporaries, a secondary goal of the patch set
became to clean up all of the temporary management within the translator.
And in particular eliminate the 6 "global" temps that we currently allocate
inside gen_intermediate_code_internal.

Changes v1->v2:
  * Fix use without initialization that clang found that gcc did not.
    (Was I compiling without optimization last time?)
  * Re-based vs master.


r~


Richard Henderson (20):
  target-sparc: Add gen_load/store/dest_gpr
  target-sparc: Conversion to gen_*_gpr, part 1
  target-sparc: Use gen_load_gpr in get_src[12]
  target-sparc: Convert asi helpers to gen_*_gpr
  target-sparc: Convert swap to gen_load/store_gpr
  target-sparc: Finish conversion to gen_load_gpr
  target-sparc: Cleanup cpu_src[12] allocation
  target-sparc: Make the cpu_addr variable local to load/store handling
  target-sparc: Split out get_temp_i32
  target-sparc: Use get_temp_i32 in gen_dest_fpr_F
  target-sparc: Avoid cpu_tmp32 in Read Priv Register
  target-sparc: Avoid cpu_tmp32 in Write Priv Register
  target-sparc: Tidy ldfsr, stfsr
  target-sparc: Remove usage of cpu_tmp64 from most helper functions
  target-sparc: Don't use a temporary for gen_dest_fpr_D
  target-sparc: Remove cpu_tmp64 use from softint insns
  target-sparc: Remove last uses of cpu_tmp64
  target-sparc: Only use cpu_dst for eventual writes to a gpr
  target-sparc: Make cpu_dst local to OP=2 insns
  target-sparc: Remove cpu_tmp0 as a global

 target-sparc/translate.c | 1236 +++++++++++++++++++++++-----------------------
 1 file changed, 612 insertions(+), 624 deletions(-)

-- 
1.7.11.7

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2012-10-16  9:33 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-09 22:04 [Qemu-devel] [PATCH 00/20] target-sparc: Cleanup handling of temps Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 01/20] target-sparc: Add gen_load/store/dest_gpr Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 02/20] target-sparc: Conversion to gen_*_gpr, part 1 Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 03/20] target-sparc: Use gen_load_gpr in get_src[12] Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 04/20] target-sparc: Convert asi helpers to gen_*_gpr Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 05/20] target-sparc: Convert swap to gen_load/store_gpr Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 06/20] target-sparc: Finish conversion to gen_load_gpr Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 07/20] target-sparc: Cleanup cpu_src[12] allocation Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 08/20] target-sparc: Make the cpu_addr variable local to load/store handling Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 09/20] target-sparc: Split out get_temp_i32 Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 10/20] target-sparc: Use get_temp_i32 in gen_dest_fpr_F Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 11/20] target-sparc: Avoid cpu_tmp32 in Read Priv Register Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 12/20] target-sparc: Avoid cpu_tmp32 in Write " Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 13/20] target-sparc: Tidy ldfsr, stfsr Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 14/20] target-sparc: Remove usage of cpu_tmp64 from most helper functions Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 15/20] target-sparc: Don't use a temporary for gen_dest_fpr_D Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 16/20] target-sparc: Remove cpu_tmp64 use from softint insns Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 17/20] target-sparc: Remove last uses of cpu_tmp64 Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 18/20] target-sparc: Only use cpu_dst for eventual writes to a gpr Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 19/20] target-sparc: Make cpu_dst local to OP=2 insns Richard Henderson
2012-10-09 22:04 ` [Qemu-devel] [PATCH 20/20] target-sparc: Remove cpu_tmp0 as a global Richard Henderson
2012-10-13 10:36 ` [Qemu-devel] [PATCH 00/20] target-sparc: Cleanup handling of temps Blue Swirl
  -- strict thread matches above, loose matches on Subject: below --
2012-10-16  9:32 [Qemu-devel] [PATCH v2 " Richard Henderson
2012-10-16  9:32 ` [Qemu-devel] [PATCH 01/20] target-sparc: Add gen_load/store/dest_gpr Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).