[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 64/69] target/arm: Convert T16, shift immedia
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v3 64/69] target/arm: Convert T16, shift immediate |
Date: |
Thu, 29 Aug 2019 18:44:02 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 |
On 8/28/19 9:04 PM, Richard Henderson wrote:
> Reviewed-by: Peter Maydell <address@hidden>
> Signed-off-by: Richard Henderson <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> target/arm/translate.c | 26 ++------------------------
> target/arm/t16.decode | 8 ++++++++
> 2 files changed, 10 insertions(+), 24 deletions(-)
>
> diff --git a/target/arm/translate.c b/target/arm/translate.c
> index 5fb0e2066b..dd292b3042 100644
> --- a/target/arm/translate.c
> +++ b/target/arm/translate.c
> @@ -10731,7 +10731,7 @@ static void disas_thumb2_insn(DisasContext *s,
> uint32_t insn)
>
> static void disas_thumb_insn(DisasContext *s, uint32_t insn)
> {
> - uint32_t val, op, rm, rd, shift;
> + uint32_t val, rd;
> int32_t offset;
> TCGv_i32 tmp;
> TCGv_i32 tmp2;
> @@ -10743,29 +10743,7 @@ static void disas_thumb_insn(DisasContext *s,
> uint32_t insn)
> /* fall back to legacy decoder */
>
> switch (insn >> 12) {
> - case 0: case 1:
> -
> - rd = insn & 7;
> - op = (insn >> 11) & 3;
> - if (op == 3) {
> - /*
> - * 0b0001_1xxx_xxxx_xxxx
> - * - Add, subtract (three low registers)
> - * - Add, subtract (two low registers and immediate)
> - * In decodetree.
> - */
> - goto illegal_op;
> - } else {
> - /* shift immediate */
> - rm = (insn >> 3) & 7;
> - shift = (insn >> 6) & 0x1f;
> - tmp = load_reg(s, rm);
> - gen_arm_shift_im(tmp, op, shift, s->condexec_mask == 0);
> - if (!s->condexec_mask)
> - gen_logic_CC(tmp);
> - store_reg(s, rd, tmp);
> - }
> - break;
> + case 0: case 1: /* add/sub (3reg, 2reg imm), shift imm; in decodetree */
> case 2: case 3: /* add, sub, cmp, mov (reg, imm), in decodetree */
> goto illegal_op;
> case 4:
> diff --git a/target/arm/t16.decode b/target/arm/t16.decode
> index f128110dee..79a1d66d6c 100644
> --- a/target/arm/t16.decode
> +++ b/target/arm/t16.decode
> @@ -126,6 +126,14 @@ ADD_rri 10101 rd:3 ........ \
> STM 11000 ... ........ @ldstm
> LDM_t16 11001 ... ........ @ldstm
>
> +# Shift (immediate)
> +
> +@shift_i ..... shim:5 rm:3 rd:3 &s_rrr_shi %s rn=%reg_0
> +
> +MOV_rxri 000 00 ..... ... ... @shift_i shty=0 # LSL
> +MOV_rxri 000 01 ..... ... ... @shift_i shty=1 # LSR
> +MOV_rxri 000 10 ..... ... ... @shift_i shty=2 # ASR
> +
> # Add/subtract (three low registers)
>
> @addsub_3 ....... rm:3 rn:3 rd:3 \
>
- [Qemu-devel] [PATCH v3 54/69] target/arm: Convert T16 add, compare, move (two high registers), (continued)
- [Qemu-devel] [PATCH v3 54/69] target/arm: Convert T16 add, compare, move (two high registers), Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 56/69] target/arm: Convert T16, extract, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 66/69] target/arm: Convert T16, Unconditional branch, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 62/69] target/arm: Convert T16, Conditional branches, Supervisor call, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 45/69] target/arm: Add skeleton for T16 decodetree, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 51/69] target/arm: Convert T16 add/sub (3 low, 2 low and imm), Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 52/69] target/arm: Convert T16 one low register and immediate, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 57/69] target/arm: Convert T16, Change processor state, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 53/69] target/arm: Convert T16 branch and exchange, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 64/69] target/arm: Convert T16, shift immediate, Richard Henderson, 2019/08/28
- Re: [Qemu-devel] [PATCH v3 64/69] target/arm: Convert T16, shift immediate,
Philippe Mathieu-Daudé <=
- [Qemu-devel] [PATCH v3 58/69] target/arm: Convert T16, Reverse bytes, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 60/69] target/arm: Split gen_nop_hint, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 61/69] target/arm: Convert T16, push and pop, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 67/69] target/arm: Convert T16, long branches, Richard Henderson, 2019/08/28
- [Qemu-devel] [PATCH v3 65/69] target/arm: Convert T16, load (literal), Richard Henderson, 2019/08/28
- Re: [Qemu-devel] [PATCH v3 00/69] target/arm: Convert aa32 base isa to decodetree, no-reply, 2019/08/28