summaryrefslogtreecommitdiffstats
path: root/polly/lib/CodeGen/IslExprBuilder.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Allow multidimensional accesses in the IslExprBuilder.Johannes Doerfert2014-10-051-7/+22
| | | | | | | | | This resolved the issues with delinearized accesses that might alias, thus delinearization doesn't deactivate runtime alias checks anymore. Differential Revision: http://reviews.llvm.org/D5614 llvm-svn: 219078
* Introduce the ScopArrayInfo class.Johannes Doerfert2014-10-051-26/+16
| | | | | | | | | | | | | | | | | | | This class allows to store information about the arrays in the SCoP. For each base pointer in the SCoP one object is created storing the type and dimension sizes of the array. The objects can be obtained via the SCoP, a MemoryAccess or the isl_id associated with the output dimension of a MemoryAccess (the description of what is accessed). So far we use the information in the IslExprBuilder to create the right base type before indexing into the base array. This fixes the bug http://llvm.org/bugs/show_bug.cgi?id=21113 (both test cases are included). On top of that we can now build runtime alias checks for delinearized arrays as the dimension sizes are also part of the ScopArrayInfo objects. Differential Revision: http://reviews.llvm.org/D5613 llvm-svn: 219077
* [Fix] Allow pointer types as access elements and compare them correctlyJohannes Doerfert2014-09-191-10/+19
| | | | | | | | | | | This fixes two problems which are usualy caused together: 1) The elements of an isl AST access expression could be pointers not only integers, floats and vectores thereof. 2) The runtime alias checks need to compare pointers but if they are of a different type we need to cast them into a "max" type similar to the non pointer case. llvm-svn: 218113
* [RTC] Runtime Alias Checks for the ISL backendJohannes Doerfert2014-09-181-2/+4
| | | | | | | | | | | | | | | | | This change will build all alias groups (minimal/maximal accesses to possible aliasing base pointers) we have to check before we can assume an alias free environment. It will also use these to create Runtime Alias Checks (RTC) in the ISL code generation backend, thus allow us to optimize SCoPs despite possibly aliasing pointers when this backend is used. This feature will be enabled for the isl code generator, e.g., --polly-code-generator=isl, but disabled for: - The cloog code generator (still the default). - The case delinearization is enabled. - The case non-affine accesses are allowed. llvm-svn: 218046
* Allow the IslExprBuilder to build address of expressionsJohannes Doerfert2014-09-181-2/+27
| | | | llvm-svn: 218045
* Allow the IslExprBuilder to compare pointersJohannes Doerfert2014-09-181-24/+27
| | | | llvm-svn: 218044
* Updated to isl 2c19ecd444095d6f560349018f68993bc0e03691Johannes Doerfert2014-09-181-0/+1
| | | | | | Changed test cases and fixed warnings. llvm-svn: 218043
* Fix the modifiable access creationJohannes Doerfert2014-08-031-7/+24
| | | | | | | | | | | | + Remove the class IslGenerator which duplicates the functionality of IslExprBuilder. + Use the IslExprBuilder to create code for memory access relations. + Also handle array types during access creation. + Enable scev codegen for one of the transformed memory access tests, thus access creation without canonical induction variables available. + Update one test case to the new output. llvm-svn: 214659
* Allow the IslExprBuilder to generate access operationsJohannes Doerfert2014-08-031-1/+34
| | | | llvm-svn: 214658
* [Refactor] Expose the IslExprBuilder (missing files)Johannes Doerfert2014-07-291-0/+395
llvm-svn: 214220
OpenPOWER on IntegriCloud