<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/mlir/lib/Dialect/SparseTensor/Transforms/SparseIterationToScf.cpp, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[mlir][NFC] update `mlir/Dialect` create APIs (33/n) (#150659)</title>
<updated>2025-07-25T20:13:55+00:00</updated>
<author>
<name>Maksim Levental</name>
<email>maksim.levental@gmail.com</email>
</author>
<published>2025-07-25T20:13:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c090ed53fb73f59cf221f5610430af8047758117'/>
<id>c090ed53fb73f59cf221f5610430af8047758117</id>
<content type='text'>
See https://github.com/llvm/llvm-project/pull/147168 for more info.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
See https://github.com/llvm/llvm-project/pull/147168 for more info.</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][NFC] update `mlir/Dialect` create APIs (21/n) (#149928)</title>
<updated>2025-07-22T12:15:27+00:00</updated>
<author>
<name>Maksim Levental</name>
<email>maksim.levental@gmail.com</email>
</author>
<published>2025-07-22T12:15:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=972ac59c9af4ad47af0b3542ae936b3470727e5f'/>
<id>972ac59c9af4ad47af0b3542ae936b3470727e5f</id>
<content type='text'>
See https://github.com/llvm/llvm-project/pull/147168 for more info.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
See https://github.com/llvm/llvm-project/pull/147168 for more info.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] Fix destroy typo. (#135640)</title>
<updated>2025-04-15T00:20:44+00:00</updated>
<author>
<name>Connector Switch</name>
<email>c8ef@outlook.com</email>
</author>
<published>2025-04-15T00:20:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cc354d6a6da542515fbd6f39dcb9665b7c26a008'/>
<id>cc354d6a6da542515fbd6f39dcb9665b7c26a008</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir] Use `getSingleElement`/`hasSingleElement` in various places (#131460)</title>
<updated>2025-03-17T06:43:18+00:00</updated>
<author>
<name>Matthias Springer</name>
<email>me@m-sp.org</email>
</author>
<published>2025-03-17T06:43:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6c867e27a7b597910571677abdef77b703a5a601'/>
<id>6c867e27a7b597910571677abdef77b703a5a601</id>
<content type='text'>
This is a code cleanup. Update a few places in MLIR that should use
`hasSingleElement`/`getSingleElement`.

Note: `hasSingleElement` is faster than `.getSize() == 1` when it is
used with linked lists etc.

Depends on #131508.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a code cleanup. Update a few places in MLIR that should use
`hasSingleElement`/`getSingleElement`.

Note: `hasSingleElement` is faster than `.getSize() == 1` when it is
used with linked lists etc.

Depends on #131508.</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][sparse_tensor] Migrate `SparseIterationToScf.cpp` to dialect conversion (#121054)</title>
<updated>2024-12-27T08:13:15+00:00</updated>
<author>
<name>Matthias Springer</name>
<email>me@m-sp.org</email>
</author>
<published>2024-12-27T08:13:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2b5b3cf60d9e9e0c597bad1be1207b167ef15c9f'/>
<id>2b5b3cf60d9e9e0c597bad1be1207b167ef15c9f</id>
<content type='text'>
Use the regular dialect conversion driver instead of the 1:N dialect
conversion driver. The 1:N dialect conversion driver will be removed
soon.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use the regular dialect conversion driver instead of the 1:N dialect
conversion driver. The 1:N dialect conversion driver will be removed
soon.</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][Transforms] Dialect Conversion: Simplify materialization fn result type (#113031)</title>
<updated>2024-10-23T14:29:17+00:00</updated>
<author>
<name>Matthias Springer</name>
<email>me@m-sp.org</email>
</author>
<published>2024-10-23T14:29:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f18c3e4e7335df282c468b6dff3d29be1822a96d'/>
<id>f18c3e4e7335df282c468b6dff3d29be1822a96d</id>
<content type='text'>
This commit simplifies the result type of materialization functions.

Previously: `std::optional&lt;Value&gt;`
Now: `Value`

The previous implementation allowed 3 possible return values:
- Non-null value: The materialization function produced a valid
materialization.
- `std::nullopt`: The materialization function failed, but another
materialization can be attempted.
- `Value()`: The materialization failed and so should the dialect
conversion. (Previously: Dialect conversion can roll back.)

This commit removes the last variant. It is not particularly useful
because the dialect conversion will fail anyway if all other
materialization functions produced `std::nullopt`.

Furthermore, in contrast to type conversions, at least one
materialization callback is expected to succeed. In case of a failing
type conversion, the current dialect conversion can roll back and try a
different pattern. This also used to be the case for materializations,
but that functionality was removed with #107109: failed materializations
can no longer trigger a rollback. (They can just make the entire dialect
conversion fail without rollback.) With this in mind, it is even less
useful to have an additional error state for materialization functions.

This commit is in preparation of merging the 1:1 and 1:N type
converters. Target materializations will have to return multiple values
instead of a single one. With this commit, we can keep the API simple:
`SmallVector&lt;Value&gt;` instead of `std::optional&lt;SmallVector&lt;Value&gt;&gt;`.

Note for LLVM integration: All 1:1 materializations should return
`Value` instead of `std::optional&lt;Value&gt;`. Instead of `std::nullopt`
return `Value()`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit simplifies the result type of materialization functions.

Previously: `std::optional&lt;Value&gt;`
Now: `Value`

The previous implementation allowed 3 possible return values:
- Non-null value: The materialization function produced a valid
materialization.
- `std::nullopt`: The materialization function failed, but another
materialization can be attempted.
- `Value()`: The materialization failed and so should the dialect
conversion. (Previously: Dialect conversion can roll back.)

This commit removes the last variant. It is not particularly useful
because the dialect conversion will fail anyway if all other
materialization functions produced `std::nullopt`.

Furthermore, in contrast to type conversions, at least one
materialization callback is expected to succeed. In case of a failing
type conversion, the current dialect conversion can roll back and try a
different pattern. This also used to be the case for materializations,
but that functionality was removed with #107109: failed materializations
can no longer trigger a rollback. (They can just make the entire dialect
conversion fail without rollback.) With this in mind, it is even less
useful to have an additional error state for materialization functions.

This commit is in preparation of merging the 1:1 and 1:N type
converters. Target materializations will have to return multiple values
instead of a single one. With this commit, we can keep the API simple:
`SmallVector&lt;Value&gt;` instead of `std::optional&lt;SmallVector&lt;Value&gt;&gt;`.

Note for LLVM integration: All 1:1 materializations should return
`Value` instead of `std::optional&lt;Value&gt;`. Instead of `std::nullopt`
return `Value()`.</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][NFC] Mark type converter in `populate...` functions as `const` (#111250)</title>
<updated>2024-10-05T19:32:40+00:00</updated>
<author>
<name>Matthias Springer</name>
<email>me@m-sp.org</email>
</author>
<published>2024-10-05T19:32:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=206fad0e218e83799e49ca15545d997c6c5e8a03'/>
<id>206fad0e218e83799e49ca15545d997c6c5e8a03</id>
<content type='text'>
This commit marks the type converter in `populate...` functions as
`const`. This is useful for debugging.

Patterns already take a `const` type converter. However, some
`populate...` functions do not only add new patterns, but also add
additional type conversion rules. That makes it difficult to find the
place where a type conversion was added in the code base. With this
change, all `populate...` functions that only populate pattern now have
a `const` type converter. Programmers can then conclude from the
function signature that these functions do not register any new type
conversion rules.

Also some minor cleanups around the 1:N dialect conversion
infrastructure, which did not always pass the type converter as a
`const` object internally.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit marks the type converter in `populate...` functions as
`const`. This is useful for debugging.

Patterns already take a `const` type converter. However, some
`populate...` functions do not only add new patterns, but also add
additional type conversion rules. That makes it difficult to find the
place where a type conversion was added in the code base. With this
change, all `populate...` functions that only populate pattern now have
a `const` type converter. Programmers can then conclude from the
function signature that these functions do not register any new type
conversion rules.

Also some minor cleanups around the 1:N dialect conversion
infrastructure, which did not always pass the type converter as a
`const` object internally.</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][sparse] unify block arguments order between iterate/coiterate operations. (#105567)</title>
<updated>2024-08-23T21:49:00+00:00</updated>
<author>
<name>Peiming Liu</name>
<email>peiming@google.com</email>
</author>
<published>2024-08-23T21:49:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b48ef8d8d4fac69a9763945a6019dc59ad21ca28'/>
<id>b48ef8d8d4fac69a9763945a6019dc59ad21ca28</id>
<content type='text'>
 </content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 </pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][sparse] refactoring sparse_tensor.iterate lowering pattern implementation. (#105566)</title>
<updated>2024-08-23T18:21:44+00:00</updated>
<author>
<name>Peiming Liu</name>
<email>peiming@google.com</email>
</author>
<published>2024-08-23T18:21:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=71867042041ebb02c2865ed7c9b908e691b31a91'/>
<id>71867042041ebb02c2865ed7c9b908e691b31a91</id>
<content type='text'>
 </content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 </pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][sparse] partially support lowering sparse coiteration loops to scf.while/for. (#105565)</title>
<updated>2024-08-23T17:47:44+00:00</updated>
<author>
<name>Peiming Liu</name>
<email>peiming@google.com</email>
</author>
<published>2024-08-23T17:47:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f607102a0d6be0e2aebc1bfaed2ed0a6ae020145'/>
<id>f607102a0d6be0e2aebc1bfaed2ed0a6ae020145</id>
<content type='text'>
 </content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 </pre>
</div>
</content>
</entry>
</feed>
