pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/polly Import LLVM Polly 3.8.1 as devel/polly



details:   https://anonhg.NetBSD.org/pkgsrc/rev/4a958ad41085
branches:  trunk
changeset: 352370:4a958ad41085
user:      kamil <kamil%pkgsrc.org@localhost>
date:      Mon Sep 12 22:49:23 2016 +0000

description:
Import LLVM Polly 3.8.1 as devel/polly

Polly is a high-level loop and data-locality optimizer and optimization
infrastructure for LLVM. It uses an abstract mathematical representation based
on integer polyhedra to analyze and optimize the memory access pattern of a
program. We currently perform classical loop transformations, especially tiling
and loop fusion to improve data-locality. Polly can also exploit OpenMP level
parallelism, expose SIMDization opportunities. Work has also be done in the
area of automatic GPU code generation.

For many users, however, it's not the existing optimizations in Polly that are
of most interest, but the new analyses and optimizations enabled by the Polly
infrastructure. At polyhedral.info you can get an idea of what has already been
done and what is possible in the context of polyhedral compilation.

diffstat:

 devel/polly/DESCR                                    |   12 +
 devel/polly/Makefile                                 |   31 ++
 devel/polly/PLIST                                    |   30 ++
 devel/polly/buildlink3.mk                            |   14 +
 devel/polly/distinfo                                 |    8 +
 devel/polly/patches/patch-CMakeLists.txt             |  206 +++++++++++++++++++
 devel/polly/patches/patch-lib_External_isl_configure |   29 ++
 7 files changed, 330 insertions(+), 0 deletions(-)

diffs (truncated from 358 to 300 lines):

