mirror of https://gitee.com/openkylin/qemu.git
target/xtensa: fix FPU2000 bugs
- FPU2000 defines rfr and wfr opcodes, not rfr.s and wfr.s;
- movcond.s uses incorrect operand in tcg_gen_movcond: in case the
condition is not satisfied it must not change its argument 0.
Fixes: c04e1692e3
("target/xtensa: extract FPU2000 opcode
translators")
Cc: qemu-stable@nongnu.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
3ee01413be
commit
e8e05fd472
|
@ -4706,7 +4706,7 @@ static void translate_movcond_s(DisasContext *dc, const uint32_t arg[],
|
||||||
|
|
||||||
tcg_gen_movcond_i32(par[0], cpu_FR[arg[0]],
|
tcg_gen_movcond_i32(par[0], cpu_FR[arg[0]],
|
||||||
cpu_R[arg[2]], zero,
|
cpu_R[arg[2]], zero,
|
||||||
cpu_FR[arg[1]], cpu_FR[arg[2]]);
|
cpu_FR[arg[1]], cpu_FR[arg[0]]);
|
||||||
tcg_temp_free(zero);
|
tcg_temp_free(zero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4867,7 +4867,7 @@ static const XtensaOpcodeOps fpu2000_ops[] = {
|
||||||
.translate = translate_compare_s,
|
.translate = translate_compare_s,
|
||||||
.par = (const uint32_t[]){COMPARE_OLT},
|
.par = (const uint32_t[]){COMPARE_OLT},
|
||||||
}, {
|
}, {
|
||||||
.name = "rfr.s",
|
.name = "rfr",
|
||||||
.translate = translate_rfr_s,
|
.translate = translate_rfr_s,
|
||||||
}, {
|
}, {
|
||||||
.name = "round.s",
|
.name = "round.s",
|
||||||
|
@ -4921,7 +4921,7 @@ static const XtensaOpcodeOps fpu2000_ops[] = {
|
||||||
.translate = translate_ftoi_s,
|
.translate = translate_ftoi_s,
|
||||||
.par = (const uint32_t[]){float_round_to_zero, true},
|
.par = (const uint32_t[]){float_round_to_zero, true},
|
||||||
}, {
|
}, {
|
||||||
.name = "wfr.s",
|
.name = "wfr",
|
||||||
.translate = translate_wfr_s,
|
.translate = translate_wfr_s,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue