mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-13 03:12:46 +00:00
65371af2e1
Add support for -polly-codegen-perf-monitoring. When performance monitoring is enabled, we emit performance monitoring code during code generation that prints after program exit statistics about the total number of cycles executed as well as the number of cycles spent in scops. This gives an estimate on how useful polyhedral optimizations might be for a given program. Example output: Polly runtime information ------------------------- Total: 783110081637 Scops: 663718949365 In the future, we might also add functionality to measure how much time is spent in optimized scops and how many cycles are spent in the fallback code. Reviewers: bollu,sebpop Tags: #polly Differential Revision: https://reviews.llvm.org/D31599 llvm-svn: 299359
129 lines
2.9 KiB
CMake
129 lines
2.9 KiB
CMake
set(LLVM_NO_RTTI 1)
|
|
|
|
set(POLLY_JSON_FILES
|
|
External/JSON/json_reader.cpp
|
|
External/JSON/json_value.cpp
|
|
External/JSON/json_writer.cpp
|
|
)
|
|
|
|
set(ISL_CODEGEN_FILES
|
|
CodeGen/IslAst.cpp
|
|
CodeGen/IslExprBuilder.cpp
|
|
CodeGen/IslNodeBuilder.cpp
|
|
CodeGen/CodeGeneration.cpp)
|
|
|
|
if (GPU_CODEGEN)
|
|
set (GPGPU_CODEGEN_FILES
|
|
CodeGen/PPCGCodeGeneration.cpp
|
|
)
|
|
endif (GPU_CODEGEN)
|
|
|
|
# Compile ISL into a separate library.
|
|
add_subdirectory(External)
|
|
|
|
set(POLLY_HEADER_FILES)
|
|
if (MSVC_IDE OR XCODE)
|
|
file(GLOB_RECURSE POLLY_HEADER_FILES "${POLLY_SOURCE_DIR}/include/polly/*.h")
|
|
endif ()
|
|
|
|
add_polly_library(Polly
|
|
Analysis/DependenceInfo.cpp
|
|
Analysis/PolyhedralInfo.cpp
|
|
Analysis/ScopDetection.cpp
|
|
Analysis/ScopDetectionDiagnostic.cpp
|
|
Analysis/ScopInfo.cpp
|
|
Analysis/ScopBuilder.cpp
|
|
Analysis/ScopGraphPrinter.cpp
|
|
Analysis/ScopPass.cpp
|
|
Analysis/PruneUnprofitable.cpp
|
|
CodeGen/BlockGenerators.cpp
|
|
${ISL_CODEGEN_FILES}
|
|
CodeGen/LoopGenerators.cpp
|
|
CodeGen/IRBuilder.cpp
|
|
CodeGen/Utils.cpp
|
|
CodeGen/RuntimeDebugBuilder.cpp
|
|
CodeGen/CodegenCleanup.cpp
|
|
CodeGen/PerfMonitor.cpp
|
|
${GPGPU_CODEGEN_FILES}
|
|
Exchange/JSONExporter.cpp
|
|
Support/GICHelper.cpp
|
|
Support/SCEVAffinator.cpp
|
|
Support/SCEVValidator.cpp
|
|
Support/RegisterPasses.cpp
|
|
Support/ScopHelper.cpp
|
|
Support/ScopLocation.cpp
|
|
Support/ISLTools.cpp
|
|
Support/DumpModulePass.cpp
|
|
${POLLY_JSON_FILES}
|
|
Transform/Canonicalization.cpp
|
|
Transform/CodePreparation.cpp
|
|
Transform/DeadCodeElimination.cpp
|
|
Transform/ScheduleOptimizer.cpp
|
|
Transform/FlattenSchedule.cpp
|
|
Transform/FlattenAlgo.cpp
|
|
Transform/DeLICM.cpp
|
|
Transform/Simplify.cpp
|
|
${POLLY_HEADER_FILES}
|
|
)
|
|
|
|
if (GPU_CODEGEN)
|
|
target_link_libraries(Polly PollyPPCG)
|
|
endif (GPU_CODEGEN)
|
|
|
|
target_link_libraries(Polly ${ISL_TARGET})
|
|
|
|
if (BUILD_SHARED_LIBS)
|
|
target_link_libraries(Polly
|
|
LLVMSupport
|
|
LLVMCore
|
|
LLVMScalarOpts
|
|
LLVMInstCombine
|
|
LLVMTransformUtils
|
|
LLVMAnalysis
|
|
LLVMipo
|
|
LLVMMC
|
|
# The libraries below are required for darwin: http://PR26392
|
|
LLVMBitReader
|
|
LLVMMCParser
|
|
LLVMObject
|
|
LLVMProfileData
|
|
LLVMTarget
|
|
LLVMVectorize
|
|
)
|
|
link_directories(
|
|
${LLVM_LIBRARY_DIR}
|
|
)
|
|
elseif (LLVM_LINK_LLVM_DYLIB)
|
|
target_link_libraries(Polly
|
|
LLVM
|
|
)
|
|
link_directories(
|
|
${LLVM_LIBRARY_DIR}
|
|
)
|
|
endif()
|
|
|
|
# Build a monolithic Polly.a and a thin module LLVMPolly.moduleext that links to
|
|
# that static library.
|
|
if (MSVC)
|
|
# Add dummy target, because loadable modules are not supported on Windows
|
|
add_custom_target(LLVMPolly)
|
|
set_target_properties(LLVMPolly PROPERTIES FOLDER "Polly")
|
|
else ()
|
|
add_polly_loadable_module(LLVMPolly
|
|
Polly.cpp
|
|
)
|
|
|
|
target_link_libraries(LLVMPolly Polly)
|
|
|
|
set_target_properties(LLVMPolly
|
|
PROPERTIES
|
|
LINKER_LANGUAGE CXX
|
|
PREFIX "")
|
|
endif ()
|
|
|
|
if (TARGET intrinsics_gen)
|
|
# Check if we are building as part of an LLVM build
|
|
add_dependencies(Polly intrinsics_gen)
|
|
endif()
|
|
|