forked from OSchip/llvm-project
9fb3ab1b19
One of the current limitations of DeLICM is that it only creates PHI WRITEs that it knows are read by some PHI. Such writes may not span all instances of a statement. Polly's code generator currently does not support MemoryAccesses that are not executed in all instances ('partial accesses') and so has to give up on a possible mapping. This workaround has once been suggested by Tobias Grosser: Try to interpolate an arbitrary expansion to all instances. It will be checked for possible conflicts with the existing Knowledge and can be applied if the conflict checking result is that no semantics are changed. Expansion is done by simplifying the mapping by coalescing with the hope that coalescing will find a polyhedral 'rule' of the relevant map. It is then 'gist'-ed using the domain of the relevant instances such that the rule is expanded to the universe and finally intersected with the domain of all statement instances. The expansion makes conflicts become more likely, the found rule may still not encompass all statement instances and the found rule exposes internals of isl's implementation of coalesce and gist. The latter means that the result depends on how much effort the implementation invests into finding a rule which may change between versions of isl. Trivial implementations of gist and coalesce just return the input arguments. A patch that makes codegen support partial accesses is in preparation as well. Differential Revision: https://reviews.llvm.org/D30763 llvm-svn: 297373 |
||
---|---|---|
.. | ||
nomap_alreadymapped.ll | ||
nomap_escaping.ll | ||
nomap_occupied.ll | ||
nomap_readonly.ll | ||
nomap_spuriouswrite.ll | ||
nomap_storagesize.ll | ||
nomap_writewrite.ll | ||
pass_existance.ll | ||
reduction_overapproximate.ll | ||
reduction_preheader.ll | ||
reject_loadafterstore.ll | ||
reject_outofquota.ll | ||
reject_storeafterstore.ll | ||
reject_storeinsubregion.ll | ||
reject_unusualstore.ll | ||
skip_maywrite.ll | ||
skip_notinloop.ll | ||
skip_scalaraccess.ll |