static void dec10_reg_swap(DisasContext *dc) { TCGv t0; LOG_DIS("not $r%d, $r%d\n", dc->src, dc->dst); cris_cc_mask(dc, CC_MASK_NZVC); t0 = tcg_temp_new(); t_gen_mov_TN_reg(t0, dc->src); if (dc->dst & 8) tcg_gen_not_tl(t0, t0); if (dc->dst & 4) t_gen_swapw(t0, t0); if (dc->dst & 2) t_gen_swapb(t0, t0); if (dc->dst & 1) t_gen_swapr(t0, t0); cris_alu(dc, CC_OP_MOVE, cpu_R[dc->src], cpu_R[dc->src], t0, 4); tcg_temp_free(t0); }
static void dec_xnor(DisasContext *dc) { if (dc->format == OP_FMT_RI) { LOG_DIS("xnori r%d, r%d, %d\n", dc->r0, dc->r1, zero_extend(dc->imm16, 16)); } else { if (dc->r1 == R_R0) { LOG_DIS("not r%d, r%d\n", dc->r2, dc->r0); } else { LOG_DIS("xnor r%d, r%d, r%d\n", dc->r2, dc->r0, dc->r1); } } if (dc->format == OP_FMT_RI) { tcg_gen_xori_tl(cpu_R[dc->r1], cpu_R[dc->r0], zero_extend(dc->imm16, 16)); tcg_gen_not_tl(cpu_R[dc->r1], cpu_R[dc->r1]); } else { tcg_gen_eqv_tl(cpu_R[dc->r2], cpu_R[dc->r0], cpu_R[dc->r1]); } }