On Wed, Aug 07, 2019 at 08:28:50PM +0100, Richard Sandiford wrote:
> It was easier to add the SVE ACLE support without enumerating every
> function at build time.  This in turn meant that it was easier if the
> SVE builtins occupied a distinct numberspace from the existing AArch64
> ones, which *are* enumerated at build time.  This patch therefore
> divides the built-in functions codes into "major" and "minor" codes.
> At present the major code is just "general", but the SVE patch will add
> "SVE" as well.
> 
> Also, it was convenient to put the SVE ACLE support in its own file,
> so the patch makes aarch64.c provide the frontline target hooks directly,
> forwarding to the other files for the real work.
> 
> The reason for organising the files this way is that aarch64.c needs
> to define the target hook macros whatever happens, and having aarch64.c
> macros forward to aarch64-builtins.c functions and aarch64-bulitins.c
> functions forward to the SVE file seemed a bit indirect.  Doing things
> the way the patch does them puts aarch64-builtins.c and the SVE code on
> more of an equal footing.
> 
> The aarch64_(general_)gimple_fold_builtin change is mostly just
> reindentation.  I've attached a -b version of the diff as well.
> 
> Tested on aarch64-linux-gnu (with and without SVE) and aarch64_be-elf.
> OK to install when the ACLE patch itself is ready to install?

OK.

Thanks,
James

> 
> Richard
> 
> 
> 2019-08-07  Richard Sandiford  <richard.sandif...@arm.com>
> 
> gcc/
>       * config/aarch64/aarch64-protos.h (aarch64_builtin_class): New enum.
>       (AARCH64_BUILTIN_SHIFT, AARCH64_BUILTIN_CLASS): New constants.
>       (aarch64_gimple_fold_builtin, aarch64_mangle_builtin_type)
>       (aarch64_fold_builtin, aarch64_init_builtins, aarch64_expand_builtin):
>       (aarch64_builtin_decl, aarch64_builtin_rsqrt): Delete.
>       (aarch64_general_mangle_builtin_type, aarch64_general_init_builtins):
>       (aarch64_general_fold_builtin, aarch64_general_gimple_fold_builtin):
>       (aarch64_general_expand_builtin, aarch64_general_builtin_decl):
>       (aarch64_general_builtin_rsqrt): Declare.
>       * config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin):
>       New function.
>       (aarch64_mangle_builtin_type): Rename to...
>       (aarch64_general_mangle_builtin_type): ...this.
>       (aarch64_init_fcmla_laneq_builtins, aarch64_init_simd_builtins)
>       (aarch64_init_crc32_builtins, aarch64_init_builtin_rsqrt)
>       (aarch64_init_pauth_hint_builtins, aarch64_init_tme_builtins): Use
>       aarch64_general_add_builtin instead of add_builtin_function.
>       (aarch64_init_builtins): Rename to...
>       (aarch64_general_init_builtins): ...this.  Use
>       aarch64_general_add_builtin instead of add_builtin_function.
>       (aarch64_builtin_decl): Rename to...
>       (aarch64_general_builtin_decl): ...this and remove the unused
>       arguments.
>       (aarch64_expand_builtin): Rename to...
>       (aarch64_general_expand_builtin): ...this and remove the unused
>       arguments.
>       (aarch64_builtin_rsqrt): Rename to...
>       (aarch64_general_builtin_rsqrt): ...this.
>       (aarch64_fold_builtin): Rename to...
>       (aarch64_general_fold_builtin): ...this.  Take the function subcode
>       and return type as arguments.  Remove the "ignored" argument.
>       (aarch64_gimple_fold_builtin): Rename to...
>       (aarch64_general_gimple_fold_builtin): ...this.  Take the function
>       subcode and gcall as arguments, and return the new function call.
>       * config/aarch64/aarch64.c (aarch64_init_builtins)
>       (aarch64_fold_builtin, aarch64_gimple_fold_builtin)
>       (aarch64_expand_builtin, aarch64_builtin_decl): New functions.
>       (aarch64_builtin_reciprocal): Call aarch64_general_builtin_rsqrt
>       instead of aarch64_builtin_rsqrt.
>       (aarch64_mangle_type): Call aarch64_general_mangle_builtin_type
>       instead of aarch64_mangle_builtin_type.
> 

Reply via email to