|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2 |
|
| #
f64170aa |
| 01-Mar-2022 |
Alex Zinenko <[email protected]> |
[mlir] Data layout for integer and float types
Add support for integer and float types into the data layout subsystem with default logic similar to LLVM IR. Given the flexibility of the sybsystem, t
[mlir] Data layout for integer and float types
Add support for integer and float types into the data layout subsystem with default logic similar to LLVM IR. Given the flexibility of the sybsystem, the logic can be easily overwritten by operations if necessary. This provides the connection necessary, e.g., for the GPU target where alignment requirements for integers and floats differ from those provided by default (although still compatible with the LLVM IR model). Previously, it was impossible to use non-default alignment requirements for integer and float types, which could lead to incorrect address and size calculations when targeting GPUs.
Depends On D120737
Reviewed By: wsmoses
Differential Revision: https://reviews.llvm.org/D120739
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc1, llvmorg-15-init |
|
| #
58e7bf78 |
| 21-Jan-2022 |
River Riddle <[email protected]> |
[mlir] Add isa/dyn_cast support for dialect interfaces
This matches the same API usage as attributes/ops/types. For example:
```c++ Dialect *dialect = ...;
// Instead of this: if (auto *interface
[mlir] Add isa/dyn_cast support for dialect interfaces
This matches the same API usage as attributes/ops/types. For example:
```c++ Dialect *dialect = ...;
// Instead of this: if (auto *interface = dialect->getRegisteredInterface<DialectInlinerInterface>())
// You can do this: if (auto *interface = dyn_cast<DialectInlinerInterface>(dialect)) ```
Differential Revision: https://reviews.llvm.org/D117859
show more ...
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
195730a6 |
| 16-Nov-2021 |
River Riddle <[email protected]> |
[mlir][NFC] Replace references to Identifier with StringAttr
This is part of the replacement of Identifier with StringAttr.
Differential Revision: https://reviews.llvm.org/D113953
|
| #
120591e1 |
| 11-Nov-2021 |
River Riddle <[email protected]> |
[mlir] Replace usages of Identifier with StringAttr
Identifier and StringAttr essentially serve the same purpose, i.e. to hold a string value. Keeping these seemingly identical pieces of functionali
[mlir] Replace usages of Identifier with StringAttr
Identifier and StringAttr essentially serve the same purpose, i.e. to hold a string value. Keeping these seemingly identical pieces of functionality separate has caused problems in certain situations:
* Identifier has nice accessors that StringAttr doesn't * Identifier can't be used as an Attribute, meaning strings are often duplicated between Identifier/StringAttr (e.g. in PDL)
The only thing that Identifier has that StringAttr doesn't is support for caching a dialect that is referenced by the string (e.g. dialect.foo). This functionality is added to StringAttr, as this is useful for StringAttr in generally the same ways it was useful for Identifier.
Differential Revision: https://reviews.llvm.org/D113536
show more ...
|
| #
e244a6fe |
| 06-Oct-2021 |
Simon Pilgrim <[email protected]> |
[mlir] Replace report_fatal_error(std::string) uses with report_fatal_error(Twine)
As described on D111049, we're trying to remove the <string> dependency from error handling and replace uses of rep
[mlir] Replace report_fatal_error(std::string) uses with report_fatal_error(Twine)
As described on D111049, we're trying to remove the <string> dependency from error handling and replace uses of report_fatal_error(const std::string&) with the Twine() variant which can be forward declared.
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1 |
|
| #
97335ad1 |
| 01-Aug-2021 |
Markus Böck <[email protected]> |
[mlir] Change ABI breaking use of NDEBUG to LLVM_ENABLE_ABI_BREAKING_CHECKS
The `DataLayout` class currently contains the member `layoutStack` which is hidden behind a preprocessor region dependant
[mlir] Change ABI breaking use of NDEBUG to LLVM_ENABLE_ABI_BREAKING_CHECKS
The `DataLayout` class currently contains the member `layoutStack` which is hidden behind a preprocessor region dependant on the NDEBUG macro. Code wise this makes a lot of sense, as the `layoutStack` is used for extra assertions that users will want when compiling a debug build. It however has the uncomfortable consequence of leading to a different ABI in Debug and Release builds. This I think is a bit annoying for downstream projects and others as they may want to build against a stable Release of MLIR in Release mode, but be able to debug their own project depending on MLIR.
This patch changes the related uses of NDEBUG to LLVM_ENABLE_ABI_BREAKING_CHECKS. As the macro is computed at configure time of LLVM, it may not change based on compiler settings of a downstream projects like NDEBUG would.
Differential Revision: https://reviews.llvm.org/D107227
show more ...
|
|
Revision tags: llvmorg-14-init |
|
| #
f2026f5d |
| 28-Jul-2021 |
Fangrui Song <[email protected]> |
[mlir] Replace LLVM_ATTRIBUTE_NORETURN with C++11 [[noreturn]]
[[noreturn]] can be used since 2016 when the minimum compiler requirement was bumped to GCC 4.8/MSVC 2015.
|
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
f6faa71e |
| 09-Jun-2021 |
Alex Zinenko <[email protected]> |
[mlir] fix a crash if the dialect is missing a data layout interface
The top-level verifier of data layout specifications delegates verification of entries with identifier keys to the dialect of the
[mlir] fix a crash if the dialect is missing a data layout interface
The top-level verifier of data layout specifications delegates verification of entries with identifier keys to the dialect of the identifier prefix. This flow was missing a check whether the dialect actually implements the relevant interface.
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D103945
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
31686d13 |
| 12-Apr-2021 |
Tres Popp <[email protected]> |
Add default DataLayout support for complex numbers
Differential Revision: https://reviews.llvm.org/D100289
|
| #
b614ada0 |
| 08-Apr-2021 |
Tobias Gysi <[email protected]> |
[mlir] add support for index type in vectors.
The patch enables the use of index type in vectors. It is a prerequisite to support vectorization for indexed Linalg operations. This refactoring became
[mlir] add support for index type in vectors.
The patch enables the use of index type in vectors. It is a prerequisite to support vectorization for indexed Linalg operations. This refactoring became possible due to the newly introduced data layout infrastructure. The data layout of a module defines the bitwidth of the index type needed to verify bitcasts and similar vector operations.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D99948
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4 |
|
| #
b3386a73 |
| 22-Mar-2021 |
Alex Zinenko <[email protected]> |
[mlir] introduce data layout entry for index type
Index type is an integer type of target-specific bitwidth present in many MLIR operations (loops, memory accesses). Converting values of this type t
[mlir] introduce data layout entry for index type
Index type is an integer type of target-specific bitwidth present in many MLIR operations (loops, memory accesses). Converting values of this type to fixed-size integers has always been problematic. Introduce a data layout entry to specify the bitwidth of `index` in a given layout scope, defaulting to 64 bits, which is a commonly used assumption, e.g., in constants.
Port builtin-to-LLVM type conversion to use this data layout entry when converting `index` type and untie it from pointer size. This is particularly relevant for GPU targets. Keep a possibility to forcibly override the index type in lowerings.
Depends On D98525
Reviewed By: herhut
Differential Revision: https://reviews.llvm.org/D98937
show more ...
|
| #
842d2435 |
| 22-Mar-2021 |
Alex Zinenko <[email protected]> |
[mlir] forward data layout query to scoping op in absence of specification
Even if the layout specification is missing from an op that supports it, the op is still expected to provide meaningful res
[mlir] forward data layout query to scoping op in absence of specification
Even if the layout specification is missing from an op that supports it, the op is still expected to provide meaningful responses to data layout queries. Forward them to the op instead of directly calling the default implementation.
Depends On D98524
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D98525
show more ...
|
| #
f9cdc61d |
| 22-Mar-2021 |
Alex Zinenko <[email protected]> |
[mlir] provide a version of data layout size hooks in bits
This is useful for bit-packing types such as vectors and tuples as well as for exotic architectures that have non-8-bit bytes.
Depends On
[mlir] provide a version of data layout size hooks in bits
This is useful for bit-packing types such as vectors and tuples as well as for exotic architectures that have non-8-bit bytes.
Depends On D98500
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D98524
show more ...
|
| #
1916b0e0 |
| 22-Mar-2021 |
Alex Zinenko <[email protected]> |
[mlir] support data layout specs on ModuleOp
ModuleOp is a natural place to provide scoped data layout information. However, it is undesirable for ModuleOp to implement the entirety of DataLayoutOpI
[mlir] support data layout specs on ModuleOp
ModuleOp is a natural place to provide scoped data layout information. However, it is undesirable for ModuleOp to implement the entirety of DataLayoutOpInterface because that would require either pushing the interface inside the IR library instead of a separate library, or putting the default implementation of the interface as inline functions in headers leading to binary bloat. Instead, ModuleOp accepts an arbitrary data layout spec attribute and has a dedicated hook to extract it, and DataLayout is modified to know about ModuleOp particularities.
Reviewed By: herhut, nicolasvasilache
Differential Revision: https://reviews.llvm.org/D98500
show more ...
|
| #
3ba14fa0 |
| 11-Mar-2021 |
Alex Zinenko <[email protected]> |
[mlir] Introduce data layout modeling subsystem
Data layout information allows to answer questions about the size and alignment properties of a type. It enables, among others, the generation of vari
[mlir] Introduce data layout modeling subsystem
Data layout information allows to answer questions about the size and alignment properties of a type. It enables, among others, the generation of various linear memory addressing schemes for containers of abstract types and deeper reasoning about vectors. This introduces the subsystem for modeling data layouts in MLIR.
The data layout subsystem is designed to scale to MLIR's open type and operation system. At the top level, it consists of attribute interfaces that can be implemented by concrete data layout specifications; type interfaces that should be implemented by types subject to data layout; operation interfaces that must be implemented by operations that can serve as data layout scopes (e.g., modules); and dialect interfaces for data layout properties unrelated to specific types. Built-in types are handled specially to decrease the overall query cost.
A concrete default implementation of these interfaces is provided in the new Target dialect. Defaults for built-in types that match the current behavior are also provided.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D97067
show more ...
|