[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/13] target-arm: A64: add support for bitfield
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 10/13] target-arm: A64: add support for bitfield insns |
Date: |
Fri, 06 Dec 2013 12:05:05 +1300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 |
On 12/06/2013 10:51 AM, Peter Maydell wrote:
> From: Claudio Fontana <address@hidden>
>
> This patch implements the C3.4.2 Bitfield instructions:
> SBFM, BFM, UBFM.
>
> Signed-off-by: Claudio Fontana <address@hidden>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> target-arm/translate-a64.c | 54
> ++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 52 insertions(+), 2 deletions(-)
Reviewed-by: Richard Henderson <address@hidden>
> + if (opc != 1) { /* SBFM or UBFM */
> + tcg_gen_movi_i64(tcg_rd, 0);
> + }
> +
> + /* do the bit move operation */
> + if (si >= ri) {
> + /* Wd<s-r:0> = Wn<s:r> */
> + tcg_gen_shri_i64(tcg_tmp, tcg_tmp, ri);
> + pos = 0;
> + len = (si - ri) + 1;
> + } else {
> + /* Wd<32+s-r,32-r> = Wn<s:0> */
> + pos = bitsize - ri;
> + len = si + 1;
> + }
> +
> + tcg_gen_deposit_i64(tcg_rd, tcg_rd, tcg_tmp, pos, len);
> +
> + if (opc == 0) { /* SBFM - sign extend the destination field */
> + tcg_gen_shli_i64(tcg_rd, tcg_rd, 64 - (pos + len));
> + tcg_gen_sari_i64(tcg_rd, tcg_rd, 64 - (pos + len));
> + }
OPTME: It's probably worth recognizing the common cases of ext{8,16,32}{u,s}.
r~
- [Qemu-devel] [PATCH 00/13] target-arm: A64 decoder set 2: misc logic and bit ops, Peter Maydell, 2013/12/05
- [Qemu-devel] [PATCH 08/13] target-arm: A64: add support for 1-src RBIT insn, Peter Maydell, 2013/12/05
- [Qemu-devel] [PATCH 10/13] target-arm: A64: add support for bitfield insns, Peter Maydell, 2013/12/05
- Re: [Qemu-devel] [PATCH 10/13] target-arm: A64: add support for bitfield insns,
Richard Henderson <=
- [Qemu-devel] [PATCH 13/13] target-arm: A64: add support for logical (immediate) insns, Peter Maydell, 2013/12/05
- [Qemu-devel] [PATCH 04/13] target-arm: A64: add support for EXTR, Peter Maydell, 2013/12/05
- [Qemu-devel] [PATCH 01/13] target-arm: A64: add support for conditional select, Peter Maydell, 2013/12/05