forked from OSchip/llvm-project
35b685270b
Thus far IntegerType has been signless: a value of IntegerType does not have a sign intrinsically and it's up to the specific operation to decide how to interpret those bits. For example, std.addi does two's complement arithmetic, and std.divis/std.diviu treats the first bit as a sign. This design choice was made some time ago when we did't have lots of dialects and dialects were more rigid. Today we have much more extensible infrastructure and different dialect may want different modelling over integer signedness. So while we can say we want signless integers in the standard dialect, we cannot dictate for others. Requiring each dialect to model the signedness semantics with another set of custom types is duplicating the functionality everywhere, considering the fundamental role integer types play. This CL extends the IntegerType with a signedness semantics bit. This gives each dialect an option to opt in signedness semantics if that's what they want and helps code sharing. The parser is modified to recognize `si[1-9][0-9]*` and `ui[1-9][0-9]*` as signed and unsigned integer types, respectively, leaving the original `i[1-9][0-9]*` to continue to mean no indication over signedness semantics. All existing dialects are not affected (yet) as this is a feature to opt in. More discussions can be found at: https://groups.google.com/a/tensorflow.org/d/msg/mlir/XmkV8HOPWpo/7O4X0Nb_AQAJ Differential Revision: https://reviews.llvm.org/D72533 |
||
---|---|---|
.. | ||
Dialects | ||
Tutorials/Toy | ||
includes/img | ||
CMakeLists.txt | ||
Canonicalization.md | ||
ConversionToLLVMDialect.md | ||
DeclarativeRewrites.md | ||
DefiningAttributesAndTypes.md | ||
Diagnostics.md | ||
DialectConversion.md | ||
EDSC.md | ||
GenericDAGRewriter.md | ||
Interfaces.md | ||
LangRef.md | ||
MLIRForGraphAlgorithms.md | ||
OpDefinitions.md | ||
Passes.md | ||
Quantization.md | ||
QuickstartRewrites.md | ||
README.txt | ||
Rationale.md | ||
RationaleLinalgDialect.md | ||
RationaleSimplifiedPolyhedralForm.md | ||
ShapeInference.md | ||
SymbolsAndSymbolTables.md | ||
Traits.md | ||
UsageOfConst.md | ||
WritingAPass.md | ||
doxygen-mainpage.dox | ||
doxygen.cfg.in |
README.txt
MLIR documentation ================== Please note mlir.llvm.org is where MLIR's rendered documentation is displayed. The viewing experience on GitHub or elsewhere may not match those of the website. For any changes please verify instead that they work on the main website first. See https://github.com/llvm/mlir-www for the website generation information.