<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.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 (23/n) (#149930)</title>
<updated>2025-07-23T14:16:52+00:00</updated>
<author>
<name>Maksim Levental</name>
<email>maksim.levental@gmail.com</email>
</author>
<published>2025-07-23T14:16:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8fff238b2c363b036ce9e7bf7abab3acafc87ab2'/>
<id>8fff238b2c363b036ce9e7bf7abab3acafc87ab2</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] Remove unused includes (NFC) (#148119)</title>
<updated>2025-07-11T18:59:26+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-07-11T18:59:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5e0de68626828009c4cc09e2ce984f9c9634f6f6'/>
<id>5e0de68626828009c4cc09e2ce984f9c9634f6f6</id>
<content type='text'>
These are identified by misc-include-cleaner.  I've filtered out those
that break builds.  Also, I'm staying away from llvm-config.h,
config.h, and Compiler.h, which likely cause platform- or
compiler-specific build failures.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These are identified by misc-include-cleaner.  I've filtered out those
that break builds.  Also, I'm staying away from llvm-config.h,
config.h, and Compiler.h, which likely cause platform- or
compiler-specific build failures.</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][NFC] Simplify constant checks with isOneInteger and renamed isZeroInteger. (#139340)</title>
<updated>2025-05-20T21:53:02+00:00</updated>
<author>
<name>Han-Chung Wang</name>
<email>hanhan0912@gmail.com</email>
</author>
<published>2025-05-20T21:53:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c39915fa2ea2f8cc7f51d3692d17cbc8a968714c'/>
<id>c39915fa2ea2f8cc7f51d3692d17cbc8a968714c</id>
<content type='text'>
The revision adds isOneInteger helper, and simplifies the existing code
with the two methods. It removes some lambda, which makes code cleaner.

For downstream users, you can update the code with the below script.

```bash
sed -i "s/isZeroIndex/isZeroInteger/g" **/*.h
sed -i "s/isZeroIndex/isZeroInteger/g" **/*.cpp
```

---------

Signed-off-by: hanhanW &lt;hanhan0912@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The revision adds isOneInteger helper, and simplifies the existing code
with the two methods. It removes some lambda, which makes code cleaner.

For downstream users, you can update the code with the below script.

```bash
sed -i "s/isZeroIndex/isZeroInteger/g" **/*.h
sed -i "s/isZeroIndex/isZeroInteger/g" **/*.cpp
```

---------

Signed-off-by: hanhanW &lt;hanhan0912@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir] Add optimization to bubbleUpPadSlice pattern for no pad case (#135859)</title>
<updated>2025-04-18T17:21:37+00:00</updated>
<author>
<name>Nirvedh Meshram</name>
<email>96096277+nirvedhmeshram@users.noreply.github.com</email>
</author>
<published>2025-04-18T17:21:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=23020a8d01a3f58e4903c42eba4b803d5809653e'/>
<id>23020a8d01a3f58e4903c42eba4b803d5809653e</id>
<content type='text'>
In cases where there is no padding on a dim, we do not need to compute
new offsets, lengths and padding, for example the new test case added
can just be lowered to
```
    %extracted_slice = tensor.extract_slice %arg0[%arg2, 1, 2] [%arg2, 2, 1] [1, 1, 1] : tensor&lt;3x4x5xf32&gt; to tensor&lt;?x2x1xf32&gt;
 ```
without this PR we will have affine maps like
 ```
#map = affine_map&lt;()[s0] -&gt; (3, s0)&gt;
#map1 = affine_map&lt;()[s0, s1] -&gt; (-s0 + 3, s1)&gt;
%0 = affine.min #map()[%arg2]
 %1 = affine.min #map1()[%0, %arg2]
 %extracted_slice = tensor.extract_slice %arg0[%0, 1, 2] [%1, 2, 1] [1, 1, 1] : tensor&lt;3x4x5xf32&gt; to tensor&lt;?x2x1xf32&gt;
 ```
  which are unnecessary

Signed-off-by: Nirvedh &lt;nirvedh@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In cases where there is no padding on a dim, we do not need to compute
new offsets, lengths and padding, for example the new test case added
can just be lowered to
```
    %extracted_slice = tensor.extract_slice %arg0[%arg2, 1, 2] [%arg2, 2, 1] [1, 1, 1] : tensor&lt;3x4x5xf32&gt; to tensor&lt;?x2x1xf32&gt;
 ```
without this PR we will have affine maps like
 ```
#map = affine_map&lt;()[s0] -&gt; (3, s0)&gt;
#map1 = affine_map&lt;()[s0, s1] -&gt; (-s0 + 3, s1)&gt;
%0 = affine.min #map()[%arg2]
 %1 = affine.min #map1()[%0, %arg2]
 %extracted_slice = tensor.extract_slice %arg0[%0, 1, 2] [%1, 2, 1] [1, 1, 1] : tensor&lt;3x4x5xf32&gt; to tensor&lt;?x2x1xf32&gt;
 ```
  which are unnecessary

Signed-off-by: Nirvedh &lt;nirvedh@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][tensor][linalg] Move Pack/UnPack Ops to Linalg (#123902)</title>
<updated>2025-02-17T10:44:27+00:00</updated>
<author>
<name>Andrzej Warzyński</name>
<email>andrzej.warzynski@arm.com</email>
</author>
<published>2025-02-17T10:44:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=517800e37e8d3a4ee84214bef65e227612c2a98b'/>
<id>517800e37e8d3a4ee84214bef65e227612c2a98b</id>
<content type='text'>
Moves `PackOp` and `UnPackOp` from the Tensor dialect to Linalg. This change
was discussed in the following RFC:
* https://discourse.llvm.org/t/rfc-move-tensor-pack-and-tensor-unpack-into-linalg

This change involves significant churn but only relocates existing code - no new
functionality is added.

**Note for Downstream Users**
Downstream users must update references to `PackOp` and `UnPackOp` as follows:
  * Code: `s/tensor::(Up)PackOp/linalg::(Un)PackOp/g`
  * Tests: `s/tensor.(un)pack/linalg.(un)pack/g`

No other modifications should be required.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Moves `PackOp` and `UnPackOp` from the Tensor dialect to Linalg. This change
was discussed in the following RFC:
* https://discourse.llvm.org/t/rfc-move-tensor-pack-and-tensor-unpack-into-linalg

This change involves significant churn but only relocates existing code - no new
functionality is added.

**Note for Downstream Users**
Downstream users must update references to `PackOp` and `UnPackOp` as follows:
  * Code: `s/tensor::(Up)PackOp/linalg::(Un)PackOp/g`
  * Tests: `s/tensor.(un)pack/linalg.(un)pack/g`

No other modifications should be required.</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][tensor] fix typo in pad tiling comment</title>
<updated>2024-12-12T17:53:40+00:00</updated>
<author>
<name>Nirvedh</name>
<email>nirvedh@gmail.com</email>
</author>
<published>2024-12-12T17:53:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=33927744db2a910fe1cdeecf9e074d488de2e787'/>
<id>33927744db2a910fe1cdeecf9e074d488de2e787</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir][tensor] fix typo in pad tiling comment</title>
<updated>2024-12-12T17:52:30+00:00</updated>
<author>
<name>Nirvedh</name>
<email>nirvedh@gmail.com</email>
</author>
<published>2024-12-12T17:52:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=85c91afb85be52399e0fc7f082dd1c99932dffaa'/>
<id>85c91afb85be52399e0fc7f082dd1c99932dffaa</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>NfC fix comment in #119039 (#119727)</title>
<updated>2024-12-12T17:36:12+00:00</updated>
<author>
<name>Nirvedh Meshram</name>
<email>96096277+nirvedhmeshram@users.noreply.github.com</email>
</author>
<published>2024-12-12T17:36:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=77400103da63118e433cbee1feb20146a9fb782c'/>
<id>77400103da63118e433cbee1feb20146a9fb782c</id>
<content type='text'>
Missed commiting clang-fomrat in
[#19903](https://github.com/llvm/llvm-project/pull/119039)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Missed commiting clang-fomrat in
[#19903](https://github.com/llvm/llvm-project/pull/119039)</pre>
</div>
</content>
</entry>
<entry>
<title>[Tensor] Simplify tenor.pad tiling length calculations. (#119039)</title>
<updated>2024-12-12T17:24:20+00:00</updated>
<author>
<name>Nirvedh Meshram</name>
<email>96096277+nirvedhmeshram@users.noreply.github.com</email>
</author>
<published>2024-12-12T17:24:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3f136f7dfb41542c76c1b352544009bffbc399d2'/>
<id>3f136f7dfb41542c76c1b352544009bffbc399d2</id>
<content type='text'>
The current calculations calculate ending location of the new length and
then subtract the new offset from that location. It is possible to
directly calculate new length. Along with requiring less operations
(which can matter in dynamic case) this also has the advantage that the
values are upper bounded by length rather than source size which is more
friendly for range analysis. I believe the change is already being
tested by
`test/Dialect/Linalg/subtensor-of-padtensor.mlir` and
`test/Dialect/Linalg/tile-and-fuse-tensors.mlir`

---------

Signed-off-by: Nirvedh &lt;nirvedh@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current calculations calculate ending location of the new length and
then subtract the new offset from that location. It is possible to
directly calculate new length. Along with requiring less operations
(which can matter in dynamic case) this also has the advantage that the
values are upper bounded by length rather than source size which is more
friendly for range analysis. I believe the change is already being
tested by
`test/Dialect/Linalg/subtensor-of-padtensor.mlir` and
`test/Dialect/Linalg/tile-and-fuse-tensors.mlir`

---------

Signed-off-by: Nirvedh &lt;nirvedh@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[mlir] Clamp UnPackOp tiling sizes from operand tile (#112429)</title>
<updated>2024-11-13T14:49:19+00:00</updated>
<author>
<name>Max191</name>
<email>44243577+Max191@users.noreply.github.com</email>
</author>
<published>2024-11-13T14:49:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8cc616bc71dfe0648de3843a006ac8827c5fe59d'/>
<id>8cc616bc71dfe0648de3843a006ac8827c5fe59d</id>
<content type='text'>
The `getIterationDomainTileFromOperandTile` implementation for
tensor.unpack did not clamp sizes when the unpack op had extract_slice
semantics. This PR fixes the bug.

The PR also makes a minor change to `tileAndFuseConsumerOfSlice`. When
replacing DPS inits, the iteration domain is needed, and it is computed
from the tiled version of the operation after the initial tiling
transformation. This can result in some extra indexing computation, so
the PR changes it to use the original full sized cloned consumer op.

---------

Signed-off-by: Max Dawkins &lt;max.dawkins@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The `getIterationDomainTileFromOperandTile` implementation for
tensor.unpack did not clamp sizes when the unpack op had extract_slice
semantics. This PR fixes the bug.

The PR also makes a minor change to `tileAndFuseConsumerOfSlice`. When
replacing DPS inits, the iteration domain is needed, and it is computed
from the tiled version of the operation after the initial tiling
transformation. This can result in some extra indexing computation, so
the PR changes it to use the original full sized cloned consumer op.

---------

Signed-off-by: Max Dawkins &lt;max.dawkins@gmail.com&gt;</pre>
</div>
</content>
</entry>
</feed>
