Go to file
Kyrylo Tkachov 2d56d6ba9c [AArch64][1/2] Implement TARGET_ESTIMATED_POLY_VALUE
The hook TARGET_ESTIMATED_POLY_VALUE allows a target to give an estimate for a poly_int run-time value.
It is used exclusively in tuning decisions, things like estimated loop iterations, probabilities etc.
It is not relied on for correctness.

If we know the SVE width implemented in hardware we can make more more
informed decisions in the implementation of TARGET_ESTIMATED_POLY_VALUE,
even when compiling for VLA vectorisation.

This patch adds an sve_width field to our tuning structs and sets it for
the current CPU tunings.

A new value is introduced to the aarch64_sve_vector_bits_enum enum that indicates
that SVE is not available: SVE_NOT_IMPLEMENTED. I set it to the same value as SVE_SCALABLE
so that parts of the aarch64 backend that follow the pattern:
if (vector_width == SVE_SCALABLE)
  do_vla_friendly_action ()
else
  assume_specific_width_for_correctness ()

continue to work without change, but the CPU tuning structs can use a more
appropriate moniker for indicating the absence of SVE.

This sets sve_width to SVE_NOT_IMPLEMENTED for all cores.
I aim to add an -moverride switch in the next patch that allows a power user to experiment
with different values of it for investigations.

	* config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum):
	Add SVE_NOT_IMPLEMENTED value.
	* config/aarch64/aarch64-protos.h (struct tune_params): Add sve_width
	field.
	* config/aarch64/aarch64.c (generic_tunings,cortexa35_tunings,
	cortexa53_tunings, cortexa57_tunings, cortexa72_tunings,
	cortexa73_tunings, exynosm1_tunings, thunderx_tunings,
	thunderx_tunings, tsv110_tunings, xgene1_tunings, qdf24xx_tunings,
	saphira_tunings, thunderx2t99_tunings, emag_tunings):
	Specify sve_width.
	(aarch64_estimated_poly_value): Define.
	(TARGET_ESTIMATED_POLY_VALUE): Define.

From-SVN: r266896
2018-12-07 16:48:39 +00:00
config
contrib
fixincludes
gcc [AArch64][1/2] Implement TARGET_ESTIMATED_POLY_VALUE 2018-12-07 16:48:39 +00:00
gnattools
gotools
include Add a recursion limit to libiberty's demangling code. The limit is enabled by default, but can be disabled via a new demangling option. 2018-12-07 10:33:30 +00:00
INSTALL
intl
libada
libatomic
libbacktrace [libbacktrace] Add tests for unused formats 2018-11-30 15:33:23 +00:00
libcc1
libcpp
libdecnumber
libffi
libgcc * udivmodhi4.c (__udivmodhi4): Fix loop end check. 2018-12-05 09:25:11 -05:00
libgfortran Use atomic load/store to access static backtrace state pointer 2018-12-02 17:12:44 +02:00
libgo runtime: add missing return for non-GNU/Linux version of tgkill 2018-12-07 14:22:55 +00:00
libgomp tree-nested.c (convert_nonlocal_omp_clauses, [...]): Handle OMP_CLAUSE_IN_REDUCTION... 2018-12-02 13:50:50 +01:00
libhsail-rt
libiberty Add a recursion limit to libiberty's demangling code. The limit is enabled by default, but can be disabled via a new demangling option. 2018-12-07 10:33:30 +00:00
libitm
libobjc
liboffloadmic
libphobos libphobos: Add support for RISCV to glibc bindings 2018-12-01 21:48:43 +00:00
libquadmath
libsanitizer
libssp
libstdc++-v3 Darwin fix libstdc++ build warnings. 2018-12-06 19:42:21 +00:00
libvtv
lto-plugin
maintainer-scripts
zlib
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
ar-lib
ChangeLog darwin - add configuration support for 'otool' 2018-12-05 21:57:00 +00:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in
config.guess
config.rpath
config.sub
configure darwin - add configuration support for 'otool' 2018-12-05 21:57:00 +00:00
configure.ac darwin - add configuration support for 'otool' 2018-12-05 21:57:00 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.RUNTIME
depcomp
install-sh
libtool-ldflags
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def
Makefile.in darwin - add configuration support for 'otool' 2018-12-05 21:57:00 +00:00
Makefile.tpl darwin - add configuration support for 'otool' 2018-12-05 21:57:00 +00:00
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
symlink-tree
test-driver
ylwrap

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.