[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/4] tcg/aarch64: more low level ops in preparat
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 1/4] tcg/aarch64: more low level ops in preparation of tlb, lookup |
Date: |
Fri, 31 May 2013 12:07:00 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 |
On 05/31/2013 10:57 AM, Jani Kokkonen wrote:
> + ARITH_SUBS = 0x6b,
Any reason you're adding SUBS here, but not ANDS?
> +/* encode a logical immediate, mapping user parameter
> + M=set bits pattern length to S=M-1 */
> +static inline unsigned int
> +aarch64_limm(unsigned int m, unsigned int r)
> +{
> + assert(m > 0);
> + return r << 16 | (m - 1) << 10;
> +}
> +
> +/* test a register against an immediate bit pattern made of
> + M set bits rotated right by R.
> + Examples:
> + to test a 32/64 reg against 0x00000007, pass M = 3, R = 0.
> + to test a 32/64 reg against 0x000000ff, pass M = 8, R = 0.
> + to test a 32bit reg against 0xff000000, pass M = 8, R = 8.
> + to test a 32bit reg against 0xff0000ff, pass M = 16, R = 8.
> + */
> +static inline void tcg_out_tst(TCGContext *s, int ext, TCGReg rn,
> + unsigned int m, unsigned int r)
> +{
> + /* using TST alias of ANDS XZR, Xn,#bimm64 0x7200001f */
> + unsigned int base = ext ? 0xf240001f : 0x7200001f;
> + tcg_out32(s, base | aarch64_limm(m, r) | rn << 5);
> +}
> +
> +/* and a register with a bit pattern, similarly to TST, no flags change */
> +static inline void tcg_out_andi(TCGContext *s, int ext, TCGReg rd, TCGReg rn,
> + unsigned int m, unsigned int r)
> +{
> + /* using AND 0x12000000 */
> + unsigned int base = ext ? 0x92400000 : 0x12000000;
> + tcg_out32(s, base | aarch64_limm(m, r) | rn << 5 | rd);
> +}
> +
This should be a separate patch, since it's not related to the tcg_out_arith
change.
r~
- [Qemu-devel] [PATCH 0/4] ARM aarch64 TCG tlb fast lookup, Jani Kokkonen, 2013/05/31
- [Qemu-devel] [PATCH 2/4] tcg/aarch64: implement byte swap operations, Jani Kokkonen, 2013/05/31
- [Qemu-devel] [PATCH 1/4] tcg/aarch64: more low level ops in preparation of tlb, lookup, Jani Kokkonen, 2013/05/31
- Re: [Qemu-devel] [PATCH 1/4] tcg/aarch64: more low level ops in preparation of tlb, lookup,
Richard Henderson <=
- [Qemu-devel] [PATCH 4/4] tcg/aarch64: implement tlb lookup fast path, Jani Kokkonen, 2013/05/31
- [Qemu-devel] [PATCH 3/4] tcg/aarch64: implement sign/zero extend operations, Jani Kokkonen, 2013/05/31