Message ID | 20230831201140.85799-1-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target/mips: Simplify Loongson MULTU.G opcode | expand |
On 8/31/23 13:11, Philippe Mathieu-Daudé wrote: > Since MULTU opcodes don't record the most significant bits > of the infinite result, sign-extending the sources make no > difference in the result. > > Once we remove the sign extension of source registers, MULT > and MULTU are identical (as are DMULT and DMULTU). > > Suggested-by: Richard Henderson<richard.henderson@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org> > --- > target/mips/tcg/translate.c | 2 -- > 1 file changed, 2 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index 9bb40f1849..e0a76b9432 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -3625,8 +3625,6 @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc, break; case OPC_MULTU_G_2E: case OPC_MULTU_G_2F: - tcg_gen_ext32u_tl(t0, t0); - tcg_gen_ext32u_tl(t1, t1); tcg_gen_mul_tl(cpu_gpr[rd], t0, t1); tcg_gen_ext32s_tl(cpu_gpr[rd], cpu_gpr[rd]); break;
Since MULTU opcodes don't record the most significant bits of the infinite result, sign-extending the sources make no difference in the result. Once we remove the sign extension of source registers, MULT and MULTU are identical (as are DMULT and DMULTU). Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/mips/tcg/translate.c | 2 -- 1 file changed, 2 deletions(-)