All of lore.kernel.org
 help / color / mirror / Atom feed
From: Claudio Fontana <claudio.fontana@huawei.com>
To: Richard Henderson <rth@twiddle.net>, qemu-devel@nongnu.org
Cc: claudio.fontana@gmail.com
Subject: Re: [Qemu-devel] [PATCH v3 24/26] tcg-aarch64: Replace aarch64_ldst_op_data with AArch64LdstType
Date: Fri, 11 Apr 2014 14:35:09 +0200	[thread overview]
Message-ID: <5347E17D.7080300@huawei.com> (raw)
In-Reply-To: <5342B6DF.5060801@twiddle.net>

Reviewed-by: Claudio Fontana <claudio.fontana@huawei.com>

On 07.04.2014 16:31, Richard Henderson wrote:
> On 04/07/2014 04:45 AM, Claudio Fontana wrote:
>> On 03.04.2014 21:56, Richard Henderson wrote:
>>> The definition of op_type wasn't encoded for the proper shift for
>>> the field, making the implementations confusing.
>>>
>>> Signed-off-by: Richard Henderson <rth@twiddle.net>
>>
>> At the end of the day the magic values remain in the load/store instructions though.
>> Can we find a way to replace them with INSN_-something like for the others?
>>
>> I think I was doing something of the sort in a now obsolete patch I suggested some time early this year, see if it helps:
>>
>> http://lists.gnu.org/archive/html/qemu-devel/2014-02/msg05074.html
> 
> Yes, we can.  I'll do something for v3,
> 
>>
>> Claudio
>>
>>> ---
>>>  tcg/aarch64/tcg-target.c | 42 +++++++++++++++++-------------------------
>>>  1 file changed, 17 insertions(+), 25 deletions(-)
>>>
>>> diff --git a/tcg/aarch64/tcg-target.c b/tcg/aarch64/tcg-target.c
>>> index 9a2e4a6..a538a87 100644
>>> --- a/tcg/aarch64/tcg-target.c
>>> +++ b/tcg/aarch64/tcg-target.c
>>> @@ -242,12 +242,12 @@ static const enum aarch64_cond_code tcg_cond_to_aarch64[] = {
>>>      [TCG_COND_LEU] = COND_LS,
>>>  };
>>>  
>>> -enum aarch64_ldst_op_type { /* type of operation */
>>> -    LDST_ST = 0x0,    /* store */
>>> -    LDST_LD = 0x4,    /* load */
>>> -    LDST_LD_S_X = 0x8,  /* load and sign-extend into Xt */
>>> -    LDST_LD_S_W = 0xc,  /* load and sign-extend into Wt */
>>> -};
>>> +typedef enum {
>>> +    LDST_ST = 0,    /* store */
>>> +    LDST_LD = 1,    /* load */
>>> +    LDST_LD_S_X = 2,  /* load and sign-extend into Xt */
>>> +    LDST_LD_S_W = 3,  /* load and sign-extend into Wt */
>>> +} AArch64LdstType;
>>>  
>>>  /* We encode the format of the insn into the beginning of the name, so that
>>>     we can have the preprocessor help "typecheck" the insn vs the output
>>> @@ -483,22 +483,19 @@ static void tcg_out_insn_3509(TCGContext *s, AArch64Insn insn, TCGType ext,
>>>  }
>>>  
>>>  
>>> -static inline void tcg_out_ldst_9(TCGContext *s, TCGMemOp size,
>>> -                                  enum aarch64_ldst_op_type op_type,
>>> -                                  TCGReg rd, TCGReg rn, intptr_t offset)
>>> +static void tcg_out_ldst_9(TCGContext *s, TCGMemOp size, AArch64LdstType type,
>>> +                           TCGReg rd, TCGReg rn, intptr_t offset)
>>>  {
>>>      /* use LDUR with BASE register with 9bit signed unscaled offset */
>>> -    tcg_out32(s, 0x38000000 | size << 30 | op_type << 20
>>> +    tcg_out32(s, 0x38000000 | size << 30 | type << 22
>>>                | (offset & 0x1ff) << 12 | rn << 5 | rd);
>>>  }
>>>  
>>>  /* tcg_out_ldst_12 expects a scaled unsigned immediate offset */
>>> -static inline void tcg_out_ldst_12(TCGContext *s, TCGMemOp size,
>>> -                                   enum aarch64_ldst_op_type op_type,
>>> -                                   TCGReg rd, TCGReg rn,
>>> -                                   tcg_target_ulong scaled_uimm)
>>> +static void tcg_out_ldst_12(TCGContext *s, TCGMemOp size, AArch64LdstType type,
>>> +                            TCGReg rd, TCGReg rn, tcg_target_ulong scaled_uimm)
>>>  {
>>> -    tcg_out32(s, 0x39000000 | size << 30 | op_type << 20
>>> +    tcg_out32(s, 0x39000000 | size << 30 | type << 22
>>>                | scaled_uimm << 10 | rn << 5 | rd);
>>>  }
>>>  
>>> @@ -637,21 +634,16 @@ static void tcg_out_movi(TCGContext *s, TCGType type, TCGReg rd,
>>>      }
>>>  }
>>>  
>>> -static inline void tcg_out_ldst_r(TCGContext *s, TCGMemOp size,
>>> -                                  enum aarch64_ldst_op_type op_type,
>>> -                                  TCGReg rd, TCGReg base, TCGReg regoff)
>>> +static void tcg_out_ldst_r(TCGContext *s, TCGMemOp size, AArch64LdstType type,
>>> +                           TCGReg rd, TCGReg base, TCGReg regoff)
>>>  {
>>> -    /* load from memory to register using base + 64bit register offset */
>>> -    /* using f.e. STR Wt, [Xn, Xm] 0xb8600800|(regoff << 16)|(base << 5)|rd */
>>> -    /* the 0x6000 is for the "no extend field" */
>>> -    tcg_out32(s, 0x38206800 | size << 30 | op_type << 20
>>> +    tcg_out32(s, 0x38206800 | size << 30 | type << 22
>>>                | regoff << 16 | base << 5 | rd);
>>>  }
>>>  
>>>  /* solve the whole ldst problem */
>>> -static inline void tcg_out_ldst(TCGContext *s, TCGMemOp size,
>>> -                                enum aarch64_ldst_op_type type,
>>> -                                TCGReg rd, TCGReg rn, intptr_t offset)
>>> +static void tcg_out_ldst(TCGContext *s, TCGMemOp size, AArch64LdstType type,
>>> +                         TCGReg rd, TCGReg rn, intptr_t offset)
>>>  {
>>>      if (offset >= -256 && offset < 256) {
>>>          tcg_out_ldst_9(s, size, type, rd, rn, offset);
>>>
>>
> 
> 


-- 
Claudio Fontana
Server Virtualization Architect
Huawei Technologies Duesseldorf GmbH
Riesstraße 25 - 80992 München

office: +49 89 158834 4135
mobile: +49 15253060158

  reply	other threads:[~2014-04-11 12:35 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-03 19:56 [Qemu-devel] [PATCH v2 00/26] tcg-aarch64 improvements, part 3 Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 01/26] tcg-aarch64: Properly detect SIGSEGV writes Richard Henderson
2014-04-07  7:58   ` Claudio Fontana
2014-04-07 16:33     ` Richard Henderson
2014-04-07 16:39   ` Peter Maydell
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 02/26] tcg-aarch64: Use intptr_t apropriately Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 03/26] tcg-aarch64: Use TCGType and TCGMemOp constants Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 04/26] tcg-aarch64: Use MOVN in tcg_out_movi Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 05/26] tcg-aarch64: Use ORRI " Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 06/26] tcg-aarch64: Special case small constants " Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 07/26] tcg-aarch64: Use adrp " Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 08/26] tcg-aarch64: Use symbolic names for branches Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 09/26] tcg-aarch64: Create tcg_out_brcond Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 10/26] tcg-aarch64: Use CBZ and CBNZ Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 11/26] tcg-aarch64: Reuse LR in translated code Richard Henderson
2014-04-07  8:03   ` Claudio Fontana
2014-04-07  9:49     ` Peter Maydell
2014-04-07 11:11       ` Claudio Fontana
2014-04-07 11:28         ` Peter Maydell
2014-04-11 12:33   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 12/26] tcg-aarch64: Introduce tcg_out_insn_3314 Richard Henderson
2014-04-11 12:34   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 13/26] tcg-aarch64: Implement tcg_register_jit Richard Henderson
2014-04-11 12:34   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 14/26] tcg-aarch64: Avoid add with zero in tlb load Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 15/26] tcg-aarch64: Use tcg_out_call for qemu_ld/st Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 16/26] tcg-aarch64: Use ADR to pass the return address to the ld/st helpers Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 17/26] tcg-aarch64: Use TCGMemOp in qemu_ld/st Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 18/26] tcg-aarch64: Pass qemu_ld/st arguments directly Richard Henderson
2014-04-11 12:34   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 19/26] tcg-aarch64: Implement TCG_TARGET_HAS_new_ldst Richard Henderson
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 20/26] tcg-aarch64: Support stores of zero Richard Henderson
2014-04-11 12:34   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 21/26] tcg-aarch64: Introduce tcg_out_insn_3507 Richard Henderson
2014-04-09 12:54   ` Claudio Fontana
2014-04-09 17:17     ` Richard Henderson
2014-04-11 12:36   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 22/26] tcg-aarch64: Merge aarch64_ldst_get_data/type into tcg_out_op Richard Henderson
2014-04-11 12:34   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 23/26] tcg-aarch64: Replace aarch64_ldst_op_data with TCGMemOp Richard Henderson
2014-04-11 12:35   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 24/26] tcg-aarch64: Replace aarch64_ldst_op_data with AArch64LdstType Richard Henderson
2014-04-07 11:45   ` Claudio Fontana
2014-04-07 14:31     ` Richard Henderson
2014-04-11 12:35       ` Claudio Fontana [this message]
2014-04-07 18:34     ` [Qemu-devel] [PATCH 27/26] tcg-aarch64: Introduce tcg_out_insn_3312, _3310, _3313 Richard Henderson
2014-04-08  9:00       ` Claudio Fontana
2014-04-11 12:36       ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 25/26] tcg-aarch64: Prefer unsigned offsets before signed offsets for ldst Richard Henderson
2014-04-11 12:35   ` Claudio Fontana
2014-04-03 19:56 ` [Qemu-devel] [PATCH v3 26/26] tcg-aarch64: Use tcg_out_mov in preference to tcg_out_movr Richard Henderson
2014-04-11 12:36   ` Claudio Fontana

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5347E17D.7080300@huawei.com \
    --to=claudio.fontana@huawei.com \
    --cc=claudio.fontana@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.