CRIS: Move operations can be optimized as arithmetic ones for cc evaluation.
authoredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 7 Jan 2009 12:27:46 +0000 (12:27 +0000)
committeredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 7 Jan 2009 12:27:46 +0000 (12:27 +0000)
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6199 c046a42c-6fe2-441c-8c8c-71466251a162

target-cris/translate.c

index 24ae03c..ab83b66 100644 (file)
@@ -975,6 +975,7 @@ static int arith_cc(DisasContext *dc)
                        case CC_OP_CMP: return 1;
                        case CC_OP_NEG: return 1;
                        case CC_OP_OR: return 1;
+                       case CC_OP_AND: return 1;
                        case CC_OP_XOR: return 1;
                        case CC_OP_MULU: return 1;
                        case CC_OP_MULS: return 1;
@@ -1000,7 +1001,7 @@ static void gen_tst_cc (DisasContext *dc, TCGv cc, int cond)
         * code is true.
         */
        arith_opt = arith_cc(dc) && !dc->flags_uptodate;
-       move_opt = (dc->cc_op == CC_OP_MOVE) && dc->flags_uptodate;
+       move_opt = (dc->cc_op == CC_OP_MOVE);
        switch (cond) {
                case CC_EQ:
                        if (arith_opt || move_opt) {