From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KlUNh-0001wr-6U for qemu-devel@nongnu.org; Thu, 02 Oct 2008 16:02:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KlUNg-0001vy-9y for qemu-devel@nongnu.org; Thu, 02 Oct 2008 16:02:36 -0400 Received: from [199.232.76.173] (port=46444 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KlUNf-0001vt-Ng for qemu-devel@nongnu.org; Thu, 02 Oct 2008 16:02:35 -0400 Received: from savannah.gnu.org ([199.232.41.3]:40017 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KlUNe-0005Hy-RO for qemu-devel@nongnu.org; Thu, 02 Oct 2008 16:02:35 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1KlUNc-0003Yr-Pb for qemu-devel@nongnu.org; Thu, 02 Oct 2008 20:02:32 +0000 Received: from malc by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1KlUNc-0003Ye-C0 for qemu-devel@nongnu.org; Thu, 02 Oct 2008 20:02:32 +0000 MIME-Version: 1.0 Errors-To: malc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: malc Message-Id: Date: Thu, 02 Oct 2008 20:02:32 +0000 Subject: [Qemu-devel] [5404] Optimize 64 bit bswap Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 5404 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5404 Author: malc Date: 2008-10-02 20:02:31 +0000 (Thu, 02 Oct 2008) Log Message: ----------- Optimize 64 bit bswap Use rldimi instead of rldicr/or pair, saves us one instruction. Suggested by Hollis Blanchard. Modified Paths: -------------- trunk/tcg/ppc64/tcg-target.c Modified: trunk/tcg/ppc64/tcg-target.c =================================================================== --- trunk/tcg/ppc64/tcg-target.c 2008-10-02 20:02:27 UTC (rev 5403) +++ trunk/tcg/ppc64/tcg-target.c 2008-10-02 20:02:31 UTC (rev 5404) @@ -303,6 +303,7 @@ #define RLDICL XO30( 0) #define RLDICR XO30( 1) +#define RLDIMI XO30( 3) #define BCLR XO19( 16) #define BCCTR XO19(528) @@ -691,11 +692,10 @@ break; case 3: if (bswap) { - tcg_out32 (s, LWBRX | RT (0) | RB (r0)); - tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); - tcg_out32 (s, LWBRX | RT (data_reg) | RB (r1)); - tcg_out_rld (s, RLDICR, data_reg, data_reg, 32, 31); - tcg_out32 (s, OR | SAB (0, data_reg, data_reg)); + tcg_out_movi32 (s, 0, 4); + tcg_out32 (s, LWBRX | RT (data_reg) | RB (r0)); + tcg_out32 (s, LWBRX | RT ( r1) | RA (r0)); + tcg_out_rld (s, RLDIMI, data_reg, r1, 32, 0); } else tcg_out32 (s, LD | RT (data_reg) | RA (r0)); break;