Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3 |
|
#
af6e1881 |
| 21-Oct-2024 |
Kazu Hirata <kazu@google.com> |
[mlir] Avoid repeated map lookups (NFC) (#113122)
|
#
2077fb80 |
| 20-Oct-2024 |
Kazu Hirata <kazu@google.com> |
[mlir] Avoid repeated map lookups (NFC) (#113074)
|
Revision tags: llvmorg-19.1.2 |
|
#
77f8297c |
| 13-Oct-2024 |
Matthias Springer <me@m-sp.org> |
[mlir][sparse] Improve sparse tensor type constraints (#112133)
Sparse tensors are always ranked tensors. Encodings cannot be attached
to unranked tensors. Change the type constraint to `RankedTens
[mlir][sparse] Improve sparse tensor type constraints (#112133)
Sparse tensors are always ranked tensors. Encodings cannot be attached
to unranked tensors. Change the type constraint to `RankedTensorOf`, so
that we generate `TypedValue<RankedTensorType>` instead of
`TypedValue<TensorType>`. This removes the need for type casting in some
cases.
Also improve the verifiers (missing `return` statements) and switch a
few other `AnyTensor` to `AnyRankedTensor`.
This commit is in preparation of a dialect conversion commit that
required fixes in the sparse dialect.
show more ...
|
Revision tags: llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4 |
|
#
b48ef8d8 |
| 23-Aug-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] unify block arguments order between iterate/coiterate operations. (#105567)
|
#
f607102a |
| 23-Aug-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] partially support lowering sparse coiteration loops to scf.while/for. (#105565)
|
#
c4420257 |
| 20-Aug-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] support sparsification to coiterate operations. (#102546)
|
Revision tags: llvmorg-19.1.0-rc3 |
|
#
7359a6b7 |
| 09-Aug-2024 |
Matthias Springer <me@m-sp.org> |
[mlir][ODS] Verify type constraints in Types and Attributes (#102326)
When a type/attribute is defined in TableGen, a type constraint can be
used for parameters, but the type constraint verificatio
[mlir][ODS] Verify type constraints in Types and Attributes (#102326)
When a type/attribute is defined in TableGen, a type constraint can be
used for parameters, but the type constraint verification was missing.
Example:
```
def TestTypeVerification : Test_Type<"TestTypeVerification"> {
let parameters = (ins AnyTypeOf<[I16, I32]>:$param);
// ...
}
```
No verification code was generated to ensure that `$param` is I16 or
I32.
When type constraints a present, a new method will generated for types
and attributes: `verifyInvariantsImpl`. (The naming is similar to op
verifiers.) The user-provided verifier is called `verify` (no change).
There is now a new entry point to type/attribute verification:
`verifyInvariants`. This function calls both `verifyInvariantsImpl` and
`verify`. If neither of those two verifications are present, the
`verifyInvariants` function is not generated.
When a type/attribute is not defined in TableGen, but a verifier is
needed, users can implement the `verifyInvariants` function. (This
function was previously called `verify`.)
Note for LLVM integration: If you have an attribute/type that is not
defined in TableGen (i.e., just C++), you have to rename the
verification function from `verify` to `verifyInvariants`. (Most
attributes/types have no verification, in which case there is nothing to
do.)
Depends on #102657.
show more ...
|
Revision tags: llvmorg-19.1.0-rc2 |
|
#
785a24f1 |
| 31-Jul-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] introduce `sparse_tensor.coiterate` operation. (#101100)
This PR introduces `sparse_tensor.coiterate` operation, which represents
a loop that traverses multiple sparse iteration spac
[mlir][sparse] introduce `sparse_tensor.coiterate` operation. (#101100)
This PR introduces `sparse_tensor.coiterate` operation, which represents
a loop that traverses multiple sparse iteration space.
show more ...
|
#
12189f80 |
| 30-Jul-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] introduce `sparse_tensor.extract_value` operation. (#101219)
|
Revision tags: llvmorg-19.1.0-rc1, llvmorg-20-init |
|
#
a02010b3 |
| 17-Jun-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] support sparsifying sparse kernels to sparse-iterator-based loop (#95858)
|
Revision tags: llvmorg-18.1.8 |
|
#
a43d79af |
| 14-Jun-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] add canonicalization patterns for IterateOp. (#95569)
|
#
e276cf08 |
| 10-Jun-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] introduce `sparse_tensor.iterate` operation (#88955)
A `sparse_tensor.iterate` iterates over a sparse iteration space
extracted from `sparse_tensor.extract_iteration_space` operation
[mlir][sparse] introduce `sparse_tensor.iterate` operation (#88955)
A `sparse_tensor.iterate` iterates over a sparse iteration space
extracted from `sparse_tensor.extract_iteration_space` operation
introduced in https://github.com/llvm/llvm-project/pull/88554.
show more ...
|
Revision tags: llvmorg-18.1.7, llvmorg-18.1.6 |
|
#
13af97a7 |
| 10-May-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] allow multiple COO segments in sparse encodings. (#91786)
**NOTE**: we still have implementation holes when handling multiple COO
segments in the encoding. But the format should be c
[mlir][sparse] allow multiple COO segments in sparse encodings. (#91786)
**NOTE**: we still have implementation holes when handling multiple COO
segments in the encoding. But the format should be considered to be
legal.
show more ...
|
#
83f3b1cb |
| 08-May-2024 |
Yinying Li <yinyingli@google.com> |
[mlir][sparse] Add verification for explicit/implicit value (#90111)
1. Verify that the type of explicit/implicit values should be the same
as the tensor element type.
2. Verify that implicit valu
[mlir][sparse] Add verification for explicit/implicit value (#90111)
1. Verify that the type of explicit/implicit values should be the same
as the tensor element type.
2. Verify that implicit value could only be zero.
3. Verify that explicit/implicit values should be numeric.
4. Fix the type change issue caused by SparseTensorType(enc).
show more ...
|
#
e71eacc5 |
| 02-May-2024 |
Yinying Li <yinyingli@google.com> |
[mlir][sparse] Support explicit/implicit value for complex type (#90771)
|
Revision tags: llvmorg-18.1.5 |
|
#
a10d67f9 |
| 24-Apr-2024 |
Yinying Li <yinyingli@google.com> |
[mlir][sparse] Enable explicit and implicit value in sparse encoding (#88975)
1. Explicit value means the non-zero value in a sparse tensor. If
explicitVal is set, then all the non-zero values in t
[mlir][sparse] Enable explicit and implicit value in sparse encoding (#88975)
1. Explicit value means the non-zero value in a sparse tensor. If
explicitVal is set, then all the non-zero values in the tensor have the
same explicit value. The default value Attribute() indicates that it is
not set.
2. Implicit value means the "zero" value in a sparse tensor. If
implicitVal is set, then the "zero" value in the tensor is equal to the
implicit value. For now, we only support `0` as the implicit value but
it could be extended in the future. The default value Attribute()
indicates that the implicit value is `0` (same type as the tensor
element type).
Example:
```
#CSR = #sparse_tensor.encoding<{
map = (d0, d1) -> (d0 : dense, d1 : compressed),
posWidth = 64,
crdWidth = 64,
explicitVal = 1 : i64,
implicitVal = 0 : i64
}>
```
Note: this PR tests that implicitVal could be set to other values as
well. The following PR will add verifier and reject any value that's not
zero for implicitVal.
show more ...
|
#
a5757c5b |
| 19-Apr-2024 |
Christian Sigg <chsigg@users.noreply.github.com> |
Switch member calls to `isa/dyn_cast/cast/...` to free function calls. (#89356)
This change cleans up call sites. Next step is to mark the member
functions deprecated.
See https://mlir.llvm.org/
Switch member calls to `isa/dyn_cast/cast/...` to free function calls. (#89356)
This change cleans up call sites. Next step is to mark the member
functions deprecated.
See https://mlir.llvm.org/deprecation and
https://discourse.llvm.org/t/preferred-casting-style-going-forward.
show more ...
|
Revision tags: llvmorg-18.1.4 |
|
#
481bd5d4 |
| 16-Apr-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] introduce `sparse_tensor.extract_iteration_space` operation. (#88554)
A `sparse_tensor.extract_space %tensor at %iterator` extracts a *sparse*
iteration space defined `%tensor`, the
[mlir][sparse] introduce `sparse_tensor.extract_iteration_space` operation. (#88554)
A `sparse_tensor.extract_space %tensor at %iterator` extracts a *sparse*
iteration space defined `%tensor`, the operation to traverse the
iteration space will be introduced in following PRs.
show more ...
|
#
b9556532 |
| 16-Apr-2024 |
Peiming Liu <peiming@google.com> |
Revert "[mlir][sparse] introduce sparse_tensor.iterate operation" (#88953)
Reverts llvm/llvm-project#88807 (merged by mistake)
|
#
8debcf03 |
| 16-Apr-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] introduce sparse_tensor.iterate operation (#88807)
A `sparse_tensor.iterate` iterates over a sparse iteration space
extracted from `sparse_tensor.extract_iteration_space` operation
[mlir][sparse] introduce sparse_tensor.iterate operation (#88807)
A `sparse_tensor.iterate` iterates over a sparse iteration space
extracted from `sparse_tensor.extract_iteration_space` operation
introduced in https://github.com/llvm/llvm-project/pull/88554.
*DO NOT MERGE* before https://github.com/llvm/llvm-project/pull/88554
show more ...
|
#
62fa12ad |
| 11-Apr-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] support querying sparse buffer types from sparse tenso… (#88308)
…r encodings.
|
Revision tags: llvmorg-18.1.3 |
|
#
a54930e6 |
| 01-Apr-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] allow YieldOp to yield multiple values. (#87261)
|
Revision tags: llvmorg-18.1.2 |
|
#
513cdb82 |
| 16-Mar-2024 |
Justin Fargnoli <justinfargnoli@gmail.com> |
[mlir] Declare promised interfaces for all dialects (#78368)
This PR adds promised interface declarations for all interfaces declared
in `InitAllDialects.h`.
Promised interfaces allow a dialect
[mlir] Declare promised interfaces for all dialects (#78368)
This PR adds promised interface declarations for all interfaces declared
in `InitAllDialects.h`.
Promised interfaces allow a dialect to declare that it will have an
implementation of a particular interface, crashing the program if one
isn't provided when the interface is used.
show more ...
|
#
94e27c26 |
| 12-Mar-2024 |
Peiming Liu <peiming@google.com> |
[mlir][sparse] reuse tensor.insert operation to insert elements into … (#84987)
…a sparse tensor.
|
Revision tags: llvmorg-18.1.1 |
|
#
ced1fac8 |
| 07-Mar-2024 |
Yinying Li <yinyingli@google.com> |
[mlir][sparse] Move n:m printing into toMLIRString (#84264)
|