mirror of git://gcc.gnu.org/git/gcc.git
parent
616e2b4a9a
commit
e357a5e03c
|
|
@ -1,3 +1,12 @@
|
||||||
|
2015-12-17 Sebastian Pop <s.pop@samsung.com>
|
||||||
|
|
||||||
|
* Makefile.in: Replace ISL with isl.
|
||||||
|
* Makefile.tpl: Same.
|
||||||
|
* config/isl.m4: Same.
|
||||||
|
* configure.ac: Same.
|
||||||
|
* contrib/download_prerequisites: Same.
|
||||||
|
* configure: Regenerate.
|
||||||
|
|
||||||
2015-12-17 Andris Pavenis <andris.pavenis@iki.fi>
|
2015-12-17 Andris Pavenis <andris.pavenis@iki.fi>
|
||||||
|
|
||||||
* MAINTAINERS (Write After Approval): Add Myself.
|
* MAINTAINERS (Write After Approval): Add Myself.
|
||||||
|
|
|
||||||
|
|
@ -312,7 +312,7 @@ NORMAL_TARGET_EXPORTS = \
|
||||||
HOST_GMPLIBS = @gmplibs@
|
HOST_GMPLIBS = @gmplibs@
|
||||||
HOST_GMPINC = @gmpinc@
|
HOST_GMPINC = @gmpinc@
|
||||||
|
|
||||||
# Where to find ISL
|
# Where to find isl
|
||||||
HOST_ISLLIBS = @isllibs@
|
HOST_ISLLIBS = @isllibs@
|
||||||
HOST_ISLINC = @islinc@
|
HOST_ISLINC = @islinc@
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -315,7 +315,7 @@ NORMAL_TARGET_EXPORTS = \
|
||||||
HOST_GMPLIBS = @gmplibs@
|
HOST_GMPLIBS = @gmplibs@
|
||||||
HOST_GMPINC = @gmpinc@
|
HOST_GMPINC = @gmpinc@
|
||||||
|
|
||||||
# Where to find ISL
|
# Where to find isl
|
||||||
HOST_ISLLIBS = @isllibs@
|
HOST_ISLLIBS = @isllibs@
|
||||||
HOST_ISLINC = @islinc@
|
HOST_ISLINC = @islinc@
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ AC_DEFUN([ISL_REQUESTED],
|
||||||
|
|
||||||
# ISL_CHECK_VERSION ISL_CHECK_VERSION ()
|
# ISL_CHECK_VERSION ISL_CHECK_VERSION ()
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# Test that ISL contains functionality added to the minimum expected version.
|
# Test whether isl contains functionality added to the minimum expected version.
|
||||||
AC_DEFUN([ISL_CHECK_VERSION],
|
AC_DEFUN([ISL_CHECK_VERSION],
|
||||||
[
|
[
|
||||||
if test "${ENABLE_ISL_CHECK}" = yes ; then
|
if test "${ENABLE_ISL_CHECK}" = yes ; then
|
||||||
|
|
|
||||||
|
|
@ -1549,7 +1549,7 @@ Optional Packages:
|
||||||
--with-boot-libs=LIBS libraries for stage2 and later
|
--with-boot-libs=LIBS libraries for stage2 and later
|
||||||
--with-boot-ldflags=FLAGS
|
--with-boot-ldflags=FLAGS
|
||||||
linker flags for stage2 and later
|
linker flags for stage2 and later
|
||||||
--with-isl=PATH Specify prefix directory for the installed ISL
|
--with-isl=PATH Specify prefix directory for the installed isl
|
||||||
package. Equivalent to
|
package. Equivalent to
|
||||||
--with-isl-include=PATH/include plus
|
--with-isl-include=PATH/include plus
|
||||||
--with-isl-lib=PATH/lib
|
--with-isl-lib=PATH/lib
|
||||||
|
|
@ -5943,7 +5943,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# GCC GRAPHITE dependency ISL.
|
# GCC GRAPHITE dependency isl.
|
||||||
# Basic setup is inlined here, actual checks are in config/isl.m4
|
# Basic setup is inlined here, actual checks are in config/isl.m4
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -5956,7 +5956,7 @@ fi
|
||||||
# Treat --without-isl as a request to disable
|
# Treat --without-isl as a request to disable
|
||||||
# GRAPHITE support and skip all following checks.
|
# GRAPHITE support and skip all following checks.
|
||||||
if test "x$with_isl" != "xno"; then
|
if test "x$with_isl" != "xno"; then
|
||||||
# Check for ISL
|
# Check for isl
|
||||||
|
|
||||||
|
|
||||||
# Check whether --with-isl-include was given.
|
# Check whether --with-isl-include was given.
|
||||||
|
|
@ -6079,13 +6079,13 @@ $as_echo "recommended isl version is 0.15, minimum required isl version 0.14 is
|
||||||
&& test "x${isllibs}" = x \
|
&& test "x${isllibs}" = x \
|
||||||
&& test "x${islinc}" = x ; then
|
&& test "x${islinc}" = x ; then
|
||||||
|
|
||||||
as_fn_error "Unable to find a usable ISL. See config.log for details." "$LINENO" 5
|
as_fn_error "Unable to find a usable isl. See config.log for details." "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If the ISL check failed, disable builds of in-tree variant of ISL
|
# If the isl check failed, disable builds of in-tree variant of isl
|
||||||
if test "x$with_isl" = xno ||
|
if test "x$with_isl" = xno ||
|
||||||
test "x$gcc_cv_isl" = xno; then
|
test "x$gcc_cv_isl" = xno; then
|
||||||
noconfigdirs="$noconfigdirs isl"
|
noconfigdirs="$noconfigdirs isl"
|
||||||
|
|
|
||||||
14
configure.ac
14
configure.ac
|
|
@ -1773,31 +1773,31 @@ AC_ARG_WITH(boot-ldflags,
|
||||||
fi])
|
fi])
|
||||||
AC_SUBST(poststage1_ldflags)
|
AC_SUBST(poststage1_ldflags)
|
||||||
|
|
||||||
# GCC GRAPHITE dependency ISL.
|
# GCC GRAPHITE dependency isl.
|
||||||
# Basic setup is inlined here, actual checks are in config/isl.m4
|
# Basic setup is inlined here, actual checks are in config/isl.m4
|
||||||
|
|
||||||
AC_ARG_WITH(isl,
|
AC_ARG_WITH(isl,
|
||||||
[AS_HELP_STRING(
|
[AS_HELP_STRING(
|
||||||
[--with-isl=PATH],
|
[--with-isl=PATH],
|
||||||
[Specify prefix directory for the installed ISL package.
|
[Specify prefix directory for the installed isl package.
|
||||||
Equivalent to --with-isl-include=PATH/include
|
Equivalent to --with-isl-include=PATH/include
|
||||||
plus --with-isl-lib=PATH/lib])])
|
plus --with-isl-lib=PATH/lib])])
|
||||||
|
|
||||||
# Treat --without-isl as a request to disable
|
# Treat --without-isl as a request to disable
|
||||||
# GRAPHITE support and skip all following checks.
|
# GRAPHITE support and skip all following checks.
|
||||||
if test "x$with_isl" != "xno"; then
|
if test "x$with_isl" != "xno"; then
|
||||||
# Check for ISL
|
# Check for isl
|
||||||
dnl Provide configure switches and initialize islinc & isllibs
|
dnl Provide configure switches and initialize islinc & isllibs
|
||||||
dnl with user input.
|
dnl with user input.
|
||||||
ISL_INIT_FLAGS
|
ISL_INIT_FLAGS
|
||||||
dnl The versions of ISL that work for Graphite
|
dnl The versions of isl that work for Graphite
|
||||||
ISL_CHECK_VERSION()
|
ISL_CHECK_VERSION()
|
||||||
dnl Only execute fail-action, if ISL has been requested.
|
dnl Only execute fail-action, if isl has been requested.
|
||||||
ISL_IF_FAILED([
|
ISL_IF_FAILED([
|
||||||
AC_MSG_ERROR([Unable to find a usable ISL. See config.log for details.])])
|
AC_MSG_ERROR([Unable to find a usable isl. See config.log for details.])])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If the ISL check failed, disable builds of in-tree variant of ISL
|
# If the isl check failed, disable builds of in-tree variant of isl
|
||||||
if test "x$with_isl" = xno ||
|
if test "x$with_isl" = xno ||
|
||||||
test "x$gcc_cv_isl" = xno; then
|
test "x$gcc_cv_isl" = xno; then
|
||||||
noconfigdirs="$noconfigdirs isl"
|
noconfigdirs="$noconfigdirs isl"
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
# along with this program. If not, see http://www.gnu.org/licenses/.
|
||||||
|
|
||||||
# If you want to disable Graphite loop optimizations while building GCC,
|
# If you want to disable Graphite loop optimizations while building GCC,
|
||||||
# DO NOT set GRAPHITE_LOOP_OPT as yes so that the ISL package will not
|
# DO NOT set GRAPHITE_LOOP_OPT as yes so that the isl package will not
|
||||||
# be downloaded.
|
# be downloaded.
|
||||||
GRAPHITE_LOOP_OPT=yes
|
GRAPHITE_LOOP_OPT=yes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,23 @@
|
||||||
|
2015-12-17 Sebastian Pop <s.pop@samsung.com>
|
||||||
|
|
||||||
|
* Makefile.in: Replace ISL with isl.
|
||||||
|
* common.opt: Same.
|
||||||
|
* configure: Regenerate.
|
||||||
|
* configure.ac: Same.
|
||||||
|
* doc/install.texi: Same.
|
||||||
|
* doc/invoke.texi: Same.
|
||||||
|
* graphite-isl-ast-to-gimple.c: Same.
|
||||||
|
* graphite-scop-detection.c: Same.
|
||||||
|
* graphite-sese-to-poly.c: Same.
|
||||||
|
* graphite.c: Same.
|
||||||
|
* graphite.h: Same.
|
||||||
|
* params.def: Same.
|
||||||
|
* testsuite/gcc.dg/graphite/fuse-1.c: Same.
|
||||||
|
* testsuite/gcc.dg/graphite/fuse-2.c: Same.
|
||||||
|
* testsuite/gcc.dg/graphite/interchange-1.c: Same.
|
||||||
|
* testsuite/gcc.dg/graphite/pr35356-1.c: Same.
|
||||||
|
* toplev.c: Same.
|
||||||
|
|
||||||
2015-12-17 Sebastian Pop <s.pop@samsung.com>
|
2015-12-17 Sebastian Pop <s.pop@samsung.com>
|
||||||
|
|
||||||
* graphite-dependences.c: Move all isl include files to...
|
* graphite-dependences.c: Move all isl include files to...
|
||||||
|
|
|
||||||
|
|
@ -365,7 +365,7 @@ ZLIBINC = @zlibinc@
|
||||||
GMPLIBS = @GMPLIBS@
|
GMPLIBS = @GMPLIBS@
|
||||||
GMPINC = @GMPINC@
|
GMPINC = @GMPINC@
|
||||||
|
|
||||||
# How to find ISL
|
# How to find isl.
|
||||||
ISLLIBS = @ISLLIBS@
|
ISLLIBS = @ISLLIBS@
|
||||||
ISLINC = @ISLINC@
|
ISLINC = @ISLINC@
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1406,7 +1406,7 @@ Does nothing. Preserved for backward compatibility.
|
||||||
|
|
||||||
floop-nest-optimize
|
floop-nest-optimize
|
||||||
Common Report Var(flag_loop_nest_optimize) Optimization
|
Common Report Var(flag_loop_nest_optimize) Optimization
|
||||||
Enable the ISL based loop nest optimizer.
|
Enable the loop nest optimizer.
|
||||||
|
|
||||||
fstrict-volatile-bitfields
|
fstrict-volatile-bitfields
|
||||||
Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
|
Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
|
||||||
|
|
|
||||||
|
|
@ -1750,8 +1750,8 @@ Some influential environment variables:
|
||||||
CPP C preprocessor
|
CPP C preprocessor
|
||||||
GMPLIBS How to link GMP
|
GMPLIBS How to link GMP
|
||||||
GMPINC How to find GMP include files
|
GMPINC How to find GMP include files
|
||||||
ISLLIBS How to link ISL
|
ISLLIBS How to link isl
|
||||||
ISLINC How to find ISL include files
|
ISLINC How to find isl include files
|
||||||
|
|
||||||
Use these variables to override the choices made by `configure' or to help
|
Use these variables to override the choices made by `configure' or to help
|
||||||
it to find libraries and programs with nonstandard names/locations.
|
it to find libraries and programs with nonstandard names/locations.
|
||||||
|
|
@ -28932,10 +28932,8 @@ $as_echo "#define HAVE_isl 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check whether isl_schedule_constraints_compute_schedule is available;
|
|
||||||
# it's new in ISL-0.13.
|
|
||||||
# Check whether isl_options_set_schedule_serialize_sccs is available;
|
# Check whether isl_options_set_schedule_serialize_sccs is available;
|
||||||
# it's new in ISL-0.15.
|
# it's new in isl 0.15.
|
||||||
if test "x${ISLLIBS}" != "x" ; then
|
if test "x${ISLLIBS}" != "x" ; then
|
||||||
saved_CXXFLAGS="$CXXFLAGS"
|
saved_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS $ISLINC"
|
CXXFLAGS="$CXXFLAGS $ISLINC"
|
||||||
|
|
|
||||||
|
|
@ -5908,16 +5908,14 @@ fi
|
||||||
AC_ARG_VAR(GMPLIBS,[How to link GMP])
|
AC_ARG_VAR(GMPLIBS,[How to link GMP])
|
||||||
AC_ARG_VAR(GMPINC,[How to find GMP include files])
|
AC_ARG_VAR(GMPINC,[How to find GMP include files])
|
||||||
|
|
||||||
AC_ARG_VAR(ISLLIBS,[How to link ISL])
|
AC_ARG_VAR(ISLLIBS,[How to link isl])
|
||||||
AC_ARG_VAR(ISLINC,[How to find ISL include files])
|
AC_ARG_VAR(ISLINC,[How to find isl include files])
|
||||||
if test "x${ISLLIBS}" != "x" ; then
|
if test "x${ISLLIBS}" != "x" ; then
|
||||||
AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
|
AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check whether isl_schedule_constraints_compute_schedule is available;
|
|
||||||
# it's new in ISL-0.13.
|
|
||||||
# Check whether isl_options_set_schedule_serialize_sccs is available;
|
# Check whether isl_options_set_schedule_serialize_sccs is available;
|
||||||
# it's new in ISL-0.15.
|
# it's new in isl 0.15.
|
||||||
if test "x${ISLLIBS}" != "x" ; then
|
if test "x${ISLLIBS}" != "x" ; then
|
||||||
saved_CXXFLAGS="$CXXFLAGS"
|
saved_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS $ISLINC"
|
CXXFLAGS="$CXXFLAGS $ISLINC"
|
||||||
|
|
|
||||||
|
|
@ -383,14 +383,14 @@ installed but it is not in your default library search path, the
|
||||||
@option{--with-mpc} configure option should be used. See also
|
@option{--with-mpc} configure option should be used. See also
|
||||||
@option{--with-mpc-lib} and @option{--with-mpc-include}.
|
@option{--with-mpc-lib} and @option{--with-mpc-include}.
|
||||||
|
|
||||||
@item ISL Library version 0.15 or 0.14.
|
@item isl Library version 0.15 or 0.14.
|
||||||
|
|
||||||
Necessary to build GCC with the Graphite loop optimizations.
|
Necessary to build GCC with the Graphite loop optimizations.
|
||||||
It can be downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/}.
|
It can be downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/}.
|
||||||
If an ISL source distribution is found
|
If an isl source distribution is found
|
||||||
in a subdirectory of your GCC sources named @file{isl}, it will be
|
in a subdirectory of your GCC sources named @file{isl}, it will be
|
||||||
built together with GCC. Alternatively, the @option{--with-isl} configure
|
built together with GCC. Alternatively, the @option{--with-isl} configure
|
||||||
option should be used if ISL is not installed in your default library
|
option should be used if isl is not installed in your default library
|
||||||
search path.
|
search path.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
@ -1850,7 +1850,7 @@ a cross compiler, they will not be used to configure target libraries.
|
||||||
@item --with-isl=@var{pathname}
|
@item --with-isl=@var{pathname}
|
||||||
@itemx --with-isl-include=@var{pathname}
|
@itemx --with-isl-include=@var{pathname}
|
||||||
@itemx --with-isl-lib=@var{pathname}
|
@itemx --with-isl-lib=@var{pathname}
|
||||||
If you do not have the ISL library installed in a standard location and you
|
If you do not have the isl library installed in a standard location and you
|
||||||
want to build GCC, you can explicitly specify the directory where it is
|
want to build GCC, you can explicitly specify the directory where it is
|
||||||
installed (@samp{--with-isl=@/@var{islinstalldir}}). The
|
installed (@samp{--with-isl=@/@var{islinstalldir}}). The
|
||||||
@option{--with-isl=@/@var{islinstalldir}} option is shorthand for
|
@option{--with-isl=@/@var{islinstalldir}} option is shorthand for
|
||||||
|
|
|
||||||
|
|
@ -8953,12 +8953,12 @@ Enable the identity transformation for graphite. For every SCoP we generate
|
||||||
the polyhedral representation and transform it back to gimple. Using
|
the polyhedral representation and transform it back to gimple. Using
|
||||||
@option{-fgraphite-identity} we can check the costs or benefits of the
|
@option{-fgraphite-identity} we can check the costs or benefits of the
|
||||||
GIMPLE -> GRAPHITE -> GIMPLE transformation. Some minimal optimizations
|
GIMPLE -> GRAPHITE -> GIMPLE transformation. Some minimal optimizations
|
||||||
are also performed by the code generator ISL, like index splitting and
|
are also performed by the code generator isl, like index splitting and
|
||||||
dead code elimination in loops.
|
dead code elimination in loops.
|
||||||
|
|
||||||
@item -floop-nest-optimize
|
@item -floop-nest-optimize
|
||||||
@opindex floop-nest-optimize
|
@opindex floop-nest-optimize
|
||||||
Enable the ISL based loop nest optimizer. This is a generic loop nest
|
Enable the isl based loop nest optimizer. This is a generic loop nest
|
||||||
optimizer based on the Pluto optimization algorithms. It calculates a loop
|
optimizer based on the Pluto optimization algorithms. It calculates a loop
|
||||||
structure optimized for data-locality and parallelism. This option
|
structure optimized for data-locality and parallelism. This option
|
||||||
is experimental.
|
is experimental.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* Translation of ISL AST to Gimple.
|
/* Translation of isl AST to Gimple.
|
||||||
Copyright (C) 2014-2015 Free Software Foundation, Inc.
|
Copyright (C) 2014-2015 Free Software Foundation, Inc.
|
||||||
Contributed by Roman Gareev <gareevroman@gmail.com>.
|
Contributed by Roman Gareev <gareevroman@gmail.com>.
|
||||||
|
|
||||||
|
|
@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "cfganal.h"
|
#include "cfganal.h"
|
||||||
#include "value-prof.h"
|
#include "value-prof.h"
|
||||||
#include "graphite.h"
|
#include "graphite.h"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
/* We always try to use signed 128 bit types, but fall back to smaller types
|
/* We always try to use signed 128 bit types, but fall back to smaller types
|
||||||
|
|
@ -99,12 +98,12 @@ graphite_verify (void)
|
||||||
checking_verify_loop_closed_ssa (true);
|
checking_verify_loop_closed_ssa (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* IVS_PARAMS maps ISL's scattering and parameter identifiers
|
/* IVS_PARAMS maps isl's scattering and parameter identifiers
|
||||||
to corresponding trees. */
|
to corresponding trees. */
|
||||||
|
|
||||||
typedef std::map<isl_id *, tree> ivs_params;
|
typedef std::map<isl_id *, tree> ivs_params;
|
||||||
|
|
||||||
/* Free all memory allocated for ISL's identifiers. */
|
/* Free all memory allocated for isl's identifiers. */
|
||||||
|
|
||||||
void ivs_params_clear (ivs_params &ip)
|
void ivs_params_clear (ivs_params &ip)
|
||||||
{
|
{
|
||||||
|
|
@ -146,7 +145,7 @@ class translate_isl_ast_to_gimple
|
||||||
: region (r), codegen_error (false)
|
: region (r), codegen_error (false)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/* Translates an ISL AST node NODE to GCC representation in the
|
/* Translates an isl AST node NODE to GCC representation in the
|
||||||
context of a SESE. */
|
context of a SESE. */
|
||||||
edge translate_isl_ast (loop_p context_loop, __isl_keep isl_ast_node *node,
|
edge translate_isl_ast (loop_p context_loop, __isl_keep isl_ast_node *node,
|
||||||
edge next_e, ivs_params &ip);
|
edge next_e, ivs_params &ip);
|
||||||
|
|
@ -202,7 +201,7 @@ class translate_isl_ast_to_gimple
|
||||||
tree nary_op_to_tree (tree type, __isl_take isl_ast_expr *expr,
|
tree nary_op_to_tree (tree type, __isl_take isl_ast_expr *expr,
|
||||||
ivs_params &ip);
|
ivs_params &ip);
|
||||||
|
|
||||||
/* Converts an ISL AST expression E back to a GCC expression tree of
|
/* Converts an isl AST expression E back to a GCC expression tree of
|
||||||
type TYPE. */
|
type TYPE. */
|
||||||
tree gcc_expression_from_isl_expression (tree type,
|
tree gcc_expression_from_isl_expression (tree type,
|
||||||
__isl_take isl_ast_expr *,
|
__isl_take isl_ast_expr *,
|
||||||
|
|
@ -234,7 +233,7 @@ class translate_isl_ast_to_gimple
|
||||||
induction variable for the new LOOP. New LOOP is attached to CFG
|
induction variable for the new LOOP. New LOOP is attached to CFG
|
||||||
starting at ENTRY_EDGE. LOOP is inserted into the loop tree and
|
starting at ENTRY_EDGE. LOOP is inserted into the loop tree and
|
||||||
becomes the child loop of the OUTER_LOOP. NEWIVS_INDEX binds
|
becomes the child loop of the OUTER_LOOP. NEWIVS_INDEX binds
|
||||||
ISL's scattering name to the induction variable created for the
|
isl's scattering name to the induction variable created for the
|
||||||
loop of STMT. The new induction variable is inserted in the NEWIVS
|
loop of STMT. The new induction variable is inserted in the NEWIVS
|
||||||
vector and is of type TYPE. */
|
vector and is of type TYPE. */
|
||||||
struct loop *graphite_create_new_loop (edge entry_edge,
|
struct loop *graphite_create_new_loop (edge entry_edge,
|
||||||
|
|
@ -258,7 +257,7 @@ class translate_isl_ast_to_gimple
|
||||||
tree *type,
|
tree *type,
|
||||||
tree *lb, tree *ub, ivs_params &ip);
|
tree *lb, tree *ub, ivs_params &ip);
|
||||||
|
|
||||||
/* Creates a new if region corresponding to ISL's cond. */
|
/* Creates a new if region corresponding to isl's cond. */
|
||||||
edge graphite_create_new_guard (edge entry_edge,
|
edge graphite_create_new_guard (edge entry_edge,
|
||||||
__isl_take isl_ast_expr *if_cond,
|
__isl_take isl_ast_expr *if_cond,
|
||||||
ivs_params &ip);
|
ivs_params &ip);
|
||||||
|
|
@ -277,7 +276,7 @@ class translate_isl_ast_to_gimple
|
||||||
|
|
||||||
void translate_pending_phi_nodes (void);
|
void translate_pending_phi_nodes (void);
|
||||||
|
|
||||||
/* Add ISL's parameter identifiers and corresponding trees to ivs_params. */
|
/* Add isl's parameter identifiers and corresponding trees to ivs_params. */
|
||||||
|
|
||||||
void add_parameters_to_ivs_params (scop_p scop, ivs_params &ip);
|
void add_parameters_to_ivs_params (scop_p scop, ivs_params &ip);
|
||||||
|
|
||||||
|
|
@ -497,7 +496,7 @@ private:
|
||||||
/* The region to be translated. */
|
/* The region to be translated. */
|
||||||
sese_info_p region;
|
sese_info_p region;
|
||||||
|
|
||||||
/* This flag is set when an error occurred during the translation of ISL AST
|
/* This flag is set when an error occurred during the translation of isl AST
|
||||||
to Gimple. */
|
to Gimple. */
|
||||||
bool codegen_error;
|
bool codegen_error;
|
||||||
|
|
||||||
|
|
@ -583,7 +582,7 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
|
||||||
return fold_build2 (MULT_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
return fold_build2 (MULT_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
||||||
|
|
||||||
case isl_ast_op_div:
|
case isl_ast_op_div:
|
||||||
/* As ISL operates on arbitrary precision numbers, we may end up with
|
/* As isl operates on arbitrary precision numbers, we may end up with
|
||||||
division by 2^64 that is folded to 0. */
|
division by 2^64 that is folded to 0. */
|
||||||
if (integer_zerop (tree_rhs_expr))
|
if (integer_zerop (tree_rhs_expr))
|
||||||
{
|
{
|
||||||
|
|
@ -593,7 +592,7 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
|
||||||
return fold_build2 (EXACT_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
return fold_build2 (EXACT_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
||||||
|
|
||||||
case isl_ast_op_pdiv_q:
|
case isl_ast_op_pdiv_q:
|
||||||
/* As ISL operates on arbitrary precision numbers, we may end up with
|
/* As isl operates on arbitrary precision numbers, we may end up with
|
||||||
division by 2^64 that is folded to 0. */
|
division by 2^64 that is folded to 0. */
|
||||||
if (integer_zerop (tree_rhs_expr))
|
if (integer_zerop (tree_rhs_expr))
|
||||||
{
|
{
|
||||||
|
|
@ -603,11 +602,11 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
|
||||||
return fold_build2 (TRUNC_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
return fold_build2 (TRUNC_DIV_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
||||||
|
|
||||||
#if HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
|
#if HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
|
||||||
/* ISL-0.15 or later. */
|
/* isl 0.15 or later. */
|
||||||
case isl_ast_op_zdiv_r:
|
case isl_ast_op_zdiv_r:
|
||||||
#endif
|
#endif
|
||||||
case isl_ast_op_pdiv_r:
|
case isl_ast_op_pdiv_r:
|
||||||
/* As ISL operates on arbitrary precision numbers, we may end up with
|
/* As isl operates on arbitrary precision numbers, we may end up with
|
||||||
division by 2^64 that is folded to 0. */
|
division by 2^64 that is folded to 0. */
|
||||||
if (integer_zerop (tree_rhs_expr))
|
if (integer_zerop (tree_rhs_expr))
|
||||||
{
|
{
|
||||||
|
|
@ -617,7 +616,7 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
|
||||||
return fold_build2 (TRUNC_MOD_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
return fold_build2 (TRUNC_MOD_EXPR, type, tree_lhs_expr, tree_rhs_expr);
|
||||||
|
|
||||||
case isl_ast_op_fdiv_q:
|
case isl_ast_op_fdiv_q:
|
||||||
/* As ISL operates on arbitrary precision numbers, we may end up with
|
/* As isl operates on arbitrary precision numbers, we may end up with
|
||||||
division by 2^64 that is folded to 0. */
|
division by 2^64 that is folded to 0. */
|
||||||
if (integer_zerop (tree_rhs_expr))
|
if (integer_zerop (tree_rhs_expr))
|
||||||
{
|
{
|
||||||
|
|
@ -777,7 +776,7 @@ gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr,
|
||||||
case isl_ast_op_pdiv_r:
|
case isl_ast_op_pdiv_r:
|
||||||
case isl_ast_op_fdiv_q:
|
case isl_ast_op_fdiv_q:
|
||||||
#if HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
|
#if HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
|
||||||
/* ISL-0.15 or later. */
|
/* isl 0.15 or later. */
|
||||||
case isl_ast_op_zdiv_r:
|
case isl_ast_op_zdiv_r:
|
||||||
#endif
|
#endif
|
||||||
case isl_ast_op_and:
|
case isl_ast_op_and:
|
||||||
|
|
@ -802,7 +801,7 @@ gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr,
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Converts an ISL AST expression E back to a GCC expression tree of
|
/* Converts an isl AST expression E back to a GCC expression tree of
|
||||||
type TYPE. */
|
type TYPE. */
|
||||||
|
|
||||||
tree
|
tree
|
||||||
|
|
@ -838,7 +837,7 @@ gcc_expression_from_isl_expression (tree type, __isl_take isl_ast_expr *expr,
|
||||||
induction variable for the new LOOP. New LOOP is attached to CFG
|
induction variable for the new LOOP. New LOOP is attached to CFG
|
||||||
starting at ENTRY_EDGE. LOOP is inserted into the loop tree and
|
starting at ENTRY_EDGE. LOOP is inserted into the loop tree and
|
||||||
becomes the child loop of the OUTER_LOOP. NEWIVS_INDEX binds
|
becomes the child loop of the OUTER_LOOP. NEWIVS_INDEX binds
|
||||||
ISL's scattering name to the induction variable created for the
|
isl's scattering name to the induction variable created for the
|
||||||
loop of STMT. The new induction variable is inserted in the NEWIVS
|
loop of STMT. The new induction variable is inserted in the NEWIVS
|
||||||
vector and is of type TYPE. */
|
vector and is of type TYPE. */
|
||||||
|
|
||||||
|
|
@ -1179,7 +1178,7 @@ translate_isl_ast_node_block (loop_p context_loop,
|
||||||
return next_e;
|
return next_e;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Creates a new if region corresponding to ISL's cond. */
|
/* Creates a new if region corresponding to isl's cond. */
|
||||||
|
|
||||||
edge
|
edge
|
||||||
translate_isl_ast_to_gimple::
|
translate_isl_ast_to_gimple::
|
||||||
|
|
@ -1224,7 +1223,7 @@ translate_isl_ast_node_if (loop_p context_loop,
|
||||||
return last_e;
|
return last_e;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Translates an ISL AST node NODE to GCC representation in the
|
/* Translates an isl AST node NODE to GCC representation in the
|
||||||
context of a SESE. */
|
context of a SESE. */
|
||||||
|
|
||||||
edge
|
edge
|
||||||
|
|
@ -2931,7 +2930,7 @@ translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences (basic_block bb,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* In case ISL did some loop peeling, like this:
|
/* In case isl did some loop peeling, like this:
|
||||||
|
|
||||||
S_8(0);
|
S_8(0);
|
||||||
for (int c1 = 1; c1 <= 5; c1 += 1) {
|
for (int c1 = 1; c1 <= 5; c1 += 1) {
|
||||||
|
|
@ -3065,7 +3064,7 @@ translate_isl_ast_to_gimple::print_isl_ast_node (FILE *file,
|
||||||
isl_printer_free (prn);
|
isl_printer_free (prn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add ISL's parameter identifiers and corresponding trees to ivs_params. */
|
/* Add isl's parameter identifiers and corresponding trees to ivs_params. */
|
||||||
|
|
||||||
void
|
void
|
||||||
translate_isl_ast_to_gimple::add_parameters_to_ivs_params (scop_p scop,
|
translate_isl_ast_to_gimple::add_parameters_to_ivs_params (scop_p scop,
|
||||||
|
|
@ -3263,7 +3262,7 @@ translate_isl_ast_to_gimple::scop_to_isl_ast (scop_p scop, ivs_params &ip)
|
||||||
the given SCOP. Return true if code generation succeeded.
|
the given SCOP. Return true if code generation succeeded.
|
||||||
|
|
||||||
FIXME: This is not yet a full implementation of the code generator
|
FIXME: This is not yet a full implementation of the code generator
|
||||||
with ISL ASTs. Generation of GIMPLE code has to be completed. */
|
with isl ASTs. Generation of GIMPLE code has to be completed. */
|
||||||
|
|
||||||
bool
|
bool
|
||||||
graphite_regenerate_ast_isl (scop_p scop)
|
graphite_regenerate_ast_isl (scop_p scop)
|
||||||
|
|
@ -3280,7 +3279,7 @@ graphite_regenerate_ast_isl (scop_p scop)
|
||||||
|
|
||||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||||
{
|
{
|
||||||
fprintf (dump_file, "ISL AST generated by ISL: \n");
|
fprintf (dump_file, "AST generated by isl: \n");
|
||||||
t.print_isl_ast_node (dump_file, root_node, scop->isl_context);
|
t.print_isl_ast_node (dump_file, root_node, scop->isl_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -436,7 +436,7 @@ canonicalize_loop_closed_ssa_form (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Can all ivs be represented by a signed integer?
|
/* Can all ivs be represented by a signed integer?
|
||||||
As ISL might generate negative values in its expressions, signed loop ivs
|
As isl might generate negative values in its expressions, signed loop ivs
|
||||||
are required in the backend. */
|
are required in the backend. */
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
|
@ -1198,7 +1198,7 @@ scop_detection::graphite_can_represent_scev (tree scev)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* We disable the handling of pointer types, because it’s currently not
|
/* We disable the handling of pointer types, because it’s currently not
|
||||||
supported by Graphite with the ISL AST generator. SSA_NAME nodes are
|
supported by Graphite with the isl AST generator. SSA_NAME nodes are
|
||||||
the only nodes, which are disabled in case they are pointers to object
|
the only nodes, which are disabled in case they are pointers to object
|
||||||
types, but this can be changed. */
|
types, but this can be changed. */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ tree_int_to_gmp (tree t, mpz_t res)
|
||||||
wi::to_mpz (t, res, TYPE_SIGN (TREE_TYPE (t)));
|
wi::to_mpz (t, res, TYPE_SIGN (TREE_TYPE (t)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return an ISL identifier for the polyhedral basic block PBB. */
|
/* Return an isl identifier for the polyhedral basic block PBB. */
|
||||||
|
|
||||||
static isl_id *
|
static isl_id *
|
||||||
isl_id_for_pbb (scop_p s, poly_bb_p pbb)
|
isl_id_for_pbb (scop_p s, poly_bb_p pbb)
|
||||||
|
|
@ -260,7 +260,7 @@ extract_affine_mul (scop_p s, tree e, __isl_take isl_space *space)
|
||||||
return isl_pw_aff_mul (lhs, rhs);
|
return isl_pw_aff_mul (lhs, rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return an ISL identifier from the name of the ssa_name E. */
|
/* Return an isl identifier from the name of the ssa_name E. */
|
||||||
|
|
||||||
static isl_id *
|
static isl_id *
|
||||||
isl_id_for_ssa_name (scop_p s, tree e)
|
isl_id_for_ssa_name (scop_p s, tree e)
|
||||||
|
|
@ -270,7 +270,7 @@ isl_id_for_ssa_name (scop_p s, tree e)
|
||||||
return isl_id_alloc (s->isl_context, name1, e);
|
return isl_id_alloc (s->isl_context, name1, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return an ISL identifier for the data reference DR. Data references and
|
/* Return an isl identifier for the data reference DR. Data references and
|
||||||
scalar references get the same isl_id. They need to be comparable and are
|
scalar references get the same isl_id. They need to be comparable and are
|
||||||
distinguished through the first dimension, which contains the alias set or
|
distinguished through the first dimension, which contains the alias set or
|
||||||
SSA_NAME_VERSION number. */
|
SSA_NAME_VERSION number. */
|
||||||
|
|
|
||||||
|
|
@ -336,12 +336,12 @@ graphite_transform_loops (void)
|
||||||
isl_ctx_free (ctx);
|
isl_ctx_free (ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* If ISL is not available: #ifndef HAVE_isl. */
|
#else /* If isl is not available: #ifndef HAVE_isl. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
graphite_transform_loops (void)
|
graphite_transform_loops (void)
|
||||||
{
|
{
|
||||||
sorry ("Graphite loop optimizations cannot be used (ISL is not available).");
|
sorry ("Graphite loop optimizations cannot be used (isl is not available).");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -425,7 +425,7 @@ struct scop
|
||||||
c = 2a + b */
|
c = 2a + b */
|
||||||
isl_set *param_context;
|
isl_set *param_context;
|
||||||
|
|
||||||
/* The context used internally by ISL. */
|
/* The context used internally by isl. */
|
||||||
isl_ctx *isl_context;
|
isl_ctx *isl_context;
|
||||||
|
|
||||||
/* SCoP final schedule. */
|
/* SCoP final schedule. */
|
||||||
|
|
|
||||||
|
|
@ -865,7 +865,7 @@ DEFPARAM (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION,
|
||||||
|
|
||||||
DEFPARAM (PARAM_MAX_ISL_OPERATIONS,
|
DEFPARAM (PARAM_MAX_ISL_OPERATIONS,
|
||||||
"max-isl-operations",
|
"max-isl-operations",
|
||||||
"maximum number of ISL operations, 0 means unlimited",
|
"maximum number of isl operations, 0 means unlimited",
|
||||||
350000, 0, 0)
|
350000, 0, 0)
|
||||||
|
|
||||||
/* Avoid data dependence analysis on very large loops. */
|
/* Avoid data dependence analysis on very large loops. */
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@
|
||||||
/* { dg-options "-O2 -floop-nest-optimize -fdump-tree-forwprop-all -fdump-tree-graphite-all" } */
|
/* { dg-options "-O2 -floop-nest-optimize -fdump-tree-forwprop-all -fdump-tree-graphite-all" } */
|
||||||
|
|
||||||
/* Make sure we fuse the loops like this:
|
/* Make sure we fuse the loops like this:
|
||||||
ISL AST generated by ISL:
|
AST generated by isl:
|
||||||
for (int c0 = 0; c0 <= 99; c0 += 1) {
|
for (int c0 = 0; c0 <= 99; c0 += 1) {
|
||||||
S_3(c0);
|
S_3(c0);
|
||||||
S_6(c0);
|
S_6(c0);
|
||||||
S_9(c0);
|
S_9(c0);
|
||||||
} */
|
} */
|
||||||
/* { dg-final { scan-tree-dump-times "ISL AST generated by ISL:.*for \\(int c0 = 0; c0 <= 99; c0 \\+= 1\\) \\{.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*\\}" 1 "graphite" } } */
|
/* { dg-final { scan-tree-dump-times "AST generated by isl:.*for \\(int c0 = 0; c0 <= 99; c0 \\+= 1\\) \\{.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*\\}" 1 "graphite" } } */
|
||||||
|
|
||||||
/* Check that after fusing the loops, the scalar computation is also fused. */
|
/* Check that after fusing the loops, the scalar computation is also fused. */
|
||||||
/* { dg-final { scan-tree-dump-times "gimple_simplified to\[^\\n\]*\\^ 12" 1 "forwprop4" } } */
|
/* { dg-final { scan-tree-dump-times "gimple_simplified to\[^\\n\]*\\^ 12" 1 "forwprop4" } } */
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* Check that the three loops are fused. */
|
/* Check that the three loops are fused. */
|
||||||
|
|
||||||
/* Make sure we fuse the loops like this:
|
/* Make sure we fuse the loops like this:
|
||||||
ISL AST generated by ISL:
|
AST generated by isl:
|
||||||
for (int c0 = 0; c0 <= 99; c0 += 1) {
|
for (int c0 = 0; c0 <= 99; c0 += 1) {
|
||||||
S_3(c0);
|
S_3(c0);
|
||||||
S_6(c0);
|
S_6(c0);
|
||||||
|
|
@ -9,7 +9,7 @@ for (int c0 = 0; c0 <= 99; c0 += 1) {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* { dg-final { scan-tree-dump-times "ISL AST generated by ISL:.*for \\(int c0 = 0; c0 <= 99; c0 \\+= 1\\) \\{.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*\\}" 1 "graphite" } } */
|
/* { dg-final { scan-tree-dump-times "AST generated by isl:.*for \\(int c0 = 0; c0 <= 99; c0 \\+= 1\\) \\{.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*S_.*\\(c0\\);.*\\}" 1 "graphite" } } */
|
||||||
|
|
||||||
#define MAX 100
|
#define MAX 100
|
||||||
int A[MAX], B[MAX], C[MAX];
|
int A[MAX], B[MAX], C[MAX];
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ main (void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*FIXME: Between ISL-0.12 and ISL-0.15 the schedule optimizer needs to print
|
/*FIXME: Between isl 0.12 and isl 0.15 the schedule optimizer needs to print
|
||||||
something canonical so that it can be checked in the test. The final code
|
something canonical so that it can be checked in the test. The final code
|
||||||
generated by both are same in this case but the messaged printed are
|
generated by both are same in this case but the messaged printed are
|
||||||
not consistent. */
|
not consistent. */
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ foo (int bar, int n, int k)
|
||||||
|
|
||||||
Check that this text is produced:
|
Check that this text is produced:
|
||||||
|
|
||||||
ISL AST generated by ISL:
|
AST generated by isl:
|
||||||
if (n >= k + 1 && k >= 0) {
|
if (n >= k + 1 && k >= 0) {
|
||||||
S_6(k);
|
S_6(k);
|
||||||
S_11(k);
|
S_11(k);
|
||||||
|
|
|
||||||
|
|
@ -1251,7 +1251,7 @@ process_options (void)
|
||||||
|| flag_loop_nest_optimize
|
|| flag_loop_nest_optimize
|
||||||
|| flag_graphite_identity
|
|| flag_graphite_identity
|
||||||
|| flag_loop_parallelize_all)
|
|| flag_loop_parallelize_all)
|
||||||
sorry ("Graphite loop optimizations cannot be used (ISL is not available)"
|
sorry ("Graphite loop optimizations cannot be used (isl is not available)"
|
||||||
"(-fgraphite, -fgraphite-identity, -floop-block, "
|
"(-fgraphite, -fgraphite-identity, -floop-block, "
|
||||||
"-floop-interchange, -floop-strip-mine, -floop-parallelize-all, "
|
"-floop-interchange, -floop-strip-mine, -floop-parallelize-all, "
|
||||||
"-floop-unroll-and-jam, and -ftree-loop-linear)");
|
"-floop-unroll-and-jam, and -ftree-loop-linear)");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue