From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:47821) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TLhuk-0004GV-IO for qemu-devel@nongnu.org; Tue, 09 Oct 2012 18:04:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TLhuj-0001gP-J3 for qemu-devel@nongnu.org; Tue, 09 Oct 2012 18:04:34 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:34860) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TLhuj-0001fh-CR for qemu-devel@nongnu.org; Tue, 09 Oct 2012 18:04:33 -0400 Received: by mail-pb0-f45.google.com with SMTP id rp2so5751708pbb.4 for ; Tue, 09 Oct 2012 15:04:32 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Tue, 9 Oct 2012 15:04:07 -0700 Message-Id: <1349820267-26320-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PATCH 00/20] target-sparc: Cleanup handling of temps List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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