1. [mlir] Refactor operation results to use a single use list for all (details)
Commit 0d6ebb4f0dd7ca81bdfc2a210b1d5ef46e0c9587 by riverriddle
[mlir] Refactor operation results to use a single use list for all
results of the operation.
Summary: A new class is added, IRMultiObjectWithUseList, that allows for
representing an IR use list that holds multiple sub values(used in this
case for OpResults). This class provides all of the same functionality
as the base IRObjectWithUseList, but for specific sub-values. This saves
a word per operation result and is a necessary step in optimizing the
layout of operation results. For now the use list is placed on the
operation itself, so zero-result operations grow by a word. When the
work for optimizing layout is finished, this can be moved back to being
a trailing object based on memory/runtime benchmarking.
Reviewed By: jpienaar
Differential Revision:
The file was modifiedmlir/include/mlir/IR/Block.h
The file was modifiedmlir/include/mlir/IR/UseDefLists.h
The file was modifiedmlir/lib/IR/Operation.cpp
The file was modifiedmlir/include/mlir/IR/Operation.h
The file was modifiedmlir/lib/IR/Value.cpp
The file was modifiedmlir/lib/Transforms/ViewOpGraph.cpp
The file was modifiedmlir/include/mlir/IR/Value.h