|
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, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
cb395f66 |
| 24-Nov-2021 |
Lei Zhang <[email protected]> |
[mlir][spirv] Change the return type for {Min|Max}VersionBase
For synthesizing an op's implementation of the generated interface from {Min|Max}Version, we need to define an `initializer` and `mergeA
[mlir][spirv] Change the return type for {Min|Max}VersionBase
For synthesizing an op's implementation of the generated interface from {Min|Max}Version, we need to define an `initializer` and `mergeAction`. The `initializer` specifies the initial version, and `mergeAction` specifies how version specifications from different parts of the op should be merged to generate a final version requirements.
Previously we use the specified version enum as the type for both the initializer and thus the final return type. This means we need to perform `static_cast` over some hopefully not used number (`~0u`) as the initializer. This is quite opaque and sort of not guaranteed to work. Also, there are ops that have an enum attribute where some values declare version requirements (e.g., enumerant `B` requires v1.1+) but some not (e.g., enumerant `A` requires nothing). Then a concrete op instance with `A` will still declare it implements the version interface (because interface implementation is static for an op) but actually theirs no requirements for version.
So this commit changes to use an more explicit `llvm::Optional` to wrap around the returned version enum. This should make it more clear.
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D108312
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
297a5b7c |
| 21-Apr-2021 |
Nico Weber <[email protected]> |
[mlir] hopefully final round of iwyu fixes after ba7a92c01e8
|
| #
4efb7754 |
| 15-Apr-2021 |
River Riddle <[email protected]> |
[mlir][NFC] Add a using directive for llvm::SetVector
Differential Revision: https://reviews.llvm.org/D100436
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
| #
01178654 |
| 17-Dec-2020 |
Lei Zhang <[email protected]> |
[mlir][spirv] NFC: Shuffle code around to better follow convention
This commit shuffles SPIR-V code around to better follow MLIR convention. Specifically,
* Created IR/, Transforms/, Linking/, and
[mlir][spirv] NFC: Shuffle code around to better follow convention
This commit shuffles SPIR-V code around to better follow MLIR convention. Specifically,
* Created IR/, Transforms/, Linking/, and Utils/ subdirectories and moved suitable code inside. * Created SPIRVEnums.{h|cpp} for SPIR-V C/C++ enums generated from SPIR-V spec. Previously they are cluttered inside SPIRVTypes.{h|cpp}. * Fixed include guards in various header files (both .h and .td). * Moved serialization tests under test/Target/SPIRV. * Renamed TableGen backend -gen-spirv-op-utils into -gen-spirv-attr-utils as it is only generating utility functions for attributes.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D93407
show more ...
|
| #
1ffc1aaa |
| 12-Dec-2020 |
Christian Sigg <[email protected]> |
[mlir] Use mlir::OpState::operator->() to get to methods of mlir::Operation.
This is a preparation step to remove those methods from OpState.
Reviewed By: mehdi_amini
Differential Revision: https:
[mlir] Use mlir::OpState::operator->() to get to methods of mlir::Operation.
This is a preparation step to remove those methods from OpState.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D93098
show more ...
|
|
Revision tags: llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4 |
|
| #
9db53a18 |
| 07-Jul-2020 |
River Riddle <[email protected]> |
[mlir][NFC] Remove usernames and google bug numbers from TODO comments.
These were largely leftover from when MLIR was a google project, and don't really follow LLVM guidelines.
|
|
Revision tags: llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1 |
|
| #
1834ad4a |
| 07-Apr-2020 |
River Riddle <[email protected]> |
[mlir][Pass] Update the PassGen to generate base classes instead of utilities
Summary: This is much cleaner, and fits the same structure as many other tablegen backends. This was not done originally
[mlir][Pass] Update the PassGen to generate base classes instead of utilities
Summary: This is much cleaner, and fits the same structure as many other tablegen backends. This was not done originally as the CRTP in the pass classes made it overly verbose/complex.
Differential Revision: https://reviews.llvm.org/D77367
show more ...
|
| #
80aca1ea |
| 07-Apr-2020 |
River Riddle <[email protected]> |
[mlir][Pass] Remove the use of CRTP from the Pass classes
This revision removes all of the CRTP from the pass hierarchy in preparation for using the tablegen backend instead. This creates a much cle
[mlir][Pass] Remove the use of CRTP from the Pass classes
This revision removes all of the CRTP from the pass hierarchy in preparation for using the tablegen backend instead. This creates a much cleaner interface in the C++ code, and naturally fits with the rest of the infrastructure. A new utility class, PassWrapper, is added to replicate the existing behavior for passes not suitable for using the tablegen backend.
Differential Revision: https://reviews.llvm.org/D77350
show more ...
|
| #
e3d834a5 |
| 01-Apr-2020 |
River Riddle <[email protected]> |
[mlir][Pass] Move the registration of dialect passes to tablegen
This generates a Passes.td for all of the dialects that have transformation passes. This removes the need for global registration for
[mlir][Pass] Move the registration of dialect passes to tablegen
This generates a Passes.td for all of the dialects that have transformation passes. This removes the need for global registration for all of the dialect passes.
Differential Revision: https://reviews.llvm.org/D76657
show more ...
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5 |
|
| #
58df5e6d |
| 18-Mar-2020 |
Lei Zhang <[email protected]> |
[mlir][spirv] Plumbing target environment into type converter
This commit unifies target environment queries into a new wrapper class spirv::TargetEnv and shares across various places needing the fu
[mlir][spirv] Plumbing target environment into type converter
This commit unifies target environment queries into a new wrapper class spirv::TargetEnv and shares across various places needing the functionality. We still create multiple instances of TargetEnv though given the parent components (type converters, passes, conversion targets) have different lifetimes.
In the meantime, LowerABIAttributesPass is updated to take into consideration the target environment, which requires updates to tests to provide that.
Differential Revision: https://reviews.llvm.org/D76242
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc4 |
|
| #
e5c85a5a |
| 11-Mar-2020 |
Lei Zhang <[email protected]> |
[mlir][spirv] Support querying type extension/capability requirements
Previously we only consider the version/capability/extension requirements on ops themselves. Some types in SPIR-V also require s
[mlir][spirv] Support querying type extension/capability requirements
Previously we only consider the version/capability/extension requirements on ops themselves. Some types in SPIR-V also require special extensions or capabilities to be used. For example, non-32-bit integers/floats will require different capabilities and/or extensions depending on where they are used because it may mean special hardware abilities.
This commit adds query methods to SPIR-V type class hierarchy to support querying extensions and capabilities. We don't go through ODS for auto-generating such information given that we don't have them in SPIR-V machine readable grammar and there are just a few types.
Differential Revision: https://reviews.llvm.org/D75875
show more ...
|
| #
3148f10b |
| 11-Mar-2020 |
Lei Zhang <[email protected]> |
[mlir][spirv] Use spv.vce in spv.module and wire up (de)serialization
This commits changes the definition of spv.module to use the #spv.vce attribute for specifying (version, capabilities, extension
[mlir][spirv] Use spv.vce in spv.module and wire up (de)serialization
This commits changes the definition of spv.module to use the #spv.vce attribute for specifying (version, capabilities, extensions) triple so that we can have better API and custom assembly form. Since now we have proper modelling of the triple, (de)serialization is wired up to use them.
With the new UpdateVCEPass, we don't need to manually specify the required extensions and capabilities anymore when creating a spv.module. One just need to call UpdateVCEPass before serialization to get the needed version/extensions/capabilities.
Differential Revision: https://reviews.llvm.org/D75872
show more ...
|
| #
9414db10 |
| 11-Mar-2020 |
Lei Zhang <[email protected]> |
[mlir][spirv] Add a pass to deduce version/extension/capability
Creates an operation pass that deduces and attaches the minimal version/ capabilities/extensions requirements for spv.module ops.
For
[mlir][spirv] Add a pass to deduce version/extension/capability
Creates an operation pass that deduces and attaches the minimal version/ capabilities/extensions requirements for spv.module ops.
For each spv.module op, this pass requires a `spv.target_env` attribute on it or an enclosing module-like op to drive the deduction. The reason is that an op can be enabled by multiple extensions/capabilities. So we need to know which one to pick. `spv.target_env` gives the hard limit as for what the target environment can support; this pass deduces what are actually needed for a specific spv.module op.
Differential Revision: https://reviews.llvm.org/D75870
show more ...
|