[PATCH] D33255: [Polly][CodeGen] Support partial write accesses.

Michael Kruse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 16 13:30:36 PDT 2017


Meinersbur created this revision.
Meinersbur added a project: Polly.

Allow the BlockGenerator to generate memory writes that are not defined over the complete statement domain, but only over a subset of it. It generates a condition that evaluates to 1 if executing the subdomain, and only then execute the access.

Only write accesses are supported. Read accesses would require a PHINode which has a value if the access is not executed.

Partial write makes DeLICM able to apply mappings that are not defined over the entire domain (for instance, a branch that leaves a loop with a PHINode in its header; a MemoryKind::PHI write when leaving is never read by its PHI read).


https://reviews.llvm.org/D33255

Files:
  include/polly/CodeGen/BlockGenerators.h
  include/polly/ScopInfo.h
  lib/Analysis/ScopInfo.cpp
  lib/CodeGen/BlockGenerators.cpp
  lib/CodeGen/IslNodeBuilder.cpp
  lib/Exchange/JSONExporter.cpp
  test/Isl/CodeGen/partial_write_array.ll
  test/Isl/CodeGen/partial_write_array___%for---%return.jscop
  test/Isl/CodeGen/partial_write_array___%for---%return.jscop.transformed
  test/Isl/CodeGen/partial_write_mapped_scalar.ll
  test/Isl/CodeGen/partial_write_mapped_scalar___%for---%return.jscop
  test/Isl/CodeGen/partial_write_mapped_scalar___%for---%return.jscop.transformed
  test/Isl/CodeGen/partial_write_mapped_scalar_subregion.ll
  test/Isl/CodeGen/partial_write_mapped_scalar_subregion___%for---%return.jscop
  test/Isl/CodeGen/partial_write_mapped_scalar_subregion___%for---%return.jscop.transformed
  test/Isl/CodeGen/partial_write_mapped_vector.ll
  test/Isl/CodeGen/partial_write_mapped_vector___%for---%return.jscop
  test/Isl/CodeGen/partial_write_mapped_vector___%for---%return.jscop.transformed

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33255.99184.patch
Type: text/x-patch
Size: 35540 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170516/f5c697ff/attachment.bin>


More information about the llvm-commits mailing list