|
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 |
|
| #
6d5fc1e3 |
| 21-Jun-2022 |
Kazu Hirata <[email protected]> |
[mlir] Don't use Optional::getValue (NFC)
|
|
Revision tags: 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 |
|
| #
42e5f1d9 |
| 01-Feb-2022 |
River Riddle <[email protected]> |
[mlir] Refactor how additional verification is specified in ODS
Currently if an operation requires additional verification, it specifies an inline code block (`let verifier = "blah"`). This is quite
[mlir] Refactor how additional verification is specified in ODS
Currently if an operation requires additional verification, it specifies an inline code block (`let verifier = "blah"`). This is quite problematic for various reasons, e.g. it requires defining C++ inside of Tablegen which is discouraged when possible, but mainly because nearly all usages simply forward to a static function `static LogicalResult verify(SomeOp op)`. This commit adds support for a `hasVerifier` bit field that specifies if an additional verifier is needed, and when set to `1` declares a `LogicalResult verify()` method for operations to override. For migration purposes, the existing behavior is untouched. Upstream usages will be replaced in a followup to keep this patch focused on the hasVerifier implementation.
One main user facing change is that what was one `MyOp::verify` is now `MyOp::verifyInvariants`. This better matches the name this method is called everywhere else, and also frees up `verify` for the user defined additional verification. The `verify` function when generated now (for additional verification) is private to the operation class, which should also help avoid accidental usages after this switch.
Differential Revision: https://reviews.llvm.org/D118742
show more ...
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
731676b1 |
| 11-Dec-2021 |
Lei Zhang <[email protected]> |
[mlir][spirv] Fix nested control flow serialization
If we have a `spv.mlir.selection` op nested in a `spv.mlir.loop` op, when serializing the loop's block, we might need to jump from the selection o
[mlir][spirv] Fix nested control flow serialization
If we have a `spv.mlir.selection` op nested in a `spv.mlir.loop` op, when serializing the loop's block, we might need to jump from the selection op's merge block, which might be different than the immediate MLIR IR predecessor block. But we still need to get the block argument from the MLIR IR predecessor block.
Also, if the `spv.mlir.selection` is in the `spv.mlir.loop`'s header block, we need to make sure `OpLoopMerge` is emitted in the current block before start processing the nested selection op. Otherwise we'll see the LoopMerge in the wrong SPIR-V basic block.
Reviewed By: Hardcode84
Differential Revision: https://reviews.llvm.org/D115560
show more ...
|
| #
3ed47bcc |
| 10-Dec-2021 |
Lei Zhang <[email protected]> |
[mlir][spirv] Propagate LogicalResult in (de)serialization
`(void)` was added when LogicalResult was marked as non discard. This commit cleans them up to properly propagate failures.
Reviewed By: s
[mlir][spirv] Propagate LogicalResult in (de)serialization
`(void)` was added when LogicalResult was marked as non discard. This commit cleans them up to properly propagate failures.
Reviewed By: scotttodd
Differential Revision: https://reviews.llvm.org/D115541
show more ...
|
| #
222d7fc7 |
| 10-Dec-2021 |
Lei Zhang <[email protected]> |
[mlir][spirv] Avoid duplicated Block decoration during serialization
It's legal per the Vulkan / SPIR-V spec; still it's better to avoid such duplication to have cleaner blob and reduce the binary s
[mlir][spirv] Avoid duplicated Block decoration during serialization
It's legal per the Vulkan / SPIR-V spec; still it's better to avoid such duplication to have cleaner blob and reduce the binary size.
Reviewed By: scotttodd
Differential Revision: https://reviews.llvm.org/D115532
show more ...
|
| #
b289266c |
| 10-Dec-2021 |
Lei Zhang <[email protected]> |
[mlir][spirv] Add serialization control to emit symbol name
In SPIR-V, symbol names are encoded as `OpName` instructions. They are not semantic impacting and can be omitted, which can reduce the bin
[mlir][spirv] Add serialization control to emit symbol name
In SPIR-V, symbol names are encoded as `OpName` instructions. They are not semantic impacting and can be omitted, which can reduce the binary size.
Reviewed By: scotttodd
Differential Revision: https://reviews.llvm.org/D115531
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
0c7890c8 |
| 18-Nov-2021 |
River Riddle <[email protected]> |
[mlir] Convert NamedAttribute to be a class
NamedAttribute is currently represented as an std::pair, but this creates an extremely clunky .first/.second API. This commit converts it to a class, with
[mlir] Convert NamedAttribute to be a class
NamedAttribute is currently represented as an std::pair, but this creates an extremely clunky .first/.second API. This commit converts it to a class, with better accessors (getName/getValue) and also opens the door for more convenient API in the future.
Differential Revision: https://reviews.llvm.org/D113956
show more ...
|
| #
ae40d625 |
| 09-Nov-2021 |
River Riddle <[email protected]> |
[mlir] Refactor ElementsAttr's value access API
There are several aspects of the API that either aren't easy to use, or are deceptively easy to do the wrong thing. The main change of this commit is
[mlir] Refactor ElementsAttr's value access API
There are several aspects of the API that either aren't easy to use, or are deceptively easy to do the wrong thing. The main change of this commit is to remove all of the `getValue<T>`/`getFlatValue<T>` from ElementsAttr and instead provide operator[] methods on the ranges returned by `getValues<T>`. This provides a much more convenient API for the value ranges. It also removes the easy-to-be-inefficient nature of getValue/getFlatValue, which under the hood would construct a new range for the type `T`. Constructing a range is not necessarily cheap in all cases, and could lead to very poor performance if used within a loop; i.e. if you were to naively write something like:
``` DenseElementsAttr attr = ...; for (int i = 0; i < size; ++i) { // We are internally rebuilding the APFloat value range on each iteration!! APFloat it = attr.getFlatValue<APFloat>(i); } ```
Differential Revision: https://reviews.llvm.org/D113229
show more ...
|
| #
1e4cfe5e |
| 04-Oct-2021 |
Weiwei Li <[email protected]> |
[mlir][SPIRVToLLVM] Propagate location attribute from spv.GlobalVariable to llvm.mlir.global
This patch is mainly to propogate location attribute from spv.GlobalVariable to llvm.mlir.global.
It als
[mlir][SPIRVToLLVM] Propagate location attribute from spv.GlobalVariable to llvm.mlir.global
This patch is mainly to propogate location attribute from spv.GlobalVariable to llvm.mlir.global.
It also contains three small changes.
1. Remove the restriction on UniformConstant In SPIRVToLLVM.cpp; 2. Remove the errorCheck on relaxedPrecision when deserializering SPIR-V in Deserializer.cpp 3. In SPIRVOps.cpp, let ConstantOp take signedInteger too.
Co-authered: Alan Liu <[email protected]> and Xinyi Liu <[email protected]>
Reviewed by:antiagainst
Differential revision: https://reviews.llvm.org/D110207
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 |
|
| #
233a3a75 |
| 30-Jul-2021 |
Lei Zhang <[email protected]> |
[mlir][spirv] Add support for i8 serialization
Reviewed By: hanchung
Differential Revision: https://reviews.llvm.org/D107122
|
|
Revision tags: llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
56f60a1c |
| 09-Jun-2021 |
Lei Zhang <[email protected]> |
[mlir][spirv] Use SingleBlock + NoTerminator for spv.module
This allows us to remove the `spv.mlir.endmodule` op and all the code associated with it.
Along the way, tightened the APIs for `spv.modu
[mlir][spirv] Use SingleBlock + NoTerminator for spv.module
This allows us to remove the `spv.mlir.endmodule` op and all the code associated with it.
Along the way, tightened the APIs for `spv.module` a bit by removing some aliases. Now we use `getRegion` to get the only region, and `getBody` to get the region's only block.
Reviewed By: mravishankar, hanchung
Differential Revision: https://reviews.llvm.org/D103265
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
e4dee7e7 |
| 07-May-2021 |
KareemErgawy-TomTom <[email protected]> |
[MLIR][SPIRV] Properly (de-)serialize BranchConditionalOp.
Implements proper (de-)serialization logic for BranchConditionalOp when such ops have true/false target operands.
Reviewed By: antiagainst
[MLIR][SPIRV] Properly (de-)serialize BranchConditionalOp.
Implements proper (de-)serialization logic for BranchConditionalOp when such ops have true/false target operands.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D101602
show more ...
|
| #
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 |
|
| #
a4bb667d |
| 08-Mar-2021 |
River Riddle <[email protected]> |
[mlir][IR][NFC] Define the Location classes in ODS instead of C++
This also removes the need for LocationDetail.h.
Differential Revision: https://reviews.llvm.org/D98092
|
| #
3fb384d5 |
| 06-Mar-2021 |
KareemErgawy-TomTom <[email protected]> |
[MLIR][SPIRV] Rename `spv.selection` to `spv.mlir.selection`.
To unify the naming scheme across all ops in the SPIR-V dialect, we are moving from spv.camelCase to spv.CamelCase everywhere. For ops t
[MLIR][SPIRV] Rename `spv.selection` to `spv.mlir.selection`.
To unify the naming scheme across all ops in the SPIR-V dialect, we are moving from spv.camelCase to spv.CamelCase everywhere. For ops that don't have a SPIR-V spec counterpart, we use spv.mlir.snake_case.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D98014
show more ...
|
| #
29812a61 |
| 05-Mar-2021 |
KareemErgawy-TomTom <[email protected]> |
[MLIR][SPIRV] Rename `spv.loop` to `spv.mlir.loop`.
To unify the naming scheme across all ops in the SPIR-V dialect, we are moving from spv.camelCase to spv.CamelCase everywhere.
Reviewed By: antia
[MLIR][SPIRV] Rename `spv.loop` to `spv.mlir.loop`.
To unify the naming scheme across all ops in the SPIR-V dialect, we are moving from spv.camelCase to spv.CamelCase everywhere.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D97918
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc2 |
|
| #
2ef24139 |
| 09-Feb-2021 |
Weiwei Li <[email protected]> |
[mlir][spirv] Add support for sampled image type
co-authored-by: Alan Liu <[email protected]>
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D96169
|
| #
88d5c4c2 |
| 08-Feb-2021 |
KareemErgawy-TomTom <[email protected]> |
[MLIR][SPIRV] NFC: Split serialization code among multiple files.
Following up on https://reviews.llvm.org/D94360, this patch splits the serialization code into multiple source files to provide a be
[MLIR][SPIRV] NFC: Split serialization code among multiple files.
Following up on https://reviews.llvm.org/D94360, this patch splits the serialization code into multiple source files to provide a better structure and allow parallel compilation.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D95855
show more ...
|