summaryrefslogtreecommitdiffstats
path: root/polly/lib/External
Commit message (Collapse)AuthorAgeFilesLines
...
* Update ISL to isl-0.17.1-200-gd8de4ea.Michael Kruse2016-08-1722-4403/+7016
| | | | | | This version fixes a bug in set coalescing. llvm-svn: 278936
* GPGPU: Emit data-transfer codeTobias Grosser2016-07-251-0/+2
| | | | | | | Also factor out getArraySize() to avoid code dupliciation and reorder some function arguments to indicate the direction into which data is transferred. llvm-svn: 276636
* Update isl to isl-0.17.1-191-g540b2fdTobias Grosser2016-07-2010-199/+227
| | | | | | This update resolves a bug in computing lexicographic minima/maxima. llvm-svn: 276138
* Update isl to isl-0.17.1-171-g233f589Tobias Grosser2016-07-205-36/+115
| | | | | | | This fixes an issue with equality detection that resulted in an assertion being triggered during coalescing. llvm-svn: 276094
* GPGPU: collect array referencesTobias Grosser2016-07-182-1/+2
| | | | | | | | | | | Initialize the list of references to a GPU array to ensure that the arrays that need to be passed to kernel calls are computed correctly. Furthermore, the very same information is also necessary to compute synchronization correctly. As the functionality to compute these references is already available, what is left for us to do is only to connect the necessary functionality to compute array reference information. llvm-svn: 275798
* GPGPU: Abort if any dummy function is calledTobias Grosser2016-07-161-44/+141
| | | | | | | | | | | This ensures that accidental calls to these functions will break loadly instead of corrupting the stack with invalid return values. These functions have been introduced earlier as replacement of pet and parts of ppcg which we will never use and consequently have not been imported or compiled into Polly. llvm-svn: 275680
* GPGPU: Do not check for hidden declarationsTobias Grosser2016-07-151-0/+2
| | | | | | | | | | We do not have them in Polly and the code to check for them is directly referring to pet data structures which we do not have available. This commit avoids undefined behavior. As such issues are difficult to reproduce, this commit comes without a test case. llvm-svn: 275553
* GPGPU: Model array access informationTobias Grosser2016-07-152-1/+3
| | | | | | This allows us to derive host-device and device-host data-transfers. llvm-svn: 275535
* GPGPU: Generate an AST for the GPU-mapped scheduleTobias Grosser2016-07-144-10/+16
| | | | | | | | | | For this we need to provide an explicit list of statements as they occur in the polly::Scop to ppcg. We also setup basic AST printing facilities to facilitate debugging. To allow code reuse some (minor) changes in ppcg are have been necessary. llvm-svn: 275436
* GPGPU: Add dummy implementation for ast expression constructionTobias Grosser2016-07-142-4/+19
| | | | | | | | | | | | | Instead of calling to a pet function that does not return anything, we pass our own dummy implementation to ppcg that always returns a nullptr. This ensures that the list of ast expressions always contains a nullptr and we do not accidentally free a random (uninitalized) pointer. This resolves the last valgrind warning we see. We provide an implementation for this function, when the generated AST expressions can be used and consequently can be tested. llvm-svn: 275435
* GPGPU: Map initial schedule to GPU scheduleTobias Grosser2016-07-142-2/+5
| | | | | | | | This change now applies ppcg's GPU mapping on our initial schedule. For this to work, we need to also initialize the set of all names (isl_ids) used in the scop as well as the program context. llvm-svn: 275396
* GPGPU: compute new schedule from polly scopTobias Grosser2016-07-144-3/+6
| | | | | | | | | | | | | | | | | | | | To do so we copy the necessary information to compute an initial schedule from polly::Scop to ppcg's scop. Most of the necessary information is directly available and only needs to be passed on to ppcg, with the exception of 'tagged' access relations, access relations that additionally carry information about which memory access an access relation originates from. We could possibly perform the construction of tagged accesses as part of ScopInfo, but as this format is currently specific to ppcg we do not do this yet, but keep this functionality local to our GPU code generation. After the scop has been initialized, we compute data dependences and ask ppcg to compute an initial schedule. Some of this functionality is already available in polly::DependenceInfo and polly::ScheduleOptimizer, but to keep differences to ppcg small we use ppcg's functionality here. We may later investiage if a closer integration of these tools makes sense. llvm-svn: 275390
* GPGPU: create default initialized PPCG scop and gpu programTobias Grosser2016-07-142-1/+5
| | | | | | | | | | | | | | At this stage, we do not yet modify the IR but just generate a default initialized ppcg_scop and gpu_prog and free both immediately. Both will later be filled with data from the polly::Scop and are needed to use PPCG for GPU schedule generation. This commit does not yet perform any GPU code generation, but ensures that the basic infrastructure has been put in place. We also add a simple test case to ensure the new code is run and use this opportunity to verify that GPU_CODEGEN tests are only run if GPU code generation has been enabled in cmake. llvm-svn: 275389
* Add ppcg-0.04 to lib/ExternalTobias Grosser2016-07-1376-6/+55858
| | | | | | | | | | | | | | | | | | | | | | | ppcg will be used to provide mapping decisions for GPU code generation. As we do not use C as input language, we do not include pet. However, we include pet.h from pet 82cacb71 plus a set of dummy functions to ensure ppcg links without problems. The version of ppcg committed is unmodified ppcg-0.04 which has been well tested in the context of LLVM. It does not provide an official library interface yet, which means that in upcoming commits we will add minor modifications to make necessary functionality accessible. We will aim to upstream these modifications after we gained enough experience with GPU generation support in Polly to propose a stable interface. Reviewers: Meinersbur Subscribers: pollydev, llvm-commits Differential Revision: http://reviews.llvm.org/D22033 llvm-svn: 275274
* isl: isl-0.17.1-164-gcbba1b6Tobias Grosser2016-07-0642-707/+1454
| | | | | | | | | | | This is a regular maintenance update to ensure the latest version of isl is tested. Interesting Changes: - AST nodes and expressions are now printed as YAML llvm-svn: 274614
* Update isl to isl-0.17.1-84-g72ffe88Tobias Grosser2016-06-2323-320/+1038
| | | | | | | This is a regular maintenance update to ensure we are testing with a recent version of isl. llvm-svn: 273597
* Update isl to isl-0.17.1-57-g1879898Tobias Grosser2016-06-1284-7240/+5201
| | | | | | | | | | | | | | | | | | | | | | | | | | | With this update the isl AST generation extracts disjunctive constraints early on. As a result, code that previously resulted in two branches with (close-to) identical code within them: if (P <= -1) { for (int c0 = 0; c0 < N; c0 += 1) Stmt_store(c0); } else if (P >= 1) for (int c0 = 0; c0 < N; c0 += 1) Stmt_store(c0); results now in only a single branch body: if (P <= -1 || P >= 1) for (int c0 = 0; c0 < N; c0 += 1) Stmt_store(c0); This resolves http://llvm.org/PR27559 Besides the above change, this isl update brings better simplification of sets/maps containing existentially quantified dimensions and fixes a bug in isl's coalescing. llvm-svn: 272500
* Update isl to isl-0.17-5-g57dc5ffTobias Grosser2016-05-077-5/+65
| | | | | | This update fixes an assertion in the isl scheduler. llvm-svn: 268853
* Update to ISL 0.17.Michael Kruse2016-05-0463-7172/+9555
| | | | | | | | | | | | This release includes sevaral improvments compared to the previous version isl-0.16.1-145-g243bf7c (from the ISL 0.17 announcement): - optionally combine SCCs incrementally in scheduler - optionally maximize coincidence in scheduler - optionally avoid loop coalescing in scheduler - minor AST generator improvements - improve support for expansions in schedule trees llvm-svn: 268500
* Add files forgotten in r264452Tobias Grosser2016-03-256-0/+51
| | | | llvm-svn: 264460
* Update to isl-0.16.1-145-g243bf7cTobias Grosser2016-03-2569-1113/+2764
| | | | | | | Just an import to keep track with the latest version of isl. We are not looking for specific features. llvm-svn: 264452
* Update to isl-0.16.1-68-g8fad211Tobias Grosser2016-02-2643-258/+1668
| | | | | | | | This commit updates to the latest isl development version. There is no specific feature we need on the Polly side, but we want to ensure test coverage for the latest isl changes. llvm-svn: 262001
* Update to isl-0.16.1-20-gee54b48Tobias Grosser2016-02-0415-119/+1875
| | | | | | | | | | | | | | | | | | | | This includes some (optional) improvements to the isl scheduler, which we do not use yet, as well as a fix for a bug previously also affecting Polly: commit 662ee9b7d45ebeb7629b239d3ed43442e25bf87c Author: Sven Verdoolaege <skimo@kotnet.org> Date: Mon Jan 25 16:59:32 2016 +0100 isl_basic_map_realign: perform Gaussian elimination on result Many parts of isl assume that Gaussian elimination has been applied to the equality constraints. In particular singleton_extract_point makes this assumption. The input to singleton_extract_point may have undergone parameter alignment. This parameter alignment (ultimately performed by isl_basic_map_realign) therefore needs to make sure the result preserves this property llvm-svn: 259757
* Update to ISL 0.16.1Michael Kruse2016-01-1574-919/+3313
| | | | llvm-svn: 257898
* Add option to update-isl.sh for specific commitMichael Kruse2016-01-151-1/+4
| | | | | | | This is used e.g. to update specifically to ISL 0.16.1 although newer revisions exist in the official repository. llvm-svn: 257895
* Update isl to isl-0.15-142-gf101714Tobias Grosser2015-12-044-34/+97
| | | | | | | | | | This update brings in improvements to isl's 'isolate' option that reduce the number of code versions generated. This results in both code-size and compile time reduction for outer loop vectorization. Thanks to Roman Garev and Sven Verdoolaege for working on this improvement. llvm-svn: 254706
* Update isl to isl-0.15-140-g9279e30Michael Kruse2015-12-0215-272/+304
| | | | | | | | | | The motivation is to fix a compilation error with Visual Studio 2013. See http://reviews.llvm.org/D14886. Thanks to Sumanth Gundapaneni for finding the issue and suggesting a patch. llvm-svn: 254498
* Add script to update islMichael Kruse2015-12-022-0/+28
| | | | | | | | | The script will checkout the most recent master from http://repo.or.cz/isl.git into /tmp, create a distribution tarball, and extract it as replacement of lib/External/isl. After that it can be committed to the Polly repository. llvm-svn: 254497
* isl: Update to isl-0.15-136-g4d5654aTobias Grosser2015-11-219-8/+160
| | | | | | | | The most interesting change for Polly in this isl update is 4d5654af which in certain cases can speed up the construction of run-time checks from an isl set consisting of several disjuncts significantly. llvm-svn: 253794
* Fix configure checks when applied by the latest clangDavid Blaikie2015-10-061-3/+3
| | | | | | | | | | | | Clang's been taught to warn on more things here (unused values when calling pure functions and ignoring their result, for example). It might be better to figure out how to have cmake compile these tests without -Werror/without any warnings enabled. But this'll do for now & I don't know enough about cmake to fix it any other way, or to understand the tradeoffs in that space. llvm-svn: 249472
* [cmake] terminate isl/stdint.h with a newlineTobias Grosser2015-09-251-1/+1
| | | | | | | This avoids warnings of the form: stdint.h:1:20: warning: no newline at end of file [-Wnewline-eof] llvm-svn: 248570
* Rename Polly_isl to PollyISLMichael Kruse2015-09-241-3/+3
| | | | | | Library names in the LLVM framework usually do not contain underscores. llvm-svn: 248487
* Compile ISL into its own libraryMichael Kruse2015-09-241-0/+278
| | | | | | | | | | | | | | | | | | | | | | Refactor all ISL-related cmake build instructions into its own CMakeLists.txt and build as a separate library. This is useful to apply ISL-related build flags to ISL only and not to Polly's files. Also, it the separation of both projects becomes clearer. Proposed name of the library is Polly_isl. It is not "isl" to avoid mix-up with potentially installed libisl.{a|so}. Tested configurations: - Windows with cmake 3.2 - Ubuntu with cmake 3.0.2 - Ubuntu with cmake 3.0.2 BUILD_SHARED_LIBS on - Ubuntu with cmake 2.8.12.2 (LLVM minimum version) - Ubuntu out-of-LLVM-tree Differential Revision: http://reviews.llvm.org/D12810 llvm-svn: 248484
* Update isl to isl-0.15-129-gb086c90Tobias Grosser2015-09-0121-98/+258
| | | | llvm-svn: 246552
* Update isl to isl-0.15-117-ge42acfeTobias Grosser2015-08-1119-286/+737
| | | | | | | | | | | Besides other changes this version of isl contains a fundamental fix to memory corruption issues we have seen with imath-32 backed isl_ints. This update also contains a fix that ensures that the schedule-tree based version of isl's dependence analysis takes the domain of the schedule into account. llvm-svn: 244585
* Compile fix; add missing ISL filesMichael Kruse2015-07-242-0/+662
| | | | | | The last ISL update added two files that we must also add to Polly. llvm-svn: 243142
* Update isl to isl-0.15-86-g595055eTobias Grosser2015-07-2421-391/+352
| | | | | | | Besides a couple of cleanups and refactorings in isl, this change set fixes a couple of bugs in isl, that can cause issues during code generation. llvm-svn: 243110
* isl: Translate brisebarre to use UNIX line endingsTobias Grosser2015-07-231-34/+34
| | | | | | | A similar patch will be upstreamed to ISL. We commit this ahead of time to unblock people that are annoyed the permanent diffs we see in git. llvm-svn: 243020
* Update ISL to isl-0.15-61-gcea776fMichael Kruse2015-07-2125-456/+607
| | | | | | | The motivation is to fix a wrong use of the inline qualifier. This fixes the Polly build using Visual Studio 2015 RC. llvm-svn: 242780
* Remove gitconfig.h.cmakeMichael Kruse2015-07-211-1/+0
| | | | | | | | It is just one line which can be better generated in the CMakeLists.txt itself, just as ISL's configure does. Reviewers: grosser llvm-svn: 242771
* Add configure-time test for latest ISLMichael Kruse2015-07-211-4/+35
| | | | | | | | | | Query the isl_config.h macros recently added to ISL. One of it looks for the ffs (find first set), whose functionality is available in Visual Studio with _BitScanForward. Also add isl_ffs.c to the source files which contains the implementation of ffs using _BitScanForward. Reviewers: grosser llvm-svn: 242770
* Update isl to isl-0.15-35-ga1e44f0Tobias Grosser2015-07-025-29/+106
| | | | | | This fixes a memory leak with in the sioimath backend. llvm-svn: 241247
* Remove versions from README and add update instructionsTobias Grosser2015-07-021-2/+2
| | | | llvm-svn: 241246
* Update isl to isl-0.15-30-g3518765Tobias Grosser2015-06-3051-144/+902
| | | | | | | | This updated contains various changes to isl, including improvements to the AST generator. For Polly, the most important change is a fix that unbreaks builds on darwin (reported by: Jack Howard) llvm-svn: 241048
* Replace repository version of ISL by 'make dist' outputMichael Kruse2015-06-22106-26716/+49023
| | | | | | | | | | | The 'make dist' archive is not dependent on ./configure output and contains a GIT_HEAD_ID file that identifies the version of ISL used. None of the files added or removed are used part of Polly's build process (except of GIT_HEAD_ID since the previous revision r240301). No functional change intended. llvm-svn: 240306
* Prepare replacing ISL by its 'make dist' filesMichael Kruse2015-06-222-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the Polly repository contains the ISL sources with bogus isl_config.h and gitversion.h. This is problematic. In this state a macro #define __attribute__(x) becomes active in the source, leading to various problems e.g. when included before system header files. This patch will instead generate the two files specific to the host system at configure-time. For CMake, we replicate the tests that ISL's configure performs using try_compile(). In autotools build, we just invoke ISL's configure to generate the two files. This consequently required regenerating autoconf/configure. 'make dist' distributions of ISL contain a file GIT_HEAD_ID which contains the version the distribution is derived from. The repository files themselves do not contain such a hint. In a later commit we will replace the isl directory by the contents of such a .tar.gz. It does not contain the files imdrover.c iprime.c pi.c and rsamath.c currently compiled into Polly, but not used and therefore are removed by this patch. In the long term we plan to generate a dedicated library for ISL instead of adding its files to Polly. This also does not yet include the switch to small-integer optimized ISL nor enabling C99 mode required for the former. Those will come as well in separate patches. Differential version: http://reviews.llvm.org/D10603 Reviewers: grosser llvm-svn: 240301
* Update external project versions in README.txtMichael Kruse2015-06-181-2/+2
| | | | | | | | This was meant to committed in r240027, but was left behind because svn, in contrast to git, only commits the changes in the directory you are currently in. llvm-svn: 240034
* Update ISL to isl-0.15-3-g532568aMichael Kruse2015-06-1841-124/+2608
| | | | | | | | | | | | | | This version adds small integer optimization, but is not active by default. It will be enabled in a later commit. The schedule-fuse=min/max option has been replaced by the serialize-sccs option. Adapting Polly was necessary, but retaining the name polly-opt-fusion=min/max. Differential Revision: http://reviews.llvm.org/D10505 Reviewers: grosser llvm-svn: 240027
* Update isl to 93b8e43dTobias Grosser2015-05-2895-3526/+2411
| | | | | | | This update brings mostly interface cleanups, but also fixes two bugs in imath (a memory leak, some undefined behavior). llvm-svn: 238422
* Update isl to 6be6768eTobias Grosser2015-05-1817-166/+108
| | | | | | | | Besides a couple of interface cleanups, this change also contains a performance optimization of isl_mat_product that should give us up to almost 6% compiletime reduction. llvm-svn: 237616
OpenPOWER on IntegriCloud