On Wed, 2020-06-17 at 14:46 -0500, Bill Schmidt wrote:
> I posted a version of these patches back in stage 4 (February),
> but we agreed that holding off until stage 1 was a better idea.
> Since then I've made more progress and reorganized the patches
> accordingly.  This group of patches lays groundwork, but does not
> actually change GCC's behavior yet, other than to generate the
> new initialization information and ignore it.
> 
> The current built-in support in the rs6000 back end requires at least
> a master's degree in spelunking to comprehend.  It's full of cruft,
> redundancy, and unused bits of code, and long overdue for a
> replacement.  This is the first part of my project to do that.
> 
> My intent is to make adding new built-in functions as simple as
> adding
> a few lines to a couple of files, and automatically generating as
> much
> of the initialization, overload resolution, and expansion logic as
> possible.  This patch series establishes the format of the input
> files
> and creates a new program (rs6000-gen-builtins) to:
> 
>  * Parse the input files into an internal representation;
>  * Generate a file of #defines (rs6000-vecdefines.h) for eventual
>    inclusion into altivec.h; and
>  * Generate an initialization file to create and initialize tables of
>    built-in functions and overloads.
> 
> Patches 1, 3-7, and 9-19 contain the logic for rs6000-gen-builtins.
> Patch 8 provides balanced tree search support for parsing
> scalability.
> Patches 2 and 21-27 provide a first cut at the input files.
> Patch 20 incorporates the new code into the GCC build.
> Patch 28 adds comments to some existing files that will help
> during the transition from the previous builtin mechanism.
> 
> The patch series is constructed so that any prefix set of the patches
> can be upstreamed without breaking anything, so we can take the
> reviews slowly.  There's still plenty of work left, but I think it
> will be helpful to get this big chunk of patches upstream to make
> further progress easier.
> 
> Thanks in advance for your reviews!
> 

I've read through the series.  Nothing significant, just a few cosmetic
nits, i've called them out below here, versus replying to the
individual emails.  

generally lgtm.  
thanks
-Will


> 
> Bill Schmidt (28):
>   rs6000: Initial create of rs6000-gen-builtins.c
ok
>   rs6000: Add initial input files
Whitespace/tabs in "Legal values of <vectype>" blurb.
otherwise ok
>   rs6000: Add file support and functions for diagnostic support
ok
>   rs6000: Add helper functions for parsing
ok
>   rs6000: Add functions for matching types, part 1 of 3
ok

>   rs6000: Add functions for matching types, part 2 of 3
ok

>   rs6000: Add functions for matching types, part 3 of 3
ok

>   rs6000: Red-black tree implementation for balanced tree search
ok

>   rs6000: Main function with stubs for parsing and output
ok

>   rs6000: Parsing built-in input file, part 1 of 3
ok
>   rs6000: Parsing built-in input file, part 2 of 3
ok
>   rs6000: Parsing built-in input file, part 3 of 3
ok
>   rs6000: Parsing of overload input file
use enums or consts instead of hardcoding values ? 

>   rs6000: Build and store function type identifiers
ok

>   rs6000: Write output to the vector definition include file
ok

>   rs6000: Write output to the builtins header file

Nit, i'd probably add a 'FIXME' keyword near the "_x" conflict
avoidance so this is easy to find later on.  That said, this is rather
obvious, so nbd. :-)
ok.

>   rs6000: Write output to the builtins init file, part 1 of 3
BILLDEBUG reference should probably be culled. :-)
ok

>   rs6000: Write output to the builtins init file, part 2 of 3
ok

>   rs6000: Write output to the builtins init file, part 3 of 3
ok

>   rs6000: Incorporate new builtins code into the build machinery
ok

>   rs6000: Add remaining MASK_ALTIVEC builtins

A few very long lines (__builtin_vec_init_v16qi, etc) ; but I think
those are fine.
ok

>   rs6000: Add MASK_VSX builtins

For the pick-one-or-the-other, i'd tend to the generic looking one. 
i.e.
const vf __builtin_vsx_xvcvuxwsp(vui);
     CVCVUXWSP_V4SF vsx_xvcvuxwsp {}
.. looks better to me.  Though there may be subtlety that I don't
understand.
ok

>   rs6000: Add available-everywhere and ancient builtins

No opinion or thoughts on the packtf or unpacktf entries.
ok

>   rs6000: Add Power7 builtins
ok
>   rs6000: Add MASK_P8_VECTOR builtins
ok
>   rs6000: Add MASK_P9_VECTOR and MASK_P9_MISC builtins
ok

>   rs6000: Add remaining builtins
ok

>   rs6000: Add comments to help with transition

Are the deprecations old enough that these can be dropped outright?

ok


> 
>  gcc/config.gcc                           |    3 +-
>  gcc/config/rs6000/rbtree.c               |  233 ++
>  gcc/config/rs6000/rbtree.h               |   51 +
>  gcc/config/rs6000/rs6000-builtin-new.def | 2965
> ++++++++++++++++++++++
>  gcc/config/rs6000/rs6000-builtin.def     |   15 +
>  gcc/config/rs6000/rs6000-call.c          |  166 ++
>  gcc/config/rs6000/rs6000-gen-builtins.c  | 2586 +++++++++++++++++++
>  gcc/config/rs6000/rs6000-overload.def    |   57 +
>  gcc/config/rs6000/t-rs6000               |   25 +-
>  9 files changed, 6099 insertions(+), 2 deletions(-)
>  create mode 100644 gcc/config/rs6000/rbtree.c
>  create mode 100644 gcc/config/rs6000/rbtree.h
>  create mode 100644 gcc/config/rs6000/rs6000-builtin-new.def
>  create mode 100644 gcc/config/rs6000/rs6000-gen-builtins.c
>  create mode 100644 gcc/config/rs6000/rs6000-overload.def
> 

Reply via email to