qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [RFC PATCH v3 25/34] Hexagon (target/hexagon) macros to interface wi


From: Taylor Simpson
Subject: RE: [RFC PATCH v3 25/34] Hexagon (target/hexagon) macros to interface with the generator
Date: Sun, 30 Aug 2020 20:30:36 +0000


> -----Original Message-----
> From: Richard Henderson <richard.henderson@linaro.org>
> Sent: Friday, August 28, 2020 6:49 PM
> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org
> Cc: philmd@redhat.com; laurent@vivier.eu; riku.voipio@iki.fi;
> aleksandar.m.mail@gmail.com; ale@rev.ng
> Subject: Re: [RFC PATCH v3 25/34] Hexagon (target/hexagon) macros to
> interface with the generator
>
> On 8/18/20 8:50 AM, Taylor Simpson wrote:
> > +#define DECL_REG(NAME, NUM, X, OFF) \
> > +    TCGv NAME = tcg_temp_local_new(); \
> > +    int NUM = REGNO(X) + OFF
> > +
> > +#define DECL_REG_WRITABLE(NAME, NUM, X, OFF) \
> > +    TCGv NAME = tcg_temp_local_new(); \
> > +    int NUM = REGNO(X) + OFF; \
> > +    do { \
> > +        int is_predicated = GET_ATTRIB(insn->opcode, A_CONDEXEC); \
> > +        if (is_predicated && !is_preloaded(ctx, NUM)) { \
> > +            tcg_gen_mov_tl(hex_new_value[NUM], hex_gpr[NUM]); \
> > +        } \
> > +    } while (0)
> > +/*
> > + * For read-only temps, avoid allocating and freeing
> > + */
> > +#define DECL_REG_READONLY(NAME, NUM, X, OFF) \
> > +    TCGv NAME; \
> > +    int NUM = REGNO(X) + OFF
> > +
> > +#define DECL_RREG_d(NAME, NUM, X, OFF) \
> > +    DECL_REG_WRITABLE(NAME, NUM, X, OFF)
> > +#define DECL_RREG_e(NAME, NUM, X, OFF) \
> > +    DECL_REG(NAME, NUM, X, OFF)
>
> Is there a good reason for all these macros?
> Why not just bake this knowledge into gen_tcg_funcs.py?
> Seems like it would be just a couple of functions...
>
> At present, both this and the intermediary files are unreadable.  One has to
> pass genptr.c through -E and indent to see what's going on.

I add the regid (see comment in hex_common.py) in order to reduce the number of 
TCGv temps and TCG code we generate.  I originally had a single 
DEF/READ/WRITE/FREE set.  We would always create a TCGv and copy to/from the 
temp.  In read-only cases, we don't need a temp - we just point to the source.  
For write-only, we assign directly to the new_value.  For read-write, we 
actually need the temp.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]