From e924c485737c38f6d6e4f3ebd65705733e837356 Mon Sep 17 00:00:00 2001 From: malc Date: Thu, 3 Jul 2008 23:49:14 +0000 Subject: Fuse EQ and NE handling in tcg_out_brcond2 git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4845 c046a42c-6fe2-441c-8c8c-71466251a162 --- tcg/ppc/tcg-target.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'tcg/ppc') diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c index c69a39eb9e..0dcf612258 100644 --- a/tcg/ppc/tcg-target.c +++ b/tcg/ppc/tcg-target.c @@ -987,14 +987,11 @@ static void tcg_out_brcond2 (TCGContext *s, const TCGArg *args, switch (cond) { case TCG_COND_EQ: - tcg_out_cmp (s, TCG_COND_EQ, args[0], args[2], const_args[2], 6); - tcg_out_cmp (s, TCG_COND_EQ, args[1], args[3], const_args[3], 7); - tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); - break; case TCG_COND_NE: - tcg_out_cmp (s, TCG_COND_NE, args[0], args[2], const_args[2], 6); - tcg_out_cmp (s, TCG_COND_NE, args[1], args[3], const_args[3], 7); - tcg_out32 (s, CRNAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); + op = (cond == TCG_COND_EQ) ? CRAND : CRNAND; + tcg_out_cmp (s, cond, args[0], args[2], const_args[2], 6); + tcg_out_cmp (s, cond, args[1], args[3], const_args[3], 7); + tcg_out32 (s, op | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); break; case TCG_COND_LT: case TCG_COND_LE: -- cgit v1.2.3