2011-04-29 14:27:02 +08:00
|
|
|
##===- polly/lib/Makefile -----------------------*- Makefile -*-===##
|
|
|
|
|
|
|
|
#
|
|
|
|
# Indicate where we are relative to the top of the source tree.
|
|
|
|
#
|
|
|
|
LEVEL :=..
|
|
|
|
|
|
|
|
LIBRARYNAME=LLVMPolly
|
|
|
|
LOADABLE_MODULE = 1
|
|
|
|
|
2014-03-15 02:02:06 +08:00
|
|
|
# TODO: Export symbols for RTTI or EH?
|
2011-04-29 14:27:02 +08:00
|
|
|
|
|
|
|
CPP.Flags += $(POLLY_INC)
|
2015-02-05 04:55:43 +08:00
|
|
|
C.Flags += $(POLLY_CFLAGS)
|
2014-03-15 02:02:06 +08:00
|
|
|
LD.Flags += $(POLLY_LD) $(POLLY_LIB)
|
2011-04-29 14:27:02 +08:00
|
|
|
|
2014-03-15 02:02:06 +08:00
|
|
|
include $(LEVEL)/Makefile.config
|
2014-03-14 07:37:37 +08:00
|
|
|
|
2014-03-15 02:02:06 +08:00
|
|
|
# Enable optional source files
|
|
|
|
ifeq ($(GPU_CODEGEN), yes)
|
2015-05-15 23:41:14 +08:00
|
|
|
GPGPU_CODEGEN_FILES=""
|
2014-03-15 02:02:06 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
ISL_CODEGEN_FILES= CodeGen/IslAst.cpp \
|
2014-07-30 04:50:09 +08:00
|
|
|
CodeGen/IslExprBuilder.cpp \
|
2015-04-27 20:32:24 +08:00
|
|
|
CodeGen/IslNodeBuilder.cpp \
|
2015-05-12 15:45:52 +08:00
|
|
|
CodeGen/CodeGeneration.cpp
|
2014-03-15 02:02:06 +08:00
|
|
|
|
|
|
|
POLLY_JSON_FILES= JSON/json_reader.cpp \
|
2015-07-25 07:30:31 +08:00
|
|
|
JSON/json_value.cpp \
|
|
|
|
JSON/json_writer.cpp
|
2014-03-15 02:02:06 +08:00
|
|
|
|
2015-02-05 04:55:43 +08:00
|
|
|
ISL_FILES= External/isl/basis_reduction_tab.c \
|
|
|
|
External/isl/isl_aff.c \
|
|
|
|
External/isl/isl_affine_hull.c \
|
|
|
|
External/isl/isl_arg.c \
|
|
|
|
External/isl/isl_ast_build.c \
|
|
|
|
External/isl/isl_ast_build_expr.c \
|
|
|
|
External/isl/isl_ast.c \
|
|
|
|
External/isl/isl_ast_codegen.c \
|
|
|
|
External/isl/isl_ast_graft.c \
|
|
|
|
External/isl/isl_band.c \
|
|
|
|
External/isl/isl_bernstein.c \
|
|
|
|
External/isl/isl_blk.c \
|
|
|
|
External/isl/isl_bound.c \
|
|
|
|
External/isl/isl_coalesce.c \
|
|
|
|
External/isl/isl_constraint.c \
|
|
|
|
External/isl/isl_convex_hull.c \
|
|
|
|
External/isl/isl_ctx.c \
|
|
|
|
External/isl/isl_deprecated.c \
|
|
|
|
External/isl/isl_dim_map.c \
|
|
|
|
External/isl/isl_equalities.c \
|
|
|
|
External/isl/isl_factorization.c \
|
|
|
|
External/isl/isl_farkas.c \
|
2015-07-25 05:40:22 +08:00
|
|
|
External/isl/isl_ffs.c \
|
2015-02-05 04:55:43 +08:00
|
|
|
External/isl/isl_flow.c \
|
|
|
|
External/isl/isl_fold.c \
|
|
|
|
External/isl/isl_hash.c \
|
|
|
|
External/isl/isl_id.c \
|
|
|
|
External/isl/isl_id_to_ast_expr.c \
|
|
|
|
External/isl/isl_id_to_pw_aff.c \
|
|
|
|
External/isl/isl_ilp.c \
|
|
|
|
External/isl/isl_imath.c \
|
|
|
|
External/isl/isl_input.c \
|
Enable ISL's small integer optimization
Summary:
With small integer optimization (short: sio) enabled, ISL uses 32 bit
integers for its arithmetic and only falls back to a big integer library
(in the case of Polly: IMath) if an operation's result is too large.
This gives a massive performance boost for most application using ISL.
For instance, experiments with ppcg (polyhedral source-to-source
compiler) show speed-ups of 5.8 (compared to plain IMath), respectively
2.7 (compared to GMP).
In Polly, a smaller fraction of the total compile time is taken by ISL,
but the speed-ups are still very significant. The buildbots measure
compilation speed-up up to 1.8 (oourafft, floyd-warshall, symm). All
Polybench benchmarks compile in at least 9% less time, and about 20%
less on average.
Detailed Polybench compile time results (median of 10):
correlation -25.51%
covariance -24.82%
2mm -26.64%
3mm -28.69%
atax -13.70%
bicg -10.78%
cholesky -40.67%
doitgen -11.60%
gemm -11.54%
gemver -10.63%
gesummv -11.54%
mvt -9.43%
symm -41.25%
syr2k -14.71%
syrk -14.52%
trisolv -17.65%
trmm -9.78%
durbin -19.32%
dynprog -9.09%
gramschmidt -15.38%
lu -21.77%
floyd-warshall -42.71%
reg_detect -41.17%
adi -36.69%
fdtd-2d -32.61%
fdtd-apml -21.90%
jacobi-1d-imper -9.41%
jacobi-2d-imper -27.65%
seidel-2d -31.00%
Reviewers: grosser
Reviewed By: grosser
Subscribers: Meinersbur, llvm-commits, pollydev
Projects: #polly
Differential Revision: http://reviews.llvm.org/D10506
llvm-svn: 240689
2015-06-26 04:47:35 +08:00
|
|
|
External/isl/isl_int_sioimath.c \
|
2015-02-05 04:55:43 +08:00
|
|
|
External/isl/isl_local_space.c \
|
|
|
|
External/isl/isl_lp.c \
|
|
|
|
External/isl/isl_map.c \
|
2015-07-25 07:30:31 +08:00
|
|
|
External/isl/isl_map_list.c \
|
2015-02-05 04:55:43 +08:00
|
|
|
External/isl/isl_map_simplify.c \
|
|
|
|
External/isl/isl_map_subtract.c \
|
|
|
|
External/isl/isl_map_to_basic_set.c \
|
|
|
|
External/isl/isl_mat.c \
|
|
|
|
External/isl/isl_morph.c \
|
|
|
|
External/isl/isl_obj.c \
|
|
|
|
External/isl/isl_options.c \
|
|
|
|
External/isl/isl_output.c \
|
|
|
|
External/isl/isl_point.c \
|
|
|
|
External/isl/isl_polynomial.c \
|
|
|
|
External/isl/isl_printer.c \
|
|
|
|
External/isl/isl_range.c \
|
|
|
|
External/isl/isl_reordering.c \
|
|
|
|
External/isl/isl_sample.c \
|
|
|
|
External/isl/isl_scan.c \
|
|
|
|
External/isl/isl_schedule.c \
|
2015-07-25 07:30:31 +08:00
|
|
|
External/isl/isl_schedule_band.c \
|
|
|
|
External/isl/isl_schedule_node.c \
|
|
|
|
External/isl/isl_schedule_read.c \
|
|
|
|
External/isl/isl_schedule_tree.c \
|
2015-02-05 04:55:43 +08:00
|
|
|
External/isl/isl_scheduler.c \
|
|
|
|
External/isl/isl_seq.c \
|
|
|
|
External/isl/isl_set_list.c \
|
|
|
|
External/isl/isl_sort.c \
|
|
|
|
External/isl/isl_space.c \
|
|
|
|
External/isl/isl_stream.c \
|
|
|
|
External/isl/isl_tab.c \
|
|
|
|
External/isl/isl_tab_pip.c \
|
|
|
|
External/isl/isl_tarjan.c \
|
|
|
|
External/isl/isl_transitive_closure.c \
|
|
|
|
External/isl/isl_union_map.c \
|
|
|
|
External/isl/isl_val.c \
|
Enable ISL's small integer optimization
Summary:
With small integer optimization (short: sio) enabled, ISL uses 32 bit
integers for its arithmetic and only falls back to a big integer library
(in the case of Polly: IMath) if an operation's result is too large.
This gives a massive performance boost for most application using ISL.
For instance, experiments with ppcg (polyhedral source-to-source
compiler) show speed-ups of 5.8 (compared to plain IMath), respectively
2.7 (compared to GMP).
In Polly, a smaller fraction of the total compile time is taken by ISL,
but the speed-ups are still very significant. The buildbots measure
compilation speed-up up to 1.8 (oourafft, floyd-warshall, symm). All
Polybench benchmarks compile in at least 9% less time, and about 20%
less on average.
Detailed Polybench compile time results (median of 10):
correlation -25.51%
covariance -24.82%
2mm -26.64%
3mm -28.69%
atax -13.70%
bicg -10.78%
cholesky -40.67%
doitgen -11.60%
gemm -11.54%
gemver -10.63%
gesummv -11.54%
mvt -9.43%
symm -41.25%
syr2k -14.71%
syrk -14.52%
trisolv -17.65%
trmm -9.78%
durbin -19.32%
dynprog -9.09%
gramschmidt -15.38%
lu -21.77%
floyd-warshall -42.71%
reg_detect -41.17%
adi -36.69%
fdtd-2d -32.61%
fdtd-apml -21.90%
jacobi-1d-imper -9.41%
jacobi-2d-imper -27.65%
seidel-2d -31.00%
Reviewers: grosser
Reviewed By: grosser
Subscribers: Meinersbur, llvm-commits, pollydev
Projects: #polly
Differential Revision: http://reviews.llvm.org/D10506
llvm-svn: 240689
2015-06-26 04:47:35 +08:00
|
|
|
External/isl/isl_val_sioimath.c \
|
2015-02-05 04:55:43 +08:00
|
|
|
External/isl/isl_vec.c \
|
|
|
|
External/isl/isl_version.c \
|
|
|
|
External/isl/isl_vertices.c \
|
|
|
|
External/isl/print.c \
|
|
|
|
External/isl/imath/gmp_compat.c \
|
|
|
|
External/isl/imath/imath.c \
|
2015-06-23 01:52:33 +08:00
|
|
|
External/isl/imath/imrat.c
|
2015-02-05 04:55:43 +08:00
|
|
|
|
2015-09-09 21:15:11 +08:00
|
|
|
External/isl/gitversion.h:
|
|
|
|
@echo '#define GIT_HEAD_ID "'`cat "${PROJ_SRC_DIR}/External/isl/GIT_HEAD_ID"`'"' > $@
|
|
|
|
|
|
|
|
BUILT_SOURCES=External/isl/gitversion.h
|
|
|
|
|
2014-03-15 02:02:06 +08:00
|
|
|
SOURCES= Polly.cpp \
|
2015-07-25 07:30:31 +08:00
|
|
|
Support/GICHelper.cpp \
|
|
|
|
Support/SCEVValidator.cpp \
|
2015-08-12 18:19:50 +08:00
|
|
|
Support/SCEVAffinator.cpp \
|
2015-07-25 07:30:31 +08:00
|
|
|
Support/RegisterPasses.cpp \
|
|
|
|
Support/ScopHelper.cpp \
|
|
|
|
Support/ScopLocation.cpp \
|
|
|
|
Analysis/DependenceInfo.cpp \
|
|
|
|
Analysis/ScopDetection.cpp \
|
|
|
|
Analysis/ScopDetectionDiagnostic.cpp \
|
|
|
|
Analysis/ScopInfo.cpp \
|
|
|
|
Analysis/ScopGraphPrinter.cpp \
|
|
|
|
Analysis/ScopPass.cpp \
|
|
|
|
CodeGen/BlockGenerators.cpp \
|
|
|
|
CodeGen/LoopGenerators.cpp \
|
|
|
|
CodeGen/IRBuilder.cpp \
|
|
|
|
CodeGen/Utils.cpp \
|
|
|
|
CodeGen/RuntimeDebugBuilder.cpp \
|
|
|
|
Exchange/JSONExporter.cpp \
|
|
|
|
Transform/Canonicalization.cpp \
|
|
|
|
Transform/CodePreparation.cpp \
|
|
|
|
Transform/DeadCodeElimination.cpp \
|
|
|
|
Transform/IndependentBlocks.cpp \
|
|
|
|
Transform/ScheduleOptimizer.cpp \
|
|
|
|
${GPGPU_FILES} \
|
|
|
|
${ISL_CODEGEN_FILES} \
|
|
|
|
${POLLY_JSON_FILES} \
|
|
|
|
${ISL_FILES}
|
2011-04-29 14:27:02 +08:00
|
|
|
|
|
|
|
#
|
|
|
|
# Include Makefile.common so we know what to do.
|
|
|
|
#
|
|
|
|
include $(LEVEL)/Makefile.common
|
2014-11-27 18:14:27 +08:00
|
|
|
|
|
|
|
LIBS += $(POLLY_LD) $(POLLY_LIB)
|