qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] target/mips: Remove JR opcode unused arguments
@ 2021-07-30 22:55 Philippe Mathieu-Daudé
  2021-07-31 19:54 ` Richard Henderson
  2021-08-06 21:09 ` Philippe Mathieu-Daudé
  0 siblings, 2 replies; 3+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-30 22:55 UTC (permalink / raw)
  To: qemu-devel
  Cc: Aleksandar Rikalo, Richard Henderson, Aurelien Jarno,
	Philippe Mathieu-Daudé

JR opcode (Jump Register) only takes 1 argument, $rs.
JALR (Jump And Link Register) takes 3: $rs, $rd and $hint.

Commit 6af0bf9c7c3 added their processing into decode_opc() as:

    case 0x08 ... 0x09: /* Jumps */
        gen_compute_branch(ctx, op1 | EXT_SPECIAL, rs, rd, sa);

having both opcodes handled in the same function: gen_compute_branch.

Per JR encoding, both $rd and $hint ('sa') are decoded as zero.

Later this code got extracted to decode_opc_special(),
commit 7a387fffce5 used definitions instead of magic values:

    case OPC_JR ... OPC_JALR:
        gen_compute_branch(ctx, op1, rs, rd, sa);

Finally commit 0aefa33318b moved OPC_JR out of decode_opc_special,
to a new 'decode_opc_special_legacy' function:

  @@ -15851,6 +15851,9 @@ static void decode_opc_special_legacy(CPUMIPSState *env, DisasContext *ctx)
  +    case OPC_JR:
  +        gen_compute_branch(ctx, op1, 4, rs, rd, sa);
  +        break;

  @@ -15933,7 +15936,7 @@ static void decode_opc_special(CPUMIPSState *env, DisasContext *ctx)
  -    case OPC_JR ... OPC_JALR:
  +    case OPC_JALR:
           gen_compute_branch(ctx, op1, 4, rs, rd, sa);
           break;

Since JR is now handled individually, it is pointless to decode
and pass it unused arguments. Replace them by simple zero value
to avoid confusion with this opcode.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 target/mips/tcg/translate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
index 5b03545f099..bf71724f3f0 100644
--- a/target/mips/tcg/translate.c
+++ b/target/mips/tcg/translate.c
@@ -14203,7 +14203,7 @@ static void decode_opc_special_legacy(CPUMIPSState *env, DisasContext *ctx)
         break;
 #endif
     case OPC_JR:
-        gen_compute_branch(ctx, op1, 4, rs, rd, sa, 4);
+        gen_compute_branch(ctx, op1, 4, rs, 0, 0, 4);
         break;
     case OPC_SPIM:
 #ifdef MIPS_STRICT_STANDARD
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] target/mips: Remove JR opcode unused arguments
  2021-07-30 22:55 [PATCH] target/mips: Remove JR opcode unused arguments Philippe Mathieu-Daudé
@ 2021-07-31 19:54 ` Richard Henderson
  2021-08-06 21:09 ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2021-07-31 19:54 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Aleksandar Rikalo, Aurelien Jarno

On 7/30/21 12:55 PM, Philippe Mathieu-Daudé wrote:
>       case OPC_JR:
> -        gen_compute_branch(ctx, op1, 4, rs, rd, sa, 4);
> +        gen_compute_branch(ctx, op1, 4, rs, 0, 0, 4);

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] target/mips: Remove JR opcode unused arguments
  2021-07-30 22:55 [PATCH] target/mips: Remove JR opcode unused arguments Philippe Mathieu-Daudé
  2021-07-31 19:54 ` Richard Henderson
@ 2021-08-06 21:09 ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 3+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-08-06 21:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Aleksandar Rikalo, Richard Henderson, Aurelien Jarno

On 7/31/21 12:55 AM, Philippe Mathieu-Daudé wrote:
> JR opcode (Jump Register) only takes 1 argument, $rs.
> JALR (Jump And Link Register) takes 3: $rs, $rd and $hint.
> 
> Commit 6af0bf9c7c3 added their processing into decode_opc() as:
> 
>     case 0x08 ... 0x09: /* Jumps */
>         gen_compute_branch(ctx, op1 | EXT_SPECIAL, rs, rd, sa);
> 
> having both opcodes handled in the same function: gen_compute_branch.
> 
> Per JR encoding, both $rd and $hint ('sa') are decoded as zero.
> 
> Later this code got extracted to decode_opc_special(),
> commit 7a387fffce5 used definitions instead of magic values:
> 
>     case OPC_JR ... OPC_JALR:
>         gen_compute_branch(ctx, op1, rs, rd, sa);
> 
> Finally commit 0aefa33318b moved OPC_JR out of decode_opc_special,
> to a new 'decode_opc_special_legacy' function:
> 
>   @@ -15851,6 +15851,9 @@ static void decode_opc_special_legacy(CPUMIPSState *env, DisasContext *ctx)
>   +    case OPC_JR:
>   +        gen_compute_branch(ctx, op1, 4, rs, rd, sa);
>   +        break;
> 
>   @@ -15933,7 +15936,7 @@ static void decode_opc_special(CPUMIPSState *env, DisasContext *ctx)
>   -    case OPC_JR ... OPC_JALR:
>   +    case OPC_JALR:
>            gen_compute_branch(ctx, op1, 4, rs, rd, sa);
>            break;
> 
> Since JR is now handled individually, it is pointless to decode
> and pass it unused arguments. Replace them by simple zero value
> to avoid confusion with this opcode.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  target/mips/tcg/translate.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Thanks, applied to mips-next.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-08-06 21:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-30 22:55 [PATCH] target/mips: Remove JR opcode unused arguments Philippe Mathieu-Daudé
2021-07-31 19:54 ` Richard Henderson
2021-08-06 21:09 ` Philippe Mathieu-Daudé

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).