[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.
- RE: [RFC PATCH v3 26/34] Hexagon (target/hexagon) macros referenced in instruction semantics, (continued)
[RFC PATCH v3 24/34] Hexagon (target/hexagon) opcode data structures, Taylor Simpson, 2020/08/18
[RFC PATCH v3 18/34] Hexagon (target/hexagon/imported) arch import - instruction semantics, Taylor Simpson, 2020/08/18
[RFC PATCH v3 19/34] Hexagon (target/hexagon/imported) arch import - instruction encoding, Taylor Simpson, 2020/08/18
[RFC PATCH v3 25/34] Hexagon (target/hexagon) macros to interface with the generator, Taylor Simpson, 2020/08/18
[RFC PATCH v3 20/34] Hexagon (target/hexagon) generator phase 1 - C preprocessor for semantics, Taylor Simpson, 2020/08/18
[RFC PATCH v3 28/34] Hexagon (target/hexagon) TCG generation helpers, Taylor Simpson, 2020/08/18
[RFC PATCH v3 29/34] Hexagon (target/hexagon) TCG generation, Taylor Simpson, 2020/08/18