[Top][All Lists]
[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
>