<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/utils/TableGen/GlobalISelCombinerEmitter.cpp, branch users/nico/python-1</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>[GISel][AArch64] Allow PatLeafs to be imported in GISel which were previously causing warnings (#140935)</title>
<updated>2025-06-09T08:02:56+00:00</updated>
<author>
<name>jyli0116</name>
<email>yu.li@arm.com</email>
</author>
<published>2025-06-09T08:02:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f3ffee601c1746eafa9a6684541e90d182c9126e'/>
<id>f3ffee601c1746eafa9a6684541e90d182c9126e</id>
<content type='text'>
Previously PatLeafs could not be imported, causing the following
warnings to be emitted when running tblgen with
`-warn-on-skipped-patterns:`
```
/work/clean/llvm/lib/Target/AArch64/AArch64InstrInfo.td:2631:1: warning: Skipped pattern: Src pattern child has unsupported predicate
def : Pat&lt;(i64 (mul top32Zero:$Rn, top32Zero:$Rm)),
^
```
These changes allow the patterns to now be imported successfully.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously PatLeafs could not be imported, causing the following
warnings to be emitted when running tblgen with
`-warn-on-skipped-patterns:`
```
/work/clean/llvm/lib/Target/AArch64/AArch64InstrInfo.td:2631:1: warning: Skipped pattern: Src pattern child has unsupported predicate
def : Pat&lt;(i64 (mul top32Zero:$Rn, top32Zero:$Rm)),
^
```
These changes allow the patterns to now be imported successfully.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Use `contains` instead of `count`. NFC. (#143156)</title>
<updated>2025-06-07T08:31:42+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2025-06-07T08:31:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bb9dcb27df133dd3788e7dfcd2bf31382673a2bc'/>
<id>bb9dcb27df133dd3788e7dfcd2bf31382673a2bc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[LLVM][TableGen] Rename `ListInit::getValues()` to `getElements()` (#140289)</title>
<updated>2025-05-19T19:16:33+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-05-19T19:16:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3932360b14c390188977a53ecba6c13fff685aae'/>
<id>3932360b14c390188977a53ecba6c13fff685aae</id>
<content type='text'>
Rename `ListInit::getValues()` to `getElements()` to better match with
other `ListInit` members like `getElement`. Keep `getValues()` for
existing downstream code but mark it deprecated.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rename `ListInit::getValues()` to `getElements()` to better match with
other `ListInit` members like `getElement`. Keep `getValues()` for
existing downstream code but mark it deprecated.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Fix a warning in GlobalISelCombinerEmitter.cpp (NFC)</title>
<updated>2025-05-13T13:48:17+00:00</updated>
<author>
<name>Jie Fu</name>
<email>jiefu@tencent.com</email>
</author>
<published>2025-05-13T13:48:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=195fe59c11b825548343ba996cf5e26fe2c432f1'/>
<id>195fe59c11b825548343ba996cf5e26fe2c432f1</id>
<content type='text'>
/llvm-project/llvm/utils/TableGen/GlobalISelCombinerEmitter.cpp:2612:14:
error: variable 'ExpectedID' set but not used [-Werror,-Wunused-but-set-variable]
    unsigned ExpectedID = 0;
             ^
1 error generated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
/llvm-project/llvm/utils/TableGen/GlobalISelCombinerEmitter.cpp:2612:14:
error: variable 'ExpectedID' set but not used [-Werror,-Wunused-but-set-variable]
    unsigned ExpectedID = 0;
             ^
1 error generated.
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Fixup #139715</title>
<updated>2025-05-13T12:22:07+00:00</updated>
<author>
<name>pvanhout</name>
<email>pierre.vanhoutryve@amd.com</email>
</author>
<published>2025-05-13T12:21:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6c6413f3f973862c7275e7baecdd4bb6bcf430c9'/>
<id>6c6413f3f973862c7275e7baecdd4bb6bcf430c9</id>
<content type='text'>
The increment must be after the assert, not before, otherwise the assert fails everytime.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The increment must be after the assert, not before, otherwise the assert fails everytime.
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Avoid assignmentInAssert warning (#139715)</title>
<updated>2025-05-13T12:08:33+00:00</updated>
<author>
<name>Pierre van Houtryve</name>
<email>pierre.vanhoutryve@amd.com</email>
</author>
<published>2025-05-13T12:08:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8be514cc96345feb35d8d8a372ee771c6d69a73f'/>
<id>8be514cc96345feb35d8d8a372ee771c6d69a73f</id>
<content type='text'>
ExpectedID should be optimized out anyway if built without assertions
because nothing reads its value.

Fixes #90327</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ExpectedID should be optimized out anyway if built without assertions
because nothing reads its value.

Fixes #90327</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TableGen] Add {} for `else` when `if` body has {} (#139420)</title>
<updated>2025-05-12T15:34:12+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-05-12T15:34:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2e8b539e7138122ae6bd54a2dddc296386bd7e28'/>
<id>2e8b539e7138122ae6bd54a2dddc296386bd7e28</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Remove unused local variables (NFC) (#138467)</title>
<updated>2025-05-04T20:05:18+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-05-04T20:05:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c51a3aa6ceb63a58ab7658ea999c65b818da6b1d'/>
<id>c51a3aa6ceb63a58ab7658ea999c65b818da6b1d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[GlobalISel] Add `combine` action for C++ combine rules (#135941)</title>
<updated>2025-04-25T10:10:02+00:00</updated>
<author>
<name>Pierre van Houtryve</name>
<email>pierre.vanhoutryve@amd.com</email>
</author>
<published>2025-04-25T10:10:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c792b25e47e00dbf2cd9654bf806fe5f9de6e44e'/>
<id>c792b25e47e00dbf2cd9654bf806fe5f9de6e44e</id>
<content type='text'>
Adds a `combine` action (DAG operator) which allows for easy definition of
combine rule that only match one or more instructions, and defer all remaining
match/apply logic to C++ code.

This avoids the need for split match/apply function in such cases. One function
can do the trick as long as it returns `true` if it changed any code.

This is implemented as syntactic sugar over match/apply. The combine rule is
just a match pattern BUT every C++ pattern inside is treated as an "apply" function.
This makes it fit seamlessly with the current backend.

Fixes #92410</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds a `combine` action (DAG operator) which allows for easy definition of
combine rule that only match one or more instructions, and defer all remaining
match/apply logic to C++ code.

This avoids the need for split match/apply function in such cases. One function
can do the trick as long as it returns `true` if it changed any code.

This is implemented as syntactic sugar over match/apply. The combine rule is
just a match pattern BUT every C++ pattern inside is treated as an "apply" function.
This makes it fit seamlessly with the current backend.

Fixes #92410</pre>
</div>
</content>
</entry>
<entry>
<title>[EquivalenceClasses] Use SmallVector for deterministic iteration order. (#134075)</title>
<updated>2025-04-02T19:27:43+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2025-04-02T19:27:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3bdf9a08804a5b424fd32fef3b0089f3a6db839d'/>
<id>3bdf9a08804a5b424fd32fef3b0089f3a6db839d</id>
<content type='text'>
Currently iterators over EquivalenceClasses will iterate over std::set,
which guarantees the order specified by the comperator. Unfortunately in
many cases, EquivalenceClasses are used with pointers, so iterating over
std::set of pointers will not be deterministic across runs.

There are multiple places that explicitly try to sort the equivalence
classes before using them to try to get a deterministic order
(LowerTypeTests, SplitModule), but there are others that do not at the
moment and this can result at least in non-determinstic value naming in
Float2Int.

This patch updates EquivalenceClasses to keep track of all members via a
extra SmallVector and removes code from LowerTypeTests and SplitModule
to sort the classes before processing.

Overall it looks like compile-time slightly decreases in most cases, but
close to noise:

https://llvm-compile-time-tracker.com/compare.php?from=7d441d9892295a6eb8aaf481e1715f039f6f224f&amp;to=b0c2ac67a88d3ef86987e2f82115ea0170675a17&amp;stat=instructions

PR: https://github.com/llvm/llvm-project/pull/134075</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently iterators over EquivalenceClasses will iterate over std::set,
which guarantees the order specified by the comperator. Unfortunately in
many cases, EquivalenceClasses are used with pointers, so iterating over
std::set of pointers will not be deterministic across runs.

There are multiple places that explicitly try to sort the equivalence
classes before using them to try to get a deterministic order
(LowerTypeTests, SplitModule), but there are others that do not at the
moment and this can result at least in non-determinstic value naming in
Float2Int.

This patch updates EquivalenceClasses to keep track of all members via a
extra SmallVector and removes code from LowerTypeTests and SplitModule
to sort the classes before processing.

Overall it looks like compile-time slightly decreases in most cases, but
close to noise:

https://llvm-compile-time-tracker.com/compare.php?from=7d441d9892295a6eb8aaf481e1715f039f6f224f&amp;to=b0c2ac67a88d3ef86987e2f82115ea0170675a17&amp;stat=instructions

PR: https://github.com/llvm/llvm-project/pull/134075</pre>
</div>
</content>
</entry>
</feed>
