target/mips: Support R5900 DIV1 and DIVU1 instructions

Backports commit be9c42c90d162100a63111ddeb8bfe50be897873 from qemu
This commit is contained in:
Fredrik Noring 2018-11-10 12:07:22 -05:00 committed by Lioncash
parent b42c8e80b8
commit 296d8bd729
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -4653,11 +4653,14 @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
gen_load_gpr(ctx, t1, rt);
if (acc != 0) {
check_dsp(ctx);
if (!(ctx->insn_flags & INSN_R5900)) {
check_dsp(ctx);
}
}
switch (opc) {
case OPC_DIV:
case TX79_MMI_DIV1:
{
TCGv t2 = tcg_temp_new(tcg_ctx);
TCGv t3 = tcg_temp_new(tcg_ctx);
@ -4679,6 +4682,7 @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
}
break;
case OPC_DIVU:
case TX79_MMI_DIVU1:
{
TCGv t2 = tcg_const_tl(tcg_ctx, 0);
TCGv t3 = tcg_const_tl(tcg_ctx, 1);
@ -24816,6 +24820,10 @@ static void decode_tx79_mmi(CPUMIPSState *env, DisasContext *ctx)
case TX79_MMI_MULTU1:
gen_mul_txx9(ctx, opc, rd, rs, rt);
break;
case TX79_MMI_DIV1:
case TX79_MMI_DIVU1:
gen_muldiv(ctx, opc, 1, rs, rt);
break;
case TX79_MMI_MTLO1:
case TX79_MMI_MTHI1:
gen_HILO(ctx, opc, 1, rs);
@ -24827,8 +24835,6 @@ static void decode_tx79_mmi(CPUMIPSState *env, DisasContext *ctx)
case TX79_MMI_MADD: /* TODO: TX79_MMI_MADD */
case TX79_MMI_MADDU: /* TODO: TX79_MMI_MADDU */
case TX79_MMI_PLZCW: /* TODO: TX79_MMI_PLZCW */
case TX79_MMI_DIV1: /* TODO: TX79_MMI_DIV1 */
case TX79_MMI_DIVU1: /* TODO: TX79_MMI_DIVU1 */
case TX79_MMI_MADD1: /* TODO: TX79_MMI_MADD1 */
case TX79_MMI_MADDU1: /* TODO: TX79_MMI_MADDU1 */
case TX79_MMI_PMFHL: /* TODO: TX79_MMI_PMFHL */