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
This commit is contained in:
parent
706b0a1587
commit
e924c48573
|
@ -987,14 +987,11 @@ static void tcg_out_brcond2 (TCGContext *s, const TCGArg *args,
|
||||||
|
|
||||||
switch (cond) {
|
switch (cond) {
|
||||||
case TCG_COND_EQ:
|
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:
|
case TCG_COND_NE:
|
||||||
tcg_out_cmp (s, TCG_COND_NE, args[0], args[2], const_args[2], 6);
|
op = (cond == TCG_COND_EQ) ? CRAND : CRNAND;
|
||||||
tcg_out_cmp (s, TCG_COND_NE, args[1], args[3], const_args[3], 7);
|
tcg_out_cmp (s, cond, args[0], args[2], const_args[2], 6);
|
||||||
tcg_out32 (s, CRNAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ));
|
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;
|
break;
|
||||||
case TCG_COND_LT:
|
case TCG_COND_LT:
|
||||||
case TCG_COND_LE:
|
case TCG_COND_LE:
|
||||||
|
|
Loading…
Reference in a new issue