static void cris_alu(DisasContext *dc, int op,

			       TCGv d, TCGv op_a, TCGv op_b, int size)

{

	TCGv tmp;

	int writeback;



	writeback = 1;



	if (op == CC_OP_BOUND || op == CC_OP_BTST)

		tmp = tcg_temp_local_new(TCG_TYPE_TL);

	else

		tmp = tcg_temp_new(TCG_TYPE_TL);



	if (op == CC_OP_CMP) {

		writeback = 0;

	} else if (size == 4) {

		tmp = d;

		writeback = 0;

	}



	cris_pre_alu_update_cc(dc, op, op_a, op_b, size);

	cris_alu_op_exec(dc, op, tmp, op_a, op_b, size);

	cris_update_result(dc, tmp);



	/* Writeback.  */

	if (writeback) {

		if (size == 1)

			tcg_gen_andi_tl(d, d, ~0xff);

		else

			tcg_gen_andi_tl(d, d, ~0xffff);

		tcg_gen_or_tl(d, d, tmp);

	}

	if (tmp != d)

		tcg_temp_free(tmp);

}

static void cris_alu(DisasContext *dc, int op,

			       TCGv d, TCGv op_a, TCGv op_b, int size)

{

	TCGv tmp;

	int writeback;



	writeback = 1;



	if (op == CC_OP_BOUND || op == CC_OP_BTST)

		tmp = tcg_temp_local_new(TCG_TYPE_TL);

	else

		tmp = tcg_temp_new(TCG_TYPE_TL);



	if (op == CC_OP_CMP) {

		writeback = 0;

	} else if (size == 4) {

		tmp = d;

		writeback = 0;

	}



	cris_pre_alu_update_cc(dc, op, op_a, op_b, size);

	cris_alu_op_exec(dc, op, tmp, op_a, op_b, size);

	cris_update_result(dc, tmp);



	

	if (writeback) {

		if (size == 1)

			tcg_gen_andi_tl(d, d, ~0xff);

		else

			tcg_gen_andi_tl(d, d, ~0xffff);

		tcg_gen_or_tl(d, d, tmp);

	}

	if (tmp != d)

		tcg_temp_free(tmp);

}

		tmp = tcg_temp_new(TCG_TYPE_TL);
static void FUNC_0(DisasContext *VAR_0, int VAR_1,

			       TCGv VAR_2, TCGv VAR_3, TCGv VAR_4, int VAR_5)

{

	TCGv tmp;

	int VAR_6;



	VAR_6 = 1;



	if (VAR_1 == CC_OP_BOUND || VAR_1 == CC_OP_BTST)

		tmp = tcg_temp_local_new(TCG_TYPE_TL);

	else

		tmp = tcg_temp_new(TCG_TYPE_TL);



	if (VAR_1 == CC_OP_CMP) {

		VAR_6 = 0;

	} else if (VAR_5 == 4) {

		tmp = VAR_2;

		VAR_6 = 0;

	}



	cris_pre_alu_update_cc(VAR_0, VAR_1, VAR_3, VAR_4, VAR_5);

	cris_alu_op_exec(VAR_0, VAR_1, tmp, VAR_3, VAR_4, VAR_5);

	cris_update_result(VAR_0, tmp);



	

	if (VAR_6) {

		if (VAR_5 == 1)

			tcg_gen_andi_tl(VAR_2, VAR_2, ~0xff);

		else

			tcg_gen_andi_tl(VAR_2, VAR_2, ~0xffff);

		tcg_gen_or_tl(VAR_2, VAR_2, tmp);

	}

	if (tmp != VAR_2)

		tcg_temp_free(tmp);

}

static void FUNC_0(DisasContext *VAR_0, int VAR_1,
TCGv VAR_2, TCGv VAR_3, TCGv VAR_4, int VAR_5)
{ TCGv tmp; int VAR_6; VAR_6 = 1; if (VAR_1 == CC_OP_BOUND || VAR_1 == CC_OP_BTST)
tmp = tcg_temp_local_new(TCG_TYPE_TL); else
tmp = tcg_temp_new(TCG_TYPE_TL); if (VAR_1 == CC_OP_CMP) { VAR_6 = 0; } else if (VAR_5 == 4) { tmp = VAR_2; VAR_6 = 0; } cris_pre_alu_update_cc(VAR_0, VAR_1, VAR_3, VAR_4, VAR_5); cris_alu_op_exec(VAR_0, VAR_1, tmp, VAR_3, VAR_4, VAR_5); cris_update_result(VAR_0, tmp); if (VAR_6) { if (VAR_5 == 1)
tcg_gen_andi_tl(VAR_2, VAR_2, ~0xff); else
tcg_gen_andi_tl(VAR_2, VAR_2, ~0xffff); tcg_gen_or_tl(VAR_2, VAR_2, tmp); } if (tmp != VAR_2)
tcg_temp_free(tmp); }