aboutsummaryrefslogtreecommitdiff
path: root/tcg/ppc/tcg-target.c
diff options
context:
space:
mode:
Diffstat (limited to 'tcg/ppc/tcg-target.c')
-rw-r--r--tcg/ppc/tcg-target.c11
1 files changed, 4 insertions, 7 deletions
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: