summaryrefslogtreecommitdiff
path: root/polly
AgeCommit message (Collapse)Author
2018-09-27[IslAst] Fix InParallelFor nesting.Michael Kruse
IslAst could mark two nested outer loops as "OutermostParallel". It caused that the code generator tried to OpenMP-parallelize both loops, which it is not prepared loop. It was because the recursive AST build algorithm managed a flag "InParallelFor" to ensure that no nested loop is also marked as "OutermostParallel". Unfortunatetly the same flag was used by nodes marked as SIMD, and reset to false after the SIMD node. Since loops can be marked as SIMD inside "OutermostParallel" loops, the recursive algorithm again tried to mark loops as "OutermostParellel" although still nested inside another "OutermostParallel" loop. The fix exposed another bug: The function "astScheduleDimIsParallel" was only called when a loop was potentially "OutermostParallel" or "InnermostParallel", but as a side-effect also determines the minimum dependence distance. Hence, changing when we need to know whether a loop is "OutermostParallel" also changed which loop was annotated with "#pragma minimal dependence distance". Moreover, some complex condition linked with "InParallelFor" determined whether a loop should be an "InnermostParallel" loop. It missed some situations where it would not use mark as such although being inside an SIMD mark node, and therefore not be annotated using "#pragma simd". The changes in particular: 1. Split the "InParallelFor" flag into an "InParallelFor" and an "InSIMD" flag. 2. Unconditionally call "astScheduleDimIsParallel" for its side-effects and store the result in "InParallel" for later use. 3. Simplify the condition when a loop is "InnermostParallel". Fixes llvm.org/PR33153 and llvm.org/PR38073.
2018-09-26[doc] Fix HowToManuallyUseTheIndividualPiecesOfPollyMichael Kruse
Also remove compiled binaries.
2018-09-26Move www/experiments to docs/experimentsMichael Kruse
2018-09-21fix the scan-build urlsSylvestre Ledru
2018-09-11[ScopDetection] Use addUnknown for calls in the AliasSetTracker.Eli Friedman
The general-purpose add() now sometimes adds unexpected loop-variant pointers to the AliasSetTracker, so certain loops would be rejected with -polly-allow-modref-calls. Use addUnknown() instead, which has the old behavior. I'm not completely convinced the resulting behavior is actually correct: ScopDetection::isValidAccess seems to mostly ignore "unknown" instructions in the AliasSetTracker. But it's not any worse than what was happening before. Committing without pre-commit review to unbreak the buildbots; the following tests were failing: test/ScopInfo/mod_ref_access_pointee_arguments.ll test/ScopInfo/mod_ref_read_pointee_arguments.ll test/ScopInfo/multidim_2d_with_modref_call_2.ll
2018-09-11 [PerfMonitor] Fix rdtscp callsitesTobias Grosser
Summary: Update all rdtscp callsites in PerfMonitor so that they conform with the signature changes introduced in r341698. Reviewers: grosser, bollu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D51928
2018-08-26[IR] Replace `isa<TerminatorInst>` with `isTerminator()`.Chandler Carruth
This is a bit awkward in a handful of places where we didn't even have an instruction and now we have to see if we can build one. But on the whole, this seems like a win and at worst a reasonable cost for removing `TerminatorInst`. All of this is part of the removal of `TerminatorInst` from the `Instruction` type hierarchy.
2018-08-17[AST] Adapt Polly to AnalysisSetTracker changes. NFC.Michael Kruse
The method AliasSetTracker::getAliasSetForPointer was removed and replaced by AliasSetTracker::getAliasSetFor for the restructuring in r339930. Since Polly uses AliasSetTracker::getAliasSetForPointer, a temporary fix has been committed in r339937 with a comment: Can someone from polly please migrate usage and then delete the wrapper? This commit is doing exactly that.
2018-08-10[DepInfo] Use isl++ in Dependences::isValidSchedule. NFC.Michael Kruse
Also change StatementToIslMapTy to hold isl::map, because it is used as a parameter.
2018-08-09Update isl-cpp bindingsTobias Grosser
We upstreamed the export of isl_val_2exp, to the official cpp bindings. In this process, we concluded that pow2 is a better and more widely used name for this functionality. Hence, both the official isl-cpp bindings and our derived variant use now the term pow2.
2018-08-09Update to isl-0.20-65-gb822a210Tobias Grosser
This update fixes https://https:/llvm.org/PR38348. Thanks Michael for reporting the issue to isl and Sven for fixing the issue.
2018-08-07Update isl to isl-0.20-48-g13eba5b5Tobias Grosser
This is a regular maintenance updated.
2018-08-07Make update-isl work with latest isl versionsTobias Grosser
Latest isl versions require clang to build a 'dist' package. Make sure we actually ask for it. While being there, also make sure we build isl on all cores.
2018-08-02[JSONExporter] Print instead of ignoring parser error.Michael Kruse
Silence the warning warning: ignoring return value of function declared with 'warn_unused_result' attribute [-Wunused-result] JSONExporter is a developer tool, there is no mechanism for error handling. Print the parser error and abort with a fatal error.
2018-08-01[ScopBuilder] Set domain to empty instead of NULL.Michael Kruse
The domain generation used nullptr to mark the domain of an error block as never-executed. Later, nullptr domains are recreated with a zero-tuple domain that then mismatches with the expected domain the error block within the loop. Instead of using nullptr, assign an empty domain which preserves the expected space. Remove empty domains during SCoP simplification. Fixes llvm.org/PR38218.
2018-08-01Update docs version and clear release notes after 8.0.0 version bumpHans Wennborg
2018-08-01PPCG codegenTobias Grosser
The latest version of the isl C++ bindings does not export the 'set' method yet. Fall back to the C interface until this method can be exported.
2018-08-01[isl++] drop the isl namespace qualifiers [NFC]Tobias Grosser
These namespace qualifiers are not needed. Dropping them brings us closer to the official isl namespace qualifiers. While the delta of this change set is large, it only mechanically drops the 'isl::' prefixes.
2018-08-01Rebase C++ bindings on top of latest isl bindingsTobias Grosser
The main difference in this change is that isl_stat is now always checked by default. As we elminiated most used of isl_stat, thanks to Philip Pfaffe's implementation of foreach, only a small set of changes is needed. This change does not include the following recent changes to isl's C++ bindings: - stricter error handling for isl_bool - dropping of the isl::namespace qualifiers The former requires a larger patch in Polly and consequently should go through a patch-review. The latter will be applied in the next commit to keep this commit free from noise. We also still apply a couple of other changes on top of the official isl bindings. This delta is expected to shrink over time.
2018-08-01Update to isl-0.20-35-ge0a98b62Tobias Grosser
2018-08-01[JSONExporter] Try to appease buildbot. NFC.Michael Kruse
The compiler does not seem to able move a local variable in the function's return statement.
2018-08-01[Polly-ACC] Fix compilation after r338450. NFC.Michael Kruse
2018-08-01[JSONExporter] Replace bundled Jsoncpp with llvm/Support/JSON.h. NFC.Michael Kruse
Differential Revision: https://reviews.llvm.org/D49950
2018-07-31[CodeGen] Convert IslNodeBuilder::getNumberOfIterations to isl++. NFC.Michael Kruse
2018-07-31[CodeGen] Convert IslNodeBuilder::createForSequential to isl++. NFC.Michael Kruse
2018-07-31[CodeGen] Convert IslNodeBuilder::getUpperBound to isl++. NFC.Michael Kruse
2018-07-28[test] Remove non-JSPON comments in JSCOP file. NFC.Michael Kruse
2018-07-23[isl] Simplify iterator implementation by building on top of list accessorsPhilip Pfaffe
Summary: With the new accessors, it's straightforward to use the templated iterator instead of subclassing it for all the list types. Depends on D49019 Reviewers: grosser, Meinersbur, bollu Reviewed By: grosser Subscribers: mehdi_amini, steven_wu, dexonsmith, pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D49021
2018-07-17[DependenceInfo] Use isl++ to replace foreach_set with for loopTobias Grosser
2018-07-17[IslNodeBuilder] Use isl++ to replace foreach_set with for loopTobias Grosser
2018-07-17[ScopInfo] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[ZoneAlgo] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[FlattenSchedule] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[MaximalStaticExpansion] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[ForwardOpTree] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[Simplify] Replace isl foreach calls with for loopsTobias Grosser
2018-07-17[FlattenAlgo] Replace more isl foreach calls with for loopsTobias Grosser
This time we replace for loops where the return isl::stat::error has been used to carry status information. There are still two uses of foreach remaining as we do not have a corresponding for implementation for pw_aff functions.
2018-07-17[FlattenAlgo] Replace some isl foreach calls with for loopsTobias Grosser
Replace foreach calls which only return 'ok' with for loops.
2018-07-17[unittest/DeLICM] Replace isl foreach calls with for loopsTobias Grosser
2018-07-16[ScopInfo] Replace isl foreach calls with for loopsTobias Grosser
After Philip added support for range-based for loops to our C++ bindings, we now convert another bunch of foreach calls to range-for loops. This improves general readability of the code.
2018-07-13[Polly][isl] Add neutrally-named accessors to isl list elements and sizesPhilip Pfaffe
Summary: This could simplify the isl iterator implementation a lot. Reviewers: grosser, Meinersbur, bollu Reviewed By: grosser Subscribers: pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D49019
2018-07-09[Docs] Fix generation of manpages.Michael Kruse
Fix the following error when Sphinx generates the Polly manpage: Warning, treated as error: docs/Performance.rst:: WARNING: "table cell spanning" not supported
2018-07-06Add a file that was missing in r336425Philip Pfaffe
2018-07-06Update isl to isl-0.19-224-gce84a511Tobias Grosser
This is a maintenance update. Besides many minor changes it ships two functions "isl_*_list_size" and "isl_*_list_get_at" which will allow us to simplify the iterator implementation in Polly.
2018-07-05[ScopInfo] Move foldSizeConstantsToRight() to isl++Tobias Grosser
Summary: This patch updates the isl interface used in `foldSizeConstantsToRight()` to the new C++ interface. Reviewers: chelini, grosser, philip.pfaffe, Meinersbur Reviewed By: grosser Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D48965
2018-07-05[CodeGen] Fix potential null pointer dereference. NFC.Michael Kruse
ScalarEvolution::getSCEV dereferences its argument, s.t. passing nullptr leads to undefined behaviour. Check for nullptr before calling it instead of checking its argument afterwards.
2018-07-04[PPCGCodeGen] Change printf to outs() to prevent garbled output. [NFC]Siddharth Bhat
Summary: It appears that llvm uses unbuffered C++ streams. So, we should not mix C and C++ stream operations, because that will give us mixed up output. Reviewers: efriedma, jdoerfert, Meinersbur, gareevroman, sebpop, zinob, huihuiz, pollydev, grosser, singam-sanjay, philip.pfaffe Reviewed By: philip.pfaffe Subscribers: nemanjai, kbarton Differential Revision: https://reviews.llvm.org/D40126
2018-07-04ScopInfo: simplify equivalence classes before storing them [NFCI]Tobias Grosser
This change has no impact on upstream Polly directly, but reduces output noise for some internal isl versions we are testing. In general, storing simpler and more canonical output is a good idea. Hence, it seems useful to upstream this change.
2018-07-04[Polly-ACC] Add isl_space.h to gpu_tree.cSiddharth Bhat
Summary: This patch adds <isl_space.h> to gpu_tree.c. This prevents a segfault when allocating a new isl_space in the function create_sync_domain(), as the compiler now knows that the return type is a pointer instead of assuming the function returns an int. This has been updated in upstream PPCG, so we should bump up our PPCG version. Initially discovered by Philip Pfaffe in Polly. Reviewers: grosser, bollu, philip.pfaffe Reviewed By: bollu Subscribers: nemanjai, kbarton, llvm-commits Differential Revision: https://reviews.llvm.org/D48883 Contributed-by: Alain Denzler <alaindenzler@gmail.com>
2018-07-02Fix for r336080: Missing colon in REQUIRES linePhilip Pfaffe