diff options
author | Krzysztof Drewniak <Krzysztof.Drewniak@amd.com> | 2025-10-16 11:09:25 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-10-16 13:09:25 -0500 |
commit | 8c05b5cca8784814cf11ac9d85c4ab59d2952ca5 (patch) | |
tree | 1369a8c0fc15cc7fc5222934406d82b6bc4faaec /clang/lib/InstallAPI/HeaderFile.cpp | |
parent | d58b5a6ead7e0a21b2a9526117e62428580d401e (diff) | |
download | llvm-8c05b5cca8784814cf11ac9d85c4ab59d2952ca5.zip llvm-8c05b5cca8784814cf11ac9d85c4ab59d2952ca5.tar.gz llvm-8c05b5cca8784814cf11ac9d85c4ab59d2952ca5.tar.bz2 |
[mlir][Affine] Cancel delinearize_index ops fully reversed by apply (#163440)
If an `affine.apply` uses every result of an
`affine.delinearize_index` operaration in an expresession of the form
x_0 * S_0 + x_1 * S_1 + ... + x_n * S_n + ..., where S_i is the "stride"
of the i-th delinerization result (the value it got divided by), then,
that chain of additions contains the inverse of the
affine.delinearize_index.
We don't want to compose affine.delinearize_index into affine.apply in
general, since this leads to "simplifications" (mainly the `x % y => x -
(x / y) * y` rewrite) thate are bad for code generation and algetbraic
reasoning. However, if we do see an exact inverse, we should cancel it
out.
Diffstat (limited to 'clang/lib/InstallAPI/HeaderFile.cpp')
0 files changed, 0 insertions, 0 deletions