[PATCH] D36010: [Polly][Simplify] Implement write accesses coalescing.

Michael Kruse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 28 12:02:48 PDT 2017


Meinersbur created this revision.
Meinersbur added a project: Polly.
Herald added a reviewer: bollu.

Write coalescing combines write accesses that

- Write the same llvm::Value.
- Write to the same array.
- Unless they do not write anything in a statement instance (partial writes), write to the same element.
- There is no other access between them that accesses the same element.

This is particularly useful after DeLICM, which leaves partial writes to disjoint domains.

After commit, some common code could be refactored:

- `makeValueSet()` is the same principle as used by DeLICM's `makeValueSet()`. They could both using some common Scop infrastructure to get unique ids for `llvm::Value`s.
- `removeOverwrites()` also uses a "backwards scan over accesses". They could be merged into the same function.


https://reviews.llvm.org/D36010

Files:
  lib/Transform/Simplify.cpp
  test/Simplify/coalesce_disjointelements.ll
  test/Simplify/coalesce_disjointelements___%for---%return.jscop
  test/Simplify/coalesce_disjointelements___%for---%return.jscop.transformed
  test/Simplify/coalesce_overlapping.ll
  test/Simplify/coalesce_overlapping___%for---%return.jscop
  test/Simplify/coalesce_overlapping___%for---%return.jscop.transformed
  test/Simplify/coalesce_partial.ll
  test/Simplify/coalesce_partial___%for---%return.jscop
  test/Simplify/coalesce_partial___%for---%return.jscop.transformed
  test/Simplify/gemm.ll
  test/Simplify/nocoalesce_3partials.ll
  test/Simplify/nocoalesce_3partials___%for---%return.jscop
  test/Simplify/nocoalesce_3partials___%for---%return.jscop.transformed
  test/Simplify/nocoalesce_differentvalues.ll
  test/Simplify/nocoalesce_differentvalues___%for---%return.jscop
  test/Simplify/nocoalesce_differentvalues___%for---%return.jscop.transformed
  test/Simplify/nocoalesce_elementmismatch.ll
  test/Simplify/nocoalesce_elementmismatch___%for---%return.jscop
  test/Simplify/nocoalesce_elementmismatch___%for---%return.jscop.transformed
  test/Simplify/nocoalesce_readbetween.ll
  test/Simplify/nocoalesce_readbetween___%for---%return.jscop
  test/Simplify/nocoalesce_readbetween___%for---%return.jscop.transformed
  test/Simplify/nocoalesce_writebetween.ll
  test/Simplify/nocoalesce_writebetween___%for---%return.jscop
  test/Simplify/nocoalesce_writebetween___%for---%return.jscop.transformed

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36010.108684.patch
Type: text/x-patch
Size: 39468 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170728/3dd3cbe6/attachment.bin>


More information about the llvm-commits mailing list