qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] tcg: remove obsolete jmp op


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH] tcg: remove obsolete jmp op
Date: Wed, 3 Oct 2012 20:03:05 +0000

On Mon, Oct 1, 2012 at 7:00 PM, Aurelien Jarno <address@hidden> wrote:
> The TCG jmp operation doesn't really make sense in the QEMU context, it
> is unused, it is not implemented by some targets, and it is wrongly
> implemented by some others.
>
> This patch simply removes it.
>
> Cc: Andrzej Zaborowski <address@hidden>
> Cc: Richard Henderson <address@hidden>
> Cc: Vassili Karpov (malc) <address@hidden>
> Cc: Alexander Graf <address@hidden>
> Cc: Blue Swirl <address@hidden>

Acked-by: Blue Swirl <address@hidden>

> Cc: Stefan Weil <address@hidden>
> Signed-off-by: Aurelien Jarno <address@hidden>
> ---
>  tcg/README             |    7 +------
>  tcg/arm/tcg-target.c   |    7 -------
>  tcg/hppa/tcg-target.c  |    6 ------
>  tcg/i386/tcg-target.c  |    9 ---------
>  tcg/ia64/tcg-target.c  |    4 ----
>  tcg/mips/tcg-target.c  |    5 -----
>  tcg/ppc/tcg-target.c   |   10 ----------
>  tcg/ppc64/tcg-target.c |   10 ----------
>  tcg/s390/tcg-target.c  |    6 ------
>  tcg/sparc/tcg-target.c |    2 --
>  tcg/tcg-opc.h          |    1 -
>  tcg/tci/tcg-target.c   |    4 ----
>  tci.c                  |    1 -
>  13 files changed, 1 insertion(+), 71 deletions(-)
>
> diff --git a/tcg/README b/tcg/README
> index 27846f1..aa86992 100644
> --- a/tcg/README
> +++ b/tcg/README
> @@ -88,8 +88,7 @@ supported.
>
>  * Branches:
>
> -Use the instruction 'br' to jump to a label. Use 'jmp' to jump to an
> -explicit address. Conditional branches can only jump to labels.
> +Use the instruction 'br' to jump to a label.
>
>  3.3) Code Optimizations
>
> @@ -129,10 +128,6 @@ call function 'ptr' (pointer type)
>
>  ********* Jumps/Labels
>
> -* jmp t0
> -
> -Absolute jump to address t0 (pointer type).
> -
>  * set_label $label
>
>  Define label 'label' at the current program point.
> diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
> index 2bad0a2..1e61864 100644
> --- a/tcg/arm/tcg-target.c
> +++ b/tcg/arm/tcg-target.c
> @@ -1530,12 +1530,6 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode 
> opc,
>          else
>              tcg_out_callr(s, COND_AL, args[0]);
>          break;
> -    case INDEX_op_jmp:
> -        if (const_args[0])
> -            tcg_out_goto(s, COND_AL, args[0]);
> -        else
> -            tcg_out_bx(s, COND_AL, args[0]);
> -        break;
>      case INDEX_op_br:
>          tcg_out_goto_label(s, COND_AL, args[0]);
>          break;
> @@ -1769,7 +1763,6 @@ static const TCGTargetOpDef arm_op_defs[] = {
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
>      { INDEX_op_call, { "ri" } },
> -    { INDEX_op_jmp, { "ri" } },
>      { INDEX_op_br, { } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
> index 2c79c10..44974c4 100644
> --- a/tcg/hppa/tcg-target.c
> +++ b/tcg/hppa/tcg-target.c
> @@ -1353,11 +1353,6 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode 
> opc, const TCGArg *args,
>          }
>          break;
>
> -    case INDEX_op_jmp:
> -        fprintf(stderr, "unimplemented jmp\n");
> -        tcg_abort();
> -        break;
> -
>      case INDEX_op_br:
>          tcg_out_branch(s, args[0], 1);
>          break;
> @@ -1592,7 +1587,6 @@ static const TCGTargetOpDef hppa_op_defs[] = {
>      { INDEX_op_goto_tb, { } },
>
>      { INDEX_op_call, { "ri" } },
> -    { INDEX_op_jmp, { "r" } },
>      { INDEX_op_br, { } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
> index 0e218c8..bb2306d 100644
> --- a/tcg/i386/tcg-target.c
> +++ b/tcg/i386/tcg-target.c
> @@ -1513,14 +1513,6 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode 
> opc,
>              tcg_out_modrm(s, OPC_GRP5, EXT5_CALLN_Ev, args[0]);
>          }
>          break;
> -    case INDEX_op_jmp:
> -        if (const_args[0]) {
> -            tcg_out_jmp(s, args[0]);
> -        } else {
> -            /* jmp *reg */
> -            tcg_out_modrm(s, OPC_GRP5, EXT5_JMPN_Ev, args[0]);
> -        }
> -        break;
>      case INDEX_op_br:
>          tcg_out_jxx(s, JCC_JMP, args[0], 0);
>          break;
> @@ -1848,7 +1840,6 @@ static const TCGTargetOpDef x86_op_defs[] = {
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
>      { INDEX_op_call, { "ri" } },
> -    { INDEX_op_jmp, { "ri" } },
>      { INDEX_op_br, { } },
>      { INDEX_op_mov_i32, { "r", "r" } },
>      { INDEX_op_movi_i32, { "r" } },
> diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
> index dc9c12c..705712f 100644
> --- a/tcg/ia64/tcg-target.c
> +++ b/tcg/ia64/tcg-target.c
> @@ -1916,9 +1916,6 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode 
> opc,
>      case INDEX_op_goto_tb:
>          tcg_out_goto_tb(s, args[0]);
>          break;
> -    case INDEX_op_jmp:
> -        tcg_out_jmp(s, args[0]);
> -        break;
>
>      case INDEX_op_movi_i32:
>          tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]);
> @@ -2156,7 +2153,6 @@ static const TCGTargetOpDef ia64_op_defs[] = {
>      { INDEX_op_call, { "r" } },
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
> -    { INDEX_op_jmp, { "r" } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
>      { INDEX_op_movi_i32, { "r" } },
> diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
> index 34e3e7f..7e4013e 100644
> --- a/tcg/mips/tcg-target.c
> +++ b/tcg/mips/tcg-target.c
> @@ -1322,10 +1322,6 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode 
> opc,
>          tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, args[0], 0);
>          tcg_out_nop(s);
>          break;
> -    case INDEX_op_jmp:
> -        tcg_out_opc_reg(s, OPC_JR, 0, args[0], 0);
> -        tcg_out_nop(s);
> -        break;
>      case INDEX_op_br:
>          tcg_out_brcond(s, TCG_COND_EQ, TCG_REG_ZERO, TCG_REG_ZERO, args[0]);
>          break;
> @@ -1577,7 +1573,6 @@ static const TCGTargetOpDef mips_op_defs[] = {
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
>      { INDEX_op_call, { "C" } },
> -    { INDEX_op_jmp, { "r" } },
>      { INDEX_op_br, { } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
> diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
> index 90c275d..56baedd 100644
> --- a/tcg/ppc/tcg-target.c
> +++ b/tcg/ppc/tcg-target.c
> @@ -1417,15 +1417,6 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, 
> const TCGArg *args,
>      case INDEX_op_call:
>          tcg_out_call (s, args[0], const_args[0]);
>          break;
> -    case INDEX_op_jmp:
> -        if (const_args[0]) {
> -            tcg_out_b (s, 0, args[0]);
> -        }
> -        else {
> -            tcg_out32 (s, MTSPR | RS (args[0]) | CTR);
> -            tcg_out32 (s, BCCTR | BO_ALWAYS);
> -        }
> -        break;
>      case INDEX_op_movi_i32:
>          tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]);
>          break;
> @@ -1904,7 +1895,6 @@ static const TCGTargetOpDef ppc_op_defs[] = {
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
>      { INDEX_op_call, { "ri" } },
> -    { INDEX_op_jmp, { "ri" } },
>      { INDEX_op_br, { } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
> diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
> index 19944bc..6e9b363 100644
> --- a/tcg/ppc64/tcg-target.c
> +++ b/tcg/ppc64/tcg-target.c
> @@ -1245,15 +1245,6 @@ static void tcg_out_op (TCGContext *s, TCGOpcode opc, 
> const TCGArg *args,
>      case INDEX_op_call:
>          tcg_out_call (s, args[0], const_args[0]);
>          break;
> -    case INDEX_op_jmp:
> -        if (const_args[0]) {
> -            tcg_out_b (s, 0, args[0]);
> -        }
> -        else {
> -            tcg_out32 (s, MTSPR | RS (args[0]) | CTR);
> -            tcg_out32 (s, BCCTR | BO_ALWAYS);
> -        }
> -        break;
>      case INDEX_op_movi_i32:
>          tcg_out_movi (s, TCG_TYPE_I32, args[0], args[1]);
>          break;
> @@ -1588,7 +1579,6 @@ static const TCGTargetOpDef ppc_op_defs[] = {
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
>      { INDEX_op_call, { "ri" } },
> -    { INDEX_op_jmp, { "ri" } },
>      { INDEX_op_br, { } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
> diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
> index 3b90605..4b43059 100644
> --- a/tcg/s390/tcg-target.c
> +++ b/tcg/s390/tcg-target.c
> @@ -2037,11 +2037,6 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode 
> opc,
>          break;
>  #endif /* TCG_TARGET_REG_BITS == 64 */
>
> -    case INDEX_op_jmp:
> -        /* This one is obsolete and never emitted.  */
> -        tcg_abort();
> -        break;
> -
>      default:
>          fprintf(stderr,"unimplemented opc 0x%x\n",opc);
>          tcg_abort();
> @@ -2052,7 +2047,6 @@ static const TCGTargetOpDef s390_op_defs[] = {
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
>      { INDEX_op_call, { "ri" } },
> -    { INDEX_op_jmp, { "ri" } },
>      { INDEX_op_br, { } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
> diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
> index 8fd7f86..e82fab2 100644
> --- a/tcg/sparc/tcg-target.c
> +++ b/tcg/sparc/tcg-target.c
> @@ -1097,7 +1097,6 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode 
> opc, const TCGArg *args,
>          /* delay slot */
>          tcg_out_nop(s);
>          break;
> -    case INDEX_op_jmp:
>      case INDEX_op_br:
>          tcg_out_branch_i32(s, COND_A, args[0]);
>          tcg_out_nop(s);
> @@ -1367,7 +1366,6 @@ static const TCGTargetOpDef sparc_op_defs[] = {
>      { INDEX_op_exit_tb, { } },
>      { INDEX_op_goto_tb, { } },
>      { INDEX_op_call, { "ri" } },
> -    { INDEX_op_jmp, { "ri" } },
>      { INDEX_op_br, { } },
>
>      { INDEX_op_mov_i32, { "r", "r" } },
> diff --git a/tcg/tcg-opc.h b/tcg/tcg-opc.h
> index dbb0e39..04cb7ca 100644
> --- a/tcg/tcg-opc.h
> +++ b/tcg/tcg-opc.h
> @@ -38,7 +38,6 @@ DEF(discard, 1, 0, 0, 0)
>
>  DEF(set_label, 0, 0, 1, TCG_OPF_BB_END)
>  DEF(call, 0, 1, 2, TCG_OPF_SIDE_EFFECTS) /* variable number of parameters */
> -DEF(jmp, 0, 1, 0, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS)
>  DEF(br, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS)
>
>  #define IMPL(X) (X ? 0 : TCG_OPF_NOT_PRESENT)
> diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
> index d272a90..e930740 100644
> --- a/tcg/tci/tcg-target.c
> +++ b/tcg/tci/tcg-target.c
> @@ -69,7 +69,6 @@ static const TCGTargetOpDef tcg_target_op_defs[] = {
>      { INDEX_op_exit_tb, { NULL } },
>      { INDEX_op_goto_tb, { NULL } },
>      { INDEX_op_call, { RI } },
> -    { INDEX_op_jmp, { RI } },
>      { INDEX_op_br, { NULL } },
>
>      { INDEX_op_mov_i32, { R, R } },
> @@ -583,9 +582,6 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, 
> const TCGArg *args,
>      case INDEX_op_call:
>          tcg_out_ri(s, const_args[0], args[0]);
>          break;
> -    case INDEX_op_jmp:
> -        TODO();
> -        break;
>      case INDEX_op_setcond_i32:
>          tcg_out_r(s, args[0]);
>          tcg_out_r(s, args[1]);
> diff --git a/tci.c b/tci.c
> index a4f7b78..98f5f71 100644
> --- a/tci.c
> +++ b/tci.c
> @@ -505,7 +505,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *cpustate, 
> uint8_t *tb_ptr)
>              tci_write_reg(TCG_REG_R0, tmp64);
>  #endif
>              break;
> -        case INDEX_op_jmp:
>          case INDEX_op_br:
>              label = tci_read_label(&tb_ptr);
>              assert(tb_ptr == old_code_ptr + op_size);
> --
> 1.7.10.4
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]