diff options
| author | Nicolas Vasilache <ntv@google.com> | 2018-10-30 07:54:23 -0700 |
|---|---|---|
| committer | jpienaar <jpienaar@google.com> | 2019-03-29 13:44:26 -0700 |
| commit | af7f56fdf84e1b2b548b7b24c933b74349cbc88e (patch) | |
| tree | 99e1d0ab6e674e5f2d4af652d9ddf8a507f42a0f /mlir/lib/Transforms/Utils/Utils.cpp | |
| parent | 19f14b72bbfa4ae5b7ae108faaf08aa392bf7216 (diff) | |
| download | bcm5719-llvm-af7f56fdf84e1b2b548b7b24c933b74349cbc88e.tar.gz bcm5719-llvm-af7f56fdf84e1b2b548b7b24c933b74349cbc88e.zip | |
[MLIR] Implement 1-D vectorization for fastest varying load/stores
This CL is a first in a series that implements early vectorization of
increasingly complex patterns. In particular, early vectorization will support
arbitrary loop nesting patterns (both perfectly and imperfectly nested), at
arbitrary depths in the loop tree.
This first CL builds the minimal support for applying 1-D patterns.
It relies on an unaligned load/store op abstraction that can be inplemented
differently on different HW.
Future CLs will support higher dimensional patterns, but 1-D patterns already
exhibit interesting properties.
In particular, we want to separate pattern matching (i.e. legality both
structural and dependency analysis based), from profitability analysis, from
application of the transformation.
As a consequence patterns may intersect and we need to verify that a pattern
can still apply by the time we get to applying it.
A non-greedy analysis on profitability that takes into account pattern
intersection is left for future work.
Additionally the CL makes the following cleanups:
1. the matches method now returns a value, not a reference;
2. added comments about the MLFunctionMatcher and MLFunctionMatches usage by
value;
3. added size and empty methods to matches;
4. added a negative vectorization test with a conditional, this exhibited a
but in the iterators. Iterators now return nullptr if the underlying storage
is nullpt.
PiperOrigin-RevId: 219299489
Diffstat (limited to 'mlir/lib/Transforms/Utils/Utils.cpp')
0 files changed, 0 insertions, 0 deletions

