<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/utils/TableGen/DAGISelMatcherOpt.cpp, branch users/nico/python-2</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>[NFC][TableGen] Use ArrayRef instead of const vector reference (#145323)</title>
<updated>2025-06-24T14:30:00+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-06-24T14:30:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fba63e3281e7658f67fcbdeb6a7bd7c3391ee736'/>
<id>fba63e3281e7658f67fcbdeb6a7bd7c3391ee736</id>
<content type='text'>
- Use `ArrayRef` instead of `SmallVector` reference in a few places.
- Drop redundant `llvm::` in a few places.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Use `ArrayRef` instead of `SmallVector` reference in a few places.
- Drop redundant `llvm::` in a few places.</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Remove redundant calls to std::unique_ptr&lt;T&gt;::get (NFC) (#138236)</title>
<updated>2025-05-02T15:53:53+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-05-02T15:53:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4ec473e0e19c1586f27ebc146249b10acb3b8769'/>
<id>4ec473e0e19c1586f27ebc146249b10acb3b8769</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Remove recursive walk of linked list from ContractNodes. NFC</title>
<updated>2025-02-09T22:23:34+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-09T06:50:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=04e5ea5237da5c49d05cd9499a5f0eb325638cf9'/>
<id>04e5ea5237da5c49d05cd9499a5f0eb325638cf9</id>
<content type='text'>
After f9250401ef120a4605ad67bb43d3b25500900498, this function is
tail recursive so it was straightforward to convert this to iteratively
walk the linkd list.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After f9250401ef120a4605ad67bb43d3b25500900498, this function is
tail recursive so it was straightforward to convert this to iteratively
walk the linkd list.
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Fix an unused variable warning. NFC</title>
<updated>2025-02-09T00:03:44+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-09T00:03:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4aa71f0d4cccf1b06949c5a3c5ceb2e19250c7df'/>
<id>4aa71f0d4cccf1b06949c5a3c5ceb2e19250c7df</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Move formation of MoveSiblingMatcher earlier in ContractNodes. NFC</title>
<updated>2025-02-08T23:58:12+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-08T23:58:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f9250401ef120a4605ad67bb43d3b25500900498'/>
<id>f9250401ef120a4605ad67bb43d3b25500900498</id>
<content type='text'>
ContractNodes recursively walks forward through a linked list. During
this recursion, Matchers are combined into other Matchers.

Previously the formation of MoveSiblingMatcher was after the
recursive call so it occurred as we were unwinding. If a
MoveSiblingMatcher was formed, we would recursively walk forward
to the end of the linked list again which isn't efficient.

To make this more efficient, move the formation of MoveSiblingMatcher
to the forward pass. Add additional rules to unfold MoveSiblingMatcher
if it would be more efficient to use CheckChildType, CheckChildInteger,
CheckChildSame, etc.

As an added benefit, this makes the function tail recursive which
the compiler can better optimize.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ContractNodes recursively walks forward through a linked list. During
this recursion, Matchers are combined into other Matchers.

Previously the formation of MoveSiblingMatcher was after the
recursive call so it occurred as we were unwinding. If a
MoveSiblingMatcher was formed, we would recursively walk forward
to the end of the linked list again which isn't efficient.

To make this more efficient, move the formation of MoveSiblingMatcher
to the forward pass. Add additional rules to unfold MoveSiblingMatcher
if it would be more efficient to use CheckChildType, CheckChildInteger,
CheckChildSame, etc.

As an added benefit, this makes the function tail recursive which
the compiler can better optimize.
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Use range-based for loops. NFC</title>
<updated>2025-02-07T03:14:10+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-07T03:10:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=01ac6fc9099f814517cf8ab405f3f6b646ca09d1'/>
<id>01ac6fc9099f814517cf8ab405f3f6b646ca09d1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Use std::copy instead of a manual copy loop. NFC</title>
<updated>2025-02-06T08:47:18+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-06T08:45:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5eed019080a53af5a5be915a5cf411466b77bf4b'/>
<id>5eed019080a53af5a5be915a5cf411466b77bf4b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Don't try to move CheckOpcode before CheckType/CheckChildType in ContractNodes. NFC</title>
<updated>2025-02-05T05:17:20+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-05T05:16:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=31bd82cdcc37df0ce19c6cf771d89a2afb80fa89'/>
<id>31bd82cdcc37df0ce19c6cf771d89a2afb80fa89</id>
<content type='text'>
It appears that CheckOpcode is already emitted before CheckType so
this hasn't been doing anything on any in tree targets.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It appears that CheckOpcode is already emitted before CheckType so
this hasn't been doing anything on any in tree targets.
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Split DAGISelMatcherOpt FactorNodes into 2 functions. NFC (#125330)</title>
<updated>2025-02-03T03:04:59+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-03T03:04:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=31db7afacf4dae051fcd0da22e440813663b61f3'/>
<id>31db7afacf4dae051fcd0da22e440813663b61f3</id>
<content type='text'>
The loop at the top of FactorNodes creates additional variables to deal
with needing to use a pointer to a unique_ptr instead of a reference.
Encapsulate this to its own function for better scoping.

This also allows us to directly skip this loop when we already know we
have a ScopeMatcher.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The loop at the top of FactorNodes creates additional variables to deal
with needing to use a pointer to a unique_ptr instead of a reference.
Encapsulate this to its own function for better scoping.

This also allows us to directly skip this loop when we already know we
have a ScopeMatcher.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Reorder code in ContractNodes to prevents unnecessary recursion. NFC</title>
<updated>2025-02-01T07:45:40+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-02-01T06:54:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2d17fc4ca31dcc8fdc5df0c554d548e348a5ee0b'/>
<id>2d17fc4ca31dcc8fdc5df0c554d548e348a5ee0b</id>
<content type='text'>
The code that moves CheckOpcode before CheckType/CheckChildType/RecordDwith
was running after ContractNodes started unwinding its recursion. If a
move occurs we would start a new recursion going forward
through the list again. I don't believe this can lead to any new
combines so it was just wasted work.

This patch moves the code earlier so it doesn't start a new recursion.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The code that moves CheckOpcode before CheckType/CheckChildType/RecordDwith
was running after ContractNodes started unwinding its recursion. If a
move occurs we would start a new recursion going forward
through the list again. I don't believe this can lead to any new
combines so it was just wasted work.

This patch moves the code earlier so it doesn't start a new recursion.
</pre>
</div>
</content>
</entry>
</feed>