diff -r ed95becf2b9a -r 4a958ad41085 devel/polly/DESCR
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/polly/DESCR Mon Sep 12 22:49:23 2016 +0000
@@ -0,0 +1,12 @@
+Polly is a high-level loop and data-locality optimizer and optimization
+infrastructure for LLVM. It uses an abstract mathematical representation based
+on integer polyhedra to analyze and optimize the memory access pattern of a
+program. We currently perform classical loop transformations, especially tiling
+and loop fusion to improve data-locality. Polly can also exploit OpenMP level
+parallelism, expose SIMDization opportunities. Work has also be done in the
+area of automatic GPU code generation.
+
+For many users, however, it's not the existing optimizations in Polly that are
+of most interest, but the new analyses and optimizations enabled by the Polly
+infrastructure. At polyhedral.info you can get an idea of what has already been
+done and what is possible in the context of polyhedral compilation.
diff -r ed95becf2b9a -r 4a958ad41085 devel/polly/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/polly/Makefile      Mon Sep 12 22:49:23 2016 +0000
@@ -0,0 +1,31 @@
+# $NetBSD: Makefile,v 1.1 2016/09/12 22:49:23 kamil Exp $
+
+DISTNAME=      polly-3.8.1.src
+PKGNAME=       ${DISTNAME:S/.src//}
+CATEGORIES=    devel
+MASTER_SITES=  http://llvm.org/releases/${PKGVERSION_NOREV}/
+#MASTER_SITES= http://llvm.org/pre-releases/3.8.0/rc1/
+EXTRACT_SUFX=  .tar.xz
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      http://polly.llvm.org/
+COMMENT=       Polyhedral optimizations for LLVM
+LICENSE=       modified-bsd
+
+CONFIGURE_DIRS=                ${WRKDIR}/build
+CMAKE_ARG_PATH=                ${WRKSRC}
+
+USE_LANGUAGES=         c c++
+USE_CMAKE=             yes
+GCC_REQD+=             4.8
+
+CMAKE_ARGS+=   -DCMAKE_BUILD_TYPE=Release
+CMAKE_ARGS+=   -DCMAKE_C_COMPILER=${CC:Q}
+CMAKE_ARGS+=   -DCMAKE_CXX_COMPILER=${CXX:Q}
+
+post-extract:
+       ${RUN} mkdir -p ${WRKDIR}/build
+
+DEPENDS+=      llvm-${PKGVERSION_NOREV}{,nb*}:../../lang/llvm
+.include "../../lang/llvm/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff -r ed95becf2b9a -r 4a958ad41085 devel/polly/PLIST
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/polly/PLIST Mon Sep 12 22:49:23 2016 +0000
@@ -0,0 +1,30 @@
+@comment $NetBSD: PLIST,v 1.1 2016/09/12 22:49:23 kamil Exp $
+include/polly/Canonicalization.h
+include/polly/CodeGen/BlockGenerators.h
+include/polly/CodeGen/CodeGeneration.h
+include/polly/CodeGen/CodegenCleanup.h
+include/polly/CodeGen/IRBuilder.h
+include/polly/CodeGen/IslAst.h
+include/polly/CodeGen/IslExprBuilder.h
+include/polly/CodeGen/IslNodeBuilder.h
+include/polly/CodeGen/LoopGenerators.h
+include/polly/CodeGen/RuntimeDebugBuilder.h
+include/polly/CodeGen/Utils.h
+include/polly/Config/config.h
+include/polly/DependenceInfo.h
+include/polly/LinkAllPasses.h
+include/polly/Options.h
+include/polly/RegisterPasses.h
+include/polly/ScheduleOptimizer.h
+include/polly/ScopDetection.h
+include/polly/ScopDetectionDiagnostic.h
+include/polly/ScopInfo.h
+include/polly/ScopPass.h
+include/polly/Support/GICHelper.h
+include/polly/Support/SCEVAffinator.h
+include/polly/Support/SCEVValidator.h
+include/polly/Support/ScopHelper.h
+include/polly/Support/ScopLocation.h
+lib/LLVMPolly.so
+lib/libPolly.a
+lib/libPollyISL.a
diff -r ed95becf2b9a -r 4a958ad41085 devel/polly/buildlink3.mk
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/polly/buildlink3.mk Mon Sep 12 22:49:23 2016 +0000
@@ -0,0 +1,14 @@
+# $NetBSD: buildlink3.mk,v 1.1 2016/09/12 22:49:23 kamil Exp $
+
+BUILDLINK_TREE+=       polly
+
+.if !defined(POLLY_BUILDLINK3_MK)
+POLLY_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.polly+=  polly>=3.8.1
+BUILDLINK_PKGSRCDIR.polly?=    ../../devel/polly
+
+.include "../../lang/llvm/buildlink3.mk"
+.endif # POLLY_BUILDLINK3_MK
+
+BUILDLINK_TREE+=       -polly
diff -r ed95becf2b9a -r 4a958ad41085 devel/polly/distinfo
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/polly/distinfo      Mon Sep 12 22:49:23 2016 +0000
@@ -0,0 +1,8 @@
+$NetBSD: distinfo,v 1.1 2016/09/12 22:49:23 kamil Exp $
+
+SHA1 (polly-3.8.1.src.tar.xz) = 918f3c74369a3605f3d624ea3f20c97bc3c921ad
+RMD160 (polly-3.8.1.src.tar.xz) = 766873d4b88e0e9c5670aeb45313d47cca7bd79a
+SHA512 (polly-3.8.1.src.tar.xz) = e5d0d1625be47579cd337fce6d6a1c5b64c8991a6b073778c8d8f237fccbd29f3a8ab815f191bd75c550ac4404c9581c948400cd5c71f56d3ea8fb07fec05536
+Size (polly-3.8.1.src.tar.xz) = 7799188 bytes
+SHA1 (patch-CMakeLists.txt) = 6ee16a91e3d23eeb033bc2e9729ceabb3dfff6db
+SHA1 (patch-lib_External_isl_configure) = dad55f0d959b64f0cb910dad412bfe5bb3702ec9
diff -r ed95becf2b9a -r 4a958ad41085 devel/polly/patches/patch-CMakeLists.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/polly/patches/patch-CMakeLists.txt  Mon Sep 12 22:49:23 2016 +0000
@@ -0,0 +1,206 @@
+$NetBSD: patch-CMakeLists.txt,v 1.1 2016/09/12 22:49:23 kamil Exp $
+
+Bump minimal required CMake version to 3.4.3 like modern LLVM
+Add support for standalone builds
+Disable tests - they require missing files from standard LLVM build (lit tool)
+
+--- CMakeLists.txt.orig        2015-10-15 12:18:37.000000000 +0000
++++ CMakeLists.txt
+@@ -1,90 +1,107 @@
+ # Check if this is a in tree build.
+ if (NOT DEFINED LLVM_MAIN_SRC_DIR)
+   project(Polly)
+-  cmake_minimum_required(VERSION 2.8)
++  cmake_minimum_required(VERSION 3.4.3)
+ 
+-  # Where is LLVM installed?
+-  set(LLVM_INSTALL_ROOT "" CACHE PATH "Root of LLVM install.")
+-  # Check if the LLVM_INSTALL_ROOT valid.
+-  if( NOT EXISTS ${LLVM_INSTALL_ROOT}/include/llvm )
+-    message(FATAL_ERROR "LLVM_INSTALL_ROOT (${LLVM_INSTALL_ROOT}) is not a valid LLVM installation.")
+-  endif(NOT EXISTS ${LLVM_INSTALL_ROOT}/include/llvm)
+-  #FileCheck is not install by default, warn the user to Copy FileCheck
+-  if( NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/FileCheck
+-      OR NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/not)
+-    message(WARNING "FileCheck or not are required by running regress tests, "
+-                    "but they are not installed! Please copy it to "
+-                    "${LLVM_INSTALL_ROOT}/bin.")
+-  endif(NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/FileCheck
+-        OR NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/not)
+-  # Add the llvm header path.
+-  include_directories(${LLVM_INSTALL_ROOT}/include/)
+-
+-  # Get the system librarys that will link into LLVM.
+-  function(get_system_libs return_var)
+-    # Returns in `return_var' a list of system libraries used by LLVM.
+-    if( NOT MSVC )
+-      if( MINGW )
+-        set(system_libs ${system_libs} imagehlp psapi)
+-      elseif( CMAKE_HOST_UNIX )
+-        if( HAVE_LIBDL )
+-          set(system_libs ${system_libs} ${CMAKE_DL_LIBS})
+-        endif()
+-        if( LLVM_ENABLE_THREADS AND HAVE_LIBPTHREAD )
+-          set(system_libs ${system_libs} pthread)
+-        endif()
+-      endif( MINGW )
+-    endif( NOT MSVC )
+-    set(${return_var} ${system_libs} PARENT_SCOPE)
+-  endfunction(get_system_libs)
+-
+-  # Now set the header paths.
+-  execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --includedir
+-                  OUTPUT_VARIABLE LLVM_INCLUDE_DIR
+-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+-  include_directories( ${LLVM_INCLUDE_DIR} )
+-
+-  # Get the TARGET_TRIPLE
+-  execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --host-target
+-                  OUTPUT_VARIABLE TARGET_TRIPLE
+-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+-
+-  # And then set the cxx flags.
+-  execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --cxxflags
+-                  OUTPUT_VARIABLE LLVM_CXX_FLAGS
+-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+-  set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${LLVM_CXX_FLAGS})
+-
+-  # Check LLVM_ENABLE_ASSERTIONS
+-  execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --assertion-mode
+-                  OUTPUT_VARIABLE LLVM_ENABLE_ASSERTIONS
+-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+-  # Copied from LLVM's HandleLLVMOptions.cmake
+-  if( LLVM_ENABLE_ASSERTIONS )
+-    # MSVC doesn't like _DEBUG on release builds. See PR 4379.
+-    if( NOT MSVC )
+-      add_definitions( -D_DEBUG )
+-    endif()
+-    # On non-Debug builds cmake automatically defines NDEBUG, so we
+-    # explicitly undefine it:
+-    if( NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" )
+-      add_definitions( -UNDEBUG )
+-      # Also remove /D NDEBUG to avoid MSVC warnings about conflicting defines.
+-      foreach (flags_var_to_scrub
+-          CMAKE_CXX_FLAGS_RELEASE
+-          CMAKE_CXX_FLAGS_RELWITHDEBINFO
+-          CMAKE_CXX_FLAGS_MINSIZEREL
+-          CMAKE_C_FLAGS_RELEASE
+-          CMAKE_C_FLAGS_RELWITHDEBINFO
+-          CMAKE_C_FLAGS_MINSIZEREL)
+-        string (REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " "
+-          "${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
+-      endforeach()
+-    endif()
++  option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)
++
++  # Rely on llvm-config.
++  set(CONFIG_OUTPUT)
++  find_program(LLVM_CONFIG "llvm-config")
++  if(LLVM_CONFIG)
++    message(STATUS "Found LLVM_CONFIG as ${LLVM_CONFIG}")
++    set(CONFIG_COMMAND ${LLVM_CONFIG}
++      "--assertion-mode"
++      "--bindir"
++      "--libdir"
++      "--includedir"
++      "--prefix"
++      "--src-root")
++    execute_process(
++      COMMAND ${CONFIG_COMMAND}
++      RESULT_VARIABLE HAD_ERROR
++      OUTPUT_VARIABLE CONFIG_OUTPUT
++    )
++    if(NOT HAD_ERROR)
++      string(REGEX REPLACE
++        "[ \t]*[\r\n]+[ \t]*" ";"
++        CONFIG_OUTPUT ${CONFIG_OUTPUT})
++    else()
++      string(REPLACE ";" " " CONFIG_COMMAND_STR "${CONFIG_COMMAND}")
++      message(STATUS "${CONFIG_COMMAND_STR}")
++      message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}")
++
++     endif()
++  else()
++    message(FATAL_ERROR "llvm-config not found -- ${LLVM_CONFIG}")
++  endif()
++
++  list(GET CONFIG_OUTPUT 0 ENABLE_ASSERTIONS)
++  list(GET CONFIG_OUTPUT 1 TOOLS_BINARY_DIR)
++  list(GET CONFIG_OUTPUT 2 LIBRARY_DIR)
++  list(GET CONFIG_OUTPUT 3 INCLUDE_DIR)
++  list(GET CONFIG_OUTPUT 4 LLVM_OBJ_ROOT)
++  list(GET CONFIG_OUTPUT 5 MAIN_SRC_DIR)
++      
++  if(NOT MSVC_IDE)  
++    set(LLVM_ENABLE_ASSERTIONS ${ENABLE_ASSERTIONS}
++      CACHE BOOL "Enable assertions")
++    # Assertions should follow llvm-config's.
++    mark_as_advanced(LLVM_ENABLE_ASSERTIONS)
++  endif()
++      
++  set(LLVM_TOOLS_BINARY_DIR ${TOOLS_BINARY_DIR} CACHE PATH "Path to llvm/bin")
++  set(LLVM_LIBRARY_DIR ${LIBRARY_DIR} CACHE PATH "Path to llvm/lib")
++  set(LLVM_MAIN_INCLUDE_DIR ${INCLUDE_DIR} CACHE PATH "Path to llvm/include")
++  set(LLVM_DIR ${LLVM_OBJ_ROOT}/cmake/modules/CMakeFiles CACHE PATH "Path to LLVM build tree CMake files")
++  set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH "Path to LLVM build tree")
++  set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree")
++    
++  find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR}
++    NO_DEFAULT_PATH)
++  
++  set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/share/llvm/cmake")
++  set(LLVMCONFIG_FILE "${LLVM_CMAKE_PATH}/LLVMConfig.cmake")
++  if(EXISTS ${LLVMCONFIG_FILE})
++    list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")                                                                                                                                     
++    include(${LLVMCONFIG_FILE})
++  else()
++    message(FATAL_ERROR "Not found: ${LLVMCONFIG_FILE}")
++  endif()
++
++  # They are used as destination of target generators.
++  set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
++  set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
++  if(WIN32 OR CYGWIN)
++    # DLL platform -- put DLLs into bin.
++    set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
++  else()
++    set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
+   endif()
+ 
+-  # Make sure the isl c files are built as fPIC
+-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
++  include(AddLLVM)
++  include(HandleLLVMOptions)
++  include(TableGen)
++
++  # Import CMake library targets from LLVM and Clang.
++  include("${LLVM_OBJ_ROOT}/share/llvm/cmake/LLVMConfig.cmake")
++  set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}")
++  set(LLVM_BINARY_DIR ${CMAKE_BINARY_DIR})
++
++  set(CMAKE_INCLUDE_CURRENT_DIR ON)



Home | Main Index | Thread Index | Old Index