<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.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>TableGen: Split RuntimeLibcallsEmitter into separate utility header (#166583)</title>
<updated>2025-11-05T19:55:59+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-11-05T19:55:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0469ff0a212d7f3dea464c52e19d56e22b5af858'/>
<id>0469ff0a212d7f3dea464c52e19d56e22b5af858</id>
<content type='text'>
This information will be needed in more emitters, so start factoring
it to be more reusable.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This information will be needed in more emitters, so start factoring
it to be more reusable.</pre>
</div>
</content>
</entry>
<entry>
<title>RuntimeLibcalls: Split lowering decisions into LibcallLoweringInfo (#164987)</title>
<updated>2025-11-05T17:10:36+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-11-05T17:10:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=056d2c12f75654b4b78c938a5243fa57efbd1547'/>
<id>056d2c12f75654b4b78c938a5243fa57efbd1547</id>
<content type='text'>
Introduce a new class for the TargetLowering usage. This tracks the
subtarget specific lowering decisions for which libcall to use.
RuntimeLibcallsInfo is a module level property, which may have multiple
implementations of a particular libcall available. This attempts to be
a minimum boilerplate patch to introduce the new concept.

In the future we should have a tablegen way of selecting which
implementations should be used for a subtarget. Currently we
do have some conflicting implementations added, it just happens
to work out that the default cases to prefer is alphabetically
first (plus some of these still are using manual overrides
in TargetLowering constructors).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce a new class for the TargetLowering usage. This tracks the
subtarget specific lowering decisions for which libcall to use.
RuntimeLibcallsInfo is a module level property, which may have multiple
implementations of a particular libcall available. This attempts to be
a minimum boilerplate patch to introduce the new concept.

In the future we should have a tablegen way of selecting which
implementations should be used for a subtarget. Currently we
do have some conflicting implementations added, it just happens
to work out that the default cases to prefer is alphabetically
first (plus some of these still are using manual overrides
in TargetLowering constructors).</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Use "= default" (NFC) (#165968)</title>
<updated>2025-11-01T16:25:04+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-11-01T16:25:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=83195d9541a27aca2a86c2b73694e0deee7f1d7e'/>
<id>83195d9541a27aca2a86c2b73694e0deee7f1d7e</id>
<content type='text'>
Identified with modernize-use-equals-default.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Identified with modernize-use-equals-default.</pre>
</div>
</content>
</entry>
<entry>
<title>TableGen: Use IfDefEmitter (#164209)</title>
<updated>2025-10-21T01:09:05+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-10-21T01:09:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b74801ad8790e35eeaa03bf2359683f3378269c5'/>
<id>b74801ad8790e35eeaa03bf2359683f3378269c5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>TableGen: Account for Unsupporte LibcallImpl in bitset size (#163083)</title>
<updated>2025-10-13T02:32:25+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-10-13T02:32:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=aaf5493fd3f783746ac5d8d384509bf40fe7cfd4'/>
<id>aaf5493fd3f783746ac5d8d384509bf40fe7cfd4</id>
<content type='text'>
The Unsupported case is special and doesn't have an entry in the
vector, and is directly emitted as the 0 case. This should be
harmless as it is, but could break if the right number of new
libcalls is added.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The Unsupported case is special and doesn't have an entry in the
vector, and is directly emitted as the 0 case. This should be
harmless as it is, but could break if the right number of new
libcalls is added.</pre>
</div>
</content>
</entry>
<entry>
<title>RuntimeLibcalls: Add bitset for available libcalls (#150869)</title>
<updated>2025-10-10T08:27:30+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-10-10T08:27:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=aa406aaa671888540ec9e908742c26229d6d7508'/>
<id>aa406aaa671888540ec9e908742c26229d6d7508</id>
<content type='text'>
This is a step towards separating the set of available libcalls
from the lowering decision of which call to use. Libcall recognition
now directly checks availability instead of indirectly checking through
the lowering table.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a step towards separating the set of available libcalls
from the lowering decision of which call to use. Libcall recognition
now directly checks availability instead of indirectly checking through
the lowering table.</pre>
</div>
</content>
</entry>
<entry>
<title>TableGen: Go back to using range loop over runtime libcall sets (#162221)</title>
<updated>2025-10-07T11:46:01+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-10-07T11:46:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ccae485f2b8aeb3d3bcc3018e26e60fd523e95fe'/>
<id>ccae485f2b8aeb3d3bcc3018e26e60fd523e95fe</id>
<content type='text'>
This reverts 9c361cc and replaces f490dbdc. Instead of using the lambda
to try avoid naming the variables, just disambiguate the different
AlwaysAvailable
sets with the calling convention name.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts 9c361cc and replaces f490dbdc. Instead of using the lambda
to try avoid naming the variables, just disambiguate the different
AlwaysAvailable
sets with the calling convention name.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Reduce stack usage of setTargetRuntimeLibcallSets (#162194)</title>
<updated>2025-10-07T00:12:29+00:00</updated>
<author>
<name>Nadharm</name>
<email>ndhiantravan@nvidia.com</email>
</author>
<published>2025-10-07T00:12:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f490dbdc323c332b42085538ef7fe8de45ac00f7'/>
<id>f490dbdc323c332b42085538ef7fe8de45ac00f7</id>
<content type='text'>
This change resolves a stack usage issue seen in the TableGen'd function
`setTargetRuntimeLibcallSets` when compiled with MSVC. This change
reduces the frame size from 47720 bytes to 48 bytes.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change resolves a stack usage issue seen in the TableGen'd function
`setTargetRuntimeLibcallSets` when compiled with MSVC. This change
reduces the frame size from 47720 bytes to 48 bytes.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] RuntimeLibcalls: Prefix the impls with 'Impl_' (#153850)</title>
<updated>2025-09-02T16:57:33+00:00</updated>
<author>
<name>Daniel Paoliello</name>
<email>danpao@microsoft.com</email>
</author>
<published>2025-09-02T16:57:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f99b0f3de4f627dac0092a9bea4faa8d3cf0b2e1'/>
<id>f99b0f3de4f627dac0092a9bea4faa8d3cf0b2e1</id>
<content type='text'>
As noted in #153256, TableGen is generating reserved names for
RuntimeLibcalls, which resulted in a build failure for Arm64EC since
`vcruntime.h` defines `__security_check_cookie` as a macro.

To avoid using reserved names, all impl names will now be prefixed with
`Impl_`.

`NumLibcallImpls` was lifted out as a `constexpr size_t` instead of
being an enum field.

While I was churning the dependent code, I also removed the TODO to move
the impl enum into its own namespace and use an `enum class`: I
experimented with using an `enum class` and adding a namespace, but we
decided it was too verbose so it was dropped.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As noted in #153256, TableGen is generating reserved names for
RuntimeLibcalls, which resulted in a build failure for Arm64EC since
`vcruntime.h` defines `__security_check_cookie` as a macro.

To avoid using reserved names, all impl names will now be prefixed with
`Impl_`.

`NumLibcallImpls` was lifted out as a `constexpr size_t` instead of
being an enum field.

While I was churning the dependent code, I also removed the TODO to move
the impl enum into its own namespace and use an `enum class`: I
experimented with using an `enum class` and adding a namespace, but we
decided it was too verbose so it was dropped.</pre>
</div>
</content>
</entry>
<entry>
<title>RuntimeLibcalls: Fix building hash table with duplicate entries (#153801)</title>
<updated>2025-08-25T11:56:43+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-08-25T11:56:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=41aba9ef3b5d411dd470a35a5f91566f7f7f6d64'/>
<id>41aba9ef3b5d411dd470a35a5f91566f7f7f6d64</id>
<content type='text'>
We were sizing the table appropriately for the number of LibcallImpls,
but many of those have identical names which were pushing up the
collision count unnecessarily. This ends up decreasing the table size
slightly, and makes it a bit faster.

BM_LookupRuntimeLibcallByNameRandomCalls improves by ~25% and
BM_LookupRuntimeLibcallByNameSampleData by ~5%.

As a secondary change, align the table size up to the next
power of 2. This makes the table larger than before, but improves
the sample data benchmark by an additional 5%.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We were sizing the table appropriately for the number of LibcallImpls,
but many of those have identical names which were pushing up the
collision count unnecessarily. This ends up decreasing the table size
slightly, and makes it a bit faster.

BM_LookupRuntimeLibcallByNameRandomCalls improves by ~25% and
BM_LookupRuntimeLibcallByNameSampleData by ~5%.

As a secondary change, align the table size up to the next
power of 2. This makes the table larger than before, but improves
the sample data benchmark by an additional 5%.</pre>
</div>
</content>
</entry>
</feed>
