History log of /llvm-project/mlir/lib/Dialect/SparseTensor/Transforms/Utils/LoopEmitter.cpp (Results 1 – 21 of 21)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init, llvmorg-19.1.7
# 129f1001 21-Dec-2024 Kazu Hirata <kazu@google.com>

[Dialect] Migrate away from PointerUnion::{is,get} (NFC) (#120818)

Note that PointerUnion::{is,get} have been soft deprecated in
PointerUnion.h:

// FIXME: Replace the uses of is(), get() and d

[Dialect] Migrate away from PointerUnion::{is,get} (NFC) (#120818)

Note that PointerUnion::{is,get} have been soft deprecated in
PointerUnion.h:

// FIXME: Replace the uses of is(), get() and dyn_cast() with
// isa<T>, cast<T> and the llvm::dyn_cast<T>

I'm not touching PointerUnion::dyn_cast for now because it's a bit
complicated; we could blindly migrate it to dyn_cast_if_present, but
we should probably use dyn_cast when the operand is known to be
non-null.

show more ...


Revision tags: 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
# 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, llvmorg-19.1.0-rc2, 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)


# bba5951b 17-Jun-2024 Shivam Gupta <shivam98.tkg@gmail.com>

[MLIR] Fix an assert that contains a mistake in conditional operator (#95668)

This is described in (N2) https://pvs-studio.com/en/blog/posts/cpp/1126/
so caught by the PVS Studio analyzer.

Warni

[MLIR] Fix an assert that contains a mistake in conditional operator (#95668)

This is described in (N2) https://pvs-studio.com/en/blog/posts/cpp/1126/
so caught by the PVS Studio analyzer.

Warning message -
V502 Perhaps the '?:' operator works in a different way than it was
expected. The '?:' operator has a lower priority than the '+' operator.
LoopEmitter.cpp 983
V502 Perhaps the '?:' operator works in a different way than it was
expected. The '?:' operator has a lower priority than the '+' operator.
LoopEmitter.cpp 1039

The assert should be
assert(bArgs.size() == reduc.size() + (needsUniv ? 1 : 0));
since + has higher precedence and ? has lower.

This further can be reduce to
assert(aArgs.size() == reduc.size() + needsUniv);
because needUniv is a bool value which is implicitly converted to 0 or

show more ...


Revision tags: llvmorg-18.1.8, llvmorg-18.1.7
# 197c3a3e 02-Jun-2024 Kazu Hirata <kazu@google.com>

Use llvm::less_first (NFC) (#94136)


Revision tags: llvmorg-18.1.6, llvmorg-18.1.5
# dbe37665 30-Apr-2024 Peiming Liu <peiming@google.com>

[mlir][sparse] handle padding on sparse levels. (#90527)


Revision tags: llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1
# 1a0986f0 29-Feb-2024 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] code cleanup (using inferred type to construct to_[buf… (#83361)

…fer] op).


Revision tags: llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3
# 35fae044 08-Feb-2024 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] using non-static field to avoid data races. (#81165)


Revision tags: llvmorg-18.1.0-rc2
# 1ac68462 02-Feb-2024 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] support sparse dilated convolution. (#80470)


# 4a653b4d 01-Feb-2024 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] Support pretty print to debug sparse iteration. (#80207)


Revision tags: llvmorg-18.1.0-rc1
# de5e4d7c 26-Jan-2024 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] fix error when convolution stride is applied on a dens… (#79521)

…e level.


# 982c815a 25-Jan-2024 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] fix mismatch between `enter/exitWhileLoop` (#79493)


# 298412b5 24-Jan-2024 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] setup `SparseIterator` to help generating code to traverse a sparse tensor level. (#78345)


Revision tags: llvmorg-19-init
# 5fcf907b 17-Jan-2024 Matthias Springer <me@m-sp.org>

[mlir][IR] Rename "update root" to "modify op" in rewriter API (#78260)

This commit renames 4 pattern rewriter API functions:
* `updateRootInPlace` -> `modifyOpInPlace`
* `startRootUpdate` -> `sta

[mlir][IR] Rename "update root" to "modify op" in rewriter API (#78260)

This commit renames 4 pattern rewriter API functions:
* `updateRootInPlace` -> `modifyOpInPlace`
* `startRootUpdate` -> `startOpModification`
* `finalizeRootUpdate` -> `finalizeOpModification`
* `cancelRootUpdate` -> `cancelOpModification`

The term "root" is a misnomer. The root is the op that a rewrite pattern
matches against
(https://mlir.llvm.org/docs/PatternRewriter/#root-operation-name-optional).
A rewriter must be notified of all in-place op modifications, not just
in-place modifications of the root
(https://mlir.llvm.org/docs/PatternRewriter/#pattern-rewriter). The old
function names were confusing and have contributed to various broken
rewrite patterns.

Note: The new function names use the term "modify" instead of "update"
for consistency with the `RewriterBase::Listener` terminology
(`notifyOperationModified`).

show more ...


# cf4dd911 20-Dec-2023 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] initialize slice-driven loop-related fields in one place (#76099)


# 10056c82 20-Dec-2023 Matthias Springer <me@m-sp.org>

[mlir][SCF] `scf.parallel`: Make reductions part of the terminator (#75314)

This commit makes reductions part of the terminator. Instead of
`scf.yield`, `scf.reduce` now terminates the body of `scf

[mlir][SCF] `scf.parallel`: Make reductions part of the terminator (#75314)

This commit makes reductions part of the terminator. Instead of
`scf.yield`, `scf.reduce` now terminates the body of `scf.parallel` ops.
`scf.reduce` may contain an arbitrary number of reductions, with one
region per reduction.

Example:
```mlir
%init = arith.constant 0.0 : f32
%r:2 = scf.parallel (%iv) = (%lb) to (%ub) step (%step) init (%init, %init)
-> f32, f32 {
%elem_to_reduce1 = load %buffer1[%iv] : memref<100xf32>
%elem_to_reduce2 = load %buffer2[%iv] : memref<100xf32>
scf.reduce(%elem_to_reduce1, %elem_to_reduce2 : f32, f32) {
^bb0(%lhs : f32, %rhs: f32):
%res = arith.addf %lhs, %rhs : f32
scf.reduce.return %res : f32
}, {
^bb0(%lhs : f32, %rhs: f32):
%res = arith.mulf %lhs, %rhs : f32
scf.reduce.return %res : f32
}
}
```

`scf.reduce` operations can no longer be interleaved with other ops in
the body of `scf.parallel`. This simplifies the op and makes it possible
to assign the `RecursiveMemoryEffects` trait to `scf.reduce`. (This was
not possible before because the op was not a terminator, causing the op
to be DCE'd.)

show more ...


# 6c06bde7 16-Dec-2023 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] support loop range query using SparseTensorLevel. (#75670)


# 21edad7d 15-Dec-2023 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[mlir][sparse] set up the skeleton for SparseTensorLevel abstraction. (#75645)

Note that at the current moment, the newly-introduced
`SparseTensorLevel` classes are far from complete, we plan to mi

[mlir][sparse] set up the skeleton for SparseTensorLevel abstraction. (#75645)

Note that at the current moment, the newly-introduced
`SparseTensorLevel` classes are far from complete, we plan to migrate
code generation related to accessing sparse tensor levels to these
classes in the near future to simplify `LoopEmitter`.

show more ...


# 4a72a4ef 15-Dec-2023 Peiming Liu <36770114+PeimingLiu@users.noreply.github.com>

[NFC][mlir][sparse] remove redundant parameter. (#75551)


# 365777ec 12-Dec-2023 Aart Bik <39774503+aartbik@users.noreply.github.com>

[mlir][sparse] refactor utilities into transform/utils dir (#75250)

Separates actual transformation files from supporting utility files in
the transforms directory. Includes a bazel overlay fix for

[mlir][sparse] refactor utilities into transform/utils dir (#75250)

Separates actual transformation files from supporting utility files in
the transforms directory. Includes a bazel overlay fix for the build (as
well as a bit of cleanup of that file to be less verbose and more
flexible).

show more ...