Closes tensorflow/mlir#145 COPYBARA_INTEGRATE_REVIEW=https://github.com/tensorflow/mlir/pull/145 from kiszk:spelling_tweaks_g3doc ae9140aab5b797441e880d43e557903585815e40 PiperOrigin-RevId: 271173907
44 lines
2.2 KiB
Markdown
44 lines
2.2 KiB
Markdown
# Developer Guide
|
|
|
|
This document attempts to describe a few developer policies used in MLIR (such
|
|
as coding standards used) as well as development approach (such as, testing
|
|
methods).
|
|
|
|
## Style guide
|
|
|
|
MLIR follows the [LLVM style](https://llvm.org/docs/CodingStandards.html) guide.
|
|
We also adhere to the following, that deviates from, or isn't specified in the
|
|
LLVM style guide:
|
|
|
|
* Adopts [camelBack](https://llvm.org/docs/Proposals/VariableNames.html);
|
|
* Except for IR units (Region, Block, and Operation), non-nullable output
|
|
arguments are passed by non-const reference in general.
|
|
* IR constructs are not designed for [const correctness](UsageOfConst.md).
|
|
* Do *not* use recursive algorithms if the recursion can't be bounded
|
|
statically: that is avoid recursion if there is a possible IR input that can
|
|
trigger a stack overflow (for example traversing use-def chains in a
|
|
recursive way). At the moment, we tolerate it for the two following cases:
|
|
* The nesting of the IR: we use recursion when traversing nested regions.
|
|
* Type nesting: recursion may be used for the nesting of composite types.
|
|
|
|
Please run clang-format on the files you modified with the `.clang-format`
|
|
configuration file available in the root directory. Check the clang-format
|
|
[documentation](https://clang.llvm.org/docs/ClangFormat.html) for more details
|
|
on integrating it with your development environment. In particular, if clang is
|
|
installed system-wide, running `git clang-format origin/master` will update the
|
|
files in the working directory with the relevant formatting changes; don't
|
|
forget to include those to the commit.
|
|
|
|
## Pass name and other command line options
|
|
|
|
To avoid collision between options provided by different dialects, the naming
|
|
convention is to prepend the dialect name to every dialect-specific passes and
|
|
options in general. Options that are specific to a pass should also be prefixed
|
|
with the pass name. For example, the affine dialect provides a loop tiling pass
|
|
that is registered on the command line as `-affine-tile`, and with a tile size
|
|
option that can be set with `-affine-tile-size`.
|
|
|
|
## Testing guidelines
|
|
|
|
See here for the [testing guide](TestingGuide.md).
|