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. 2019-09-27 Richard Sandiford <richard.sandiford@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. From-SVN: r276177 |
||
---|---|---|
INSTALL | ||
config | ||
contrib | ||
fixincludes | ||
gcc | ||
gnattools | ||
gotools | ||
include | ||
intl | ||
libada | ||
libatomic | ||
libbacktrace | ||
libcc1 | ||
libcpp | ||
libdecnumber | ||
libffi | ||
libgcc | ||
libgfortran | ||
libgo | ||
libgomp | ||
libhsail-rt | ||
libiberty | ||
libitm | ||
libobjc | ||
liboffloadmic | ||
libphobos | ||
libquadmath | ||
libsanitizer | ||
libssp | ||
libstdc++-v3 | ||
libvtv | ||
lto-plugin | ||
maintainer-scripts | ||
zlib | ||
.dir-locals.el | ||
.gitattributes | ||
.gitignore | ||
ABOUT-NLS | ||
COPYING | ||
COPYING.LIB | ||
COPYING.RUNTIME | ||
COPYING3 | ||
COPYING3.LIB | ||
ChangeLog | ||
ChangeLog.jit | ||
ChangeLog.tree-ssa | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
README | ||
ar-lib | ||
compile | ||
config-ml.in | ||
config.guess | ||
config.rpath | ||
config.sub | ||
configure | ||
configure.ac | ||
depcomp | ||
install-sh | ||
libtool-ldflags | ||
libtool.m4 | ||
ltgcc.m4 | ||
ltmain.sh | ||
ltoptions.m4 | ||
ltsugar.m4 | ||
ltversion.m4 | ||
lt~obsolete.m4 | ||
missing | ||
mkdep | ||
mkinstalldirs | ||
move-if-change | ||
multilib.am | ||
symlink-tree | ||
test-driver | ||
ylwrap |
README
This directory contains the GNU Compiler Collection (GCC). The GNU Compiler Collection is free software. See the files whose names start with COPYING for copying permission. The manuals, and some of the runtime libraries, are under different terms; see the individual source files for details. The directory INSTALL contains copies of the installation information as HTML and plain text. The source of this information is gcc/doc/install.texi. The installation information includes details of what is included in the GCC sources and what files GCC installs. See the file gcc/doc/gcc.texi (together with other files that it includes) for usage and porting information. An online readable version of the manual is in the files gcc/doc/gcc.info*. See http://gcc.gnu.org/bugs/ for how to report bugs usefully. Copyright years on GCC source files may be listed using range notation, e.g., 1987-2012, indicating that every year in the range, inclusive, is a copyrightable year that could otherwise be listed individually.