target-microblaze: Use table based condition-codes conversion

Use a table based conversion to map condition-codes between
MicroBlaze ISA encoding and TCG.
No functional change.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
This commit is contained in:
Edgar E. Iglesias 2018-05-08 17:31:50 +02:00
parent 75c9ddce5d
commit d89b86e912
1 changed files with 20 additions and 21 deletions

View File

@ -1145,28 +1145,27 @@ static void dec_store(DisasContext *dc)
static inline void eval_cc(DisasContext *dc, unsigned int cc,
TCGv_i32 d, TCGv_i32 a, TCGv_i32 b)
{
static const int mb_to_tcg_cc[] = {
[CC_EQ] = TCG_COND_EQ,
[CC_NE] = TCG_COND_NE,
[CC_LT] = TCG_COND_LT,
[CC_LE] = TCG_COND_LE,
[CC_GE] = TCG_COND_GE,
[CC_GT] = TCG_COND_GT,
};
switch (cc) {
case CC_EQ:
tcg_gen_setcond_i32(TCG_COND_EQ, d, a, b);
break;
case CC_NE:
tcg_gen_setcond_i32(TCG_COND_NE, d, a, b);
break;
case CC_LT:
tcg_gen_setcond_i32(TCG_COND_LT, d, a, b);
break;
case CC_LE:
tcg_gen_setcond_i32(TCG_COND_LE, d, a, b);
break;
case CC_GE:
tcg_gen_setcond_i32(TCG_COND_GE, d, a, b);
break;
case CC_GT:
tcg_gen_setcond_i32(TCG_COND_GT, d, a, b);
break;
default:
cpu_abort(CPU(dc->cpu), "Unknown condition code %x.\n", cc);
break;
case CC_EQ:
case CC_NE:
case CC_LT:
case CC_LE:
case CC_GE:
case CC_GT:
tcg_gen_setcond_i32(mb_to_tcg_cc[cc], d, a, b);
break;
default:
cpu_abort(CPU(dc->cpu), "Unknown condition code %x.\n", cc);
break;
}
}