target-tricore: Move general CHECK_REG_PAIR of decode_rrr_divide
The add.f and sub.f to be implemented don't use 64 bit registers and a general usage of CHECK_REG_PAIR would always generate an exception for them. Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Message-Id: <1457708597-3025-3-git-send-email-kbastian@mail.uni-paderborn.de>
This commit is contained in:
parent
996a729f9b
commit
c433a17141
@ -7013,45 +7013,51 @@ static void decode_rrr_divide(CPUTriCoreState *env, DisasContext *ctx)
|
|||||||
r3 = MASK_OP_RRR_S3(ctx->opcode);
|
r3 = MASK_OP_RRR_S3(ctx->opcode);
|
||||||
r4 = MASK_OP_RRR_D(ctx->opcode);
|
r4 = MASK_OP_RRR_D(ctx->opcode);
|
||||||
|
|
||||||
CHECK_REG_PAIR(r3);
|
|
||||||
|
|
||||||
switch (op2) {
|
switch (op2) {
|
||||||
case OPC2_32_RRR_DVADJ:
|
case OPC2_32_RRR_DVADJ:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
CHECK_REG_PAIR(r4);
|
CHECK_REG_PAIR(r4);
|
||||||
GEN_HELPER_RRR(dvadj, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
GEN_HELPER_RRR(dvadj, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
||||||
break;
|
break;
|
||||||
case OPC2_32_RRR_DVSTEP:
|
case OPC2_32_RRR_DVSTEP:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
CHECK_REG_PAIR(r4);
|
CHECK_REG_PAIR(r4);
|
||||||
GEN_HELPER_RRR(dvstep, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
GEN_HELPER_RRR(dvstep, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
||||||
break;
|
break;
|
||||||
case OPC2_32_RRR_DVSTEP_U:
|
case OPC2_32_RRR_DVSTEP_U:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
CHECK_REG_PAIR(r4);
|
CHECK_REG_PAIR(r4);
|
||||||
GEN_HELPER_RRR(dvstep_u, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
GEN_HELPER_RRR(dvstep_u, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
||||||
break;
|
break;
|
||||||
case OPC2_32_RRR_IXMAX:
|
case OPC2_32_RRR_IXMAX:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
CHECK_REG_PAIR(r4);
|
CHECK_REG_PAIR(r4);
|
||||||
GEN_HELPER_RRR(ixmax, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
GEN_HELPER_RRR(ixmax, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
||||||
break;
|
break;
|
||||||
case OPC2_32_RRR_IXMAX_U:
|
case OPC2_32_RRR_IXMAX_U:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
CHECK_REG_PAIR(r4);
|
CHECK_REG_PAIR(r4);
|
||||||
GEN_HELPER_RRR(ixmax_u, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
GEN_HELPER_RRR(ixmax_u, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
||||||
break;
|
break;
|
||||||
case OPC2_32_RRR_IXMIN:
|
case OPC2_32_RRR_IXMIN:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
CHECK_REG_PAIR(r4);
|
CHECK_REG_PAIR(r4);
|
||||||
GEN_HELPER_RRR(ixmin, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
GEN_HELPER_RRR(ixmin, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
||||||
break;
|
break;
|
||||||
case OPC2_32_RRR_IXMIN_U:
|
case OPC2_32_RRR_IXMIN_U:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
CHECK_REG_PAIR(r4);
|
CHECK_REG_PAIR(r4);
|
||||||
GEN_HELPER_RRR(ixmin_u, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
GEN_HELPER_RRR(ixmin_u, cpu_gpr_d[r4], cpu_gpr_d[r4+1], cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
|
||||||
break;
|
break;
|
||||||
case OPC2_32_RRR_PACK:
|
case OPC2_32_RRR_PACK:
|
||||||
|
CHECK_REG_PAIR(r3);
|
||||||
gen_helper_pack(cpu_gpr_d[r4], cpu_PSW_C, cpu_gpr_d[r3],
|
gen_helper_pack(cpu_gpr_d[r4], cpu_PSW_C, cpu_gpr_d[r3],
|
||||||
cpu_gpr_d[r3+1], cpu_gpr_d[r1]);
|
cpu_gpr_d[r3+1], cpu_gpr_d[r1]);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user