[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 02/13] target-arm: A64: add support for logical
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 02/13] target-arm: A64: add support for logical (shifted register) |
Date: |
Fri, 06 Dec 2013 11:39:15 +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:
> + if (invert) {
> + tcg_gen_not_i64(tcg_rm, tcg_rm);
> + }
> +
> + tcg_rd = cpu_reg(s, rd);
> + tcg_rn = cpu_reg(s, rn);
> +
> + switch (opc) {
> + case 0: /* AND, BIC */
> + case 3: /* ANDS, BICS */
> + tcg_gen_and_i64(tcg_rd, tcg_rn, tcg_rm);
> + break;
> + case 1: /* ORR, ORN */
> + tcg_gen_or_i64(tcg_rd, tcg_rn, tcg_rm);
> + break;
> + case 2: /* EOR, EON */
> + tcg_gen_xor_i64(tcg_rd, tcg_rn, tcg_rm);
> + break;
> + default:
> + assert(FALSE);
> + break;
> + }
While correct, surely better to work with tcg and select on opc:invert to
generate andc/orc/eqv?
Also, isn't MOV (register) canonical for ORR (rn=31 && shift_amount=0), and MVN
(register) canonical for ORN (rn=31 && shift_amount=0), and both therefore also
worth a special case?
r~
- Re: [Qemu-devel] [PATCH 05/13] target-arm: A64: add support for 2-src data processing and DIV, (continued)
[Qemu-devel] [PATCH 03/13] target-arm: A64: add support for ADR and ADRP, Peter Maydell, 2013/12/05
[Qemu-devel] [PATCH 06/13] target-arm: A64: add support for 2-src shift reg insns, Peter Maydell, 2013/12/05
[Qemu-devel] [PATCH 02/13] target-arm: A64: add support for logical (shifted register), Peter Maydell, 2013/12/05
- Re: [Qemu-devel] [PATCH 02/13] target-arm: A64: add support for logical (shifted register),
Richard Henderson <=
[Qemu-devel] [PATCH 12/13] target-arm: A64: add support for 1-src CLS insn, Peter Maydell, 2013/12/05
[Qemu-devel] [PATCH 09/13] target-arm: A64: add support for 1-src REV insns, Peter Maydell, 2013/12/05