<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/CodeGen/Generic/machine-function-splitter.ll, 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>[BasicBlockSections] Allow mixing of -basic-block-sections with MFS. (#117076)</title>
<updated>2024-11-23T06:23:29+00:00</updated>
<author>
<name>Rahman Lavaee</name>
<email>rahmanl@google.com</email>
</author>
<published>2024-11-23T06:23:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=68f7b075c07197803625431ba92c337af7470c85'/>
<id>68f7b075c07197803625431ba92c337af7470c85</id>
<content type='text'>
This PR allows mixing `-basic-block-sections` with
`-enable-machine-function-splitter`. The strategy is to let
`-basic-block-sections` take precedence over functions with profiles.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR allows mixing `-basic-block-sections` with
`-enable-machine-function-splitter`. The strategy is to let
`-basic-block-sections` take precedence over functions with profiles.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][llvm] Remove "implicit-section-name" attribute (#87906)</title>
<updated>2024-04-11T19:29:29+00:00</updated>
<author>
<name>Arthur Eubanks</name>
<email>aeubanks@google.com</email>
</author>
<published>2024-04-11T19:29:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5d6d8dcd292e0a107b11d378932eee9c2f9ccfc7'/>
<id>5d6d8dcd292e0a107b11d378932eee9c2f9ccfc7</id>
<content type='text'>
D33412/D33413 introduced this to support a clang pragma to set section
names for a symbol depending on if it would be placed in
bss/data/rodata/text, which may not be known until the backend. However,
for text we know that only functions will go there, so just directly set
the section in clang instead of going through a completely separate
attribute.

Autoupgrade the "implicit-section-name" attribute to directly setting
the section on a Fuction.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
D33412/D33413 introduced this to support a clang pragma to set section
names for a symbol depending on if it would be placed in
bss/data/rodata/text, which may not be known until the backend. However,
for text we know that only functions will go there, so just directly set
the section in clang instead of going through a completely separate
attribute.

Autoupgrade the "implicit-section-name" attribute to directly setting
the section on a Fuction.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][CodeGen][AArch64] Add tests for unconditional branch duplication</title>
<updated>2024-01-05T23:39:01+00:00</updated>
<author>
<name>Daniel Hoekwater</name>
<email>hoekwater@google.com</email>
</author>
<published>2023-12-19T01:26:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=def42537ee65fd5d309b7ab70a9ea4d32eb6aadd'/>
<id>def42537ee65fd5d309b7ab70a9ea4d32eb6aadd</id>
<content type='text'>
c9f3288 introduced unconditional branch deduplication for basic block
sections and machine function splitting, but it didn't add tests for
AArch64 since prior behavior crashed the test.

This change adds tests for AArch64 and has no functional change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
c9f3288 introduced unconditional branch deduplication for basic block
sections and machine function splitting, but it didn't add tests for
AArch64 since prior behavior crashed the test.

This change adds tests for AArch64 and has no functional change.
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen][AArch64] Set min jump table entries to 13 for AArch64 targets (#71166)</title>
<updated>2023-11-14T13:00:28+00:00</updated>
<author>
<name>David Sherwood</name>
<email>57997763+david-arm@users.noreply.github.com</email>
</author>
<published>2023-11-14T13:00:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bdc0afc87181d4f7ab8aad2da6fa70a1204f0a84'/>
<id>bdc0afc87181d4f7ab8aad2da6fa70a1204f0a84</id>
<content type='text'>
There are some workloads that are negatively impacted by using jump
tables when the number of entries is small. The SPEC2017 perlbench
benchmark is one example of this, where increasing the threshold to
around 13 gives a ~1.5% improvement on neoverse-v1. I chose the minimum
threshold based on empirical evidence rather than science, and just
manually increased the threshold until I got the best performance
without impacting other workloads. For neoverse-v1 I saw around ~0.2%
improvement in the SPEC2017 integer geomean, and no overall change for
neoverse-n1. If we find issues with this threshold later on we can
always revisit this.

The most significant SPEC2017 score changes on neoverse-v1 were:

500.perlbench_r: +1.6%
520.omnetpp_r: +0.6%

and the rest saw changes &lt; 0.5%.

I updated CodeGen/AArch64/min-jump-table.ll to reflect the new
threshold. For most of the affected tests I manually set the min number
of entries back to 4 on the RUN line because the tests seem to rely upon
this behaviour.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are some workloads that are negatively impacted by using jump
tables when the number of entries is small. The SPEC2017 perlbench
benchmark is one example of this, where increasing the threshold to
around 13 gives a ~1.5% improvement on neoverse-v1. I chose the minimum
threshold based on empirical evidence rather than science, and just
manually increased the threshold until I got the best performance
without impacting other workloads. For neoverse-v1 I saw around ~0.2%
improvement in the SPEC2017 integer geomean, and no overall change for
neoverse-n1. If we find issues with this threshold later on we can
always revisit this.

The most significant SPEC2017 score changes on neoverse-v1 were:

500.perlbench_r: +1.6%
520.omnetpp_r: +0.6%

and the rest saw changes &lt; 0.5%.

I updated CodeGen/AArch64/min-jump-table.ll to reflect the new
threshold. For most of the affected tests I manually set the min number
of entries back to 4 on the RUN line because the tests seem to rely upon
this behaviour.</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen][AArch64] Don't split inline asm goto blocks or their targets</title>
<updated>2023-08-29T20:24:38+00:00</updated>
<author>
<name>Daniel Hoekwater</name>
<email>hoekwater@google.com</email>
</author>
<published>2023-08-23T18:09:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0982d96186a6c7ba78a231ae6034fa8862e8a058'/>
<id>0982d96186a6c7ba78a231ae6034fa8862e8a058</id>
<content type='text'>
Machine function splitting + branch relaxation currently don't properly
handle inline asm goto blocks that conditional branch to cold goto
labels. While such inline asm is technically invalid, machine
function splitting is the only thing that exposes it as such.

Since machine function splitting doesn't help too much in these
circumstances anyway, disable it for asm goto blocks and their targets.

Differential Revision: https://reviews.llvm.org/D158647
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Machine function splitting + branch relaxation currently don't properly
handle inline asm goto blocks that conditional branch to cold goto
labels. While such inline asm is technically invalid, machine
function splitting is the only thing that exposes it as such.

Since machine function splitting doesn't help too much in these
circumstances anyway, disable it for asm goto blocks and their targets.

Differential Revision: https://reviews.llvm.org/D158647
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen][AArch64] Don't split jump table basic blocks</title>
<updated>2023-08-28T21:47:57+00:00</updated>
<author>
<name>Daniel Hoekwater</name>
<email>hoekwater@google.com</email>
</author>
<published>2023-08-04T01:16:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ef1c25eb50502692f343e9ac0b83b52086aa584e'/>
<id>ef1c25eb50502692f343e9ac0b83b52086aa584e</id>
<content type='text'>
Jump tables on AArch64 are label-relative rather than table-relative, so
having jump table destinations that are in different sections causes
problems with relocation. Jump table lookups have a max range of 1MB, so
all destinations must be in the same section as the lookup code. Both of
these restrictions can be mitigated with some careful and complex logic,
but doing so doesn't gain a huge performance benefit.

Efficiently ensuring jump tables are correct and can be compressed on
AArch64 is a TODO item. In the meantime, don't split blocks that can
cause problems.

Differential Revision: https://reviews.llvm.org/D157124
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Jump tables on AArch64 are label-relative rather than table-relative, so
having jump table destinations that are in different sections causes
problems with relocation. Jump table lookups have a max range of 1MB, so
all destinations must be in the same section as the lookup code. Both of
these restrictions can be mitigated with some careful and complex logic,
but doing so doesn't gain a huge performance benefit.

Efficiently ensuring jump tables are correct and can be compressed on
AArch64 is a TODO item. In the meantime, don't split blocks that can
cause problems.

Differential Revision: https://reviews.llvm.org/D157124
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Remove unused option in MachineFunctionSplitter.</title>
<updated>2023-08-25T21:24:28+00:00</updated>
<author>
<name>Snehasish Kumar</name>
<email>snehasishk@google.com</email>
</author>
<published>2023-08-25T20:24:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3dbabeadd63ebcf714a18c6fc783ab20de8eaa82'/>
<id>3dbabeadd63ebcf714a18c6fc783ab20de8eaa82</id>
<content type='text'>
The option was added in github.com/llvm/llvm-project/commit/90ab85a but it doesn't seem to be used. The triple check has been removed so this shouldn't be required going forward.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D158885
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The option was added in github.com/llvm/llvm-project/commit/90ab85a but it doesn't seem to be used. The triple check has been removed so this shouldn't be required going forward.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D158885
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen][AArch64] Don't split functions with a red zone on AArch64</title>
<updated>2023-08-24T21:57:35+00:00</updated>
<author>
<name>Daniel Hoekwater</name>
<email>hoekwater@google.com</email>
</author>
<published>2023-08-04T18:58:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8c249c44d41f69c867fcf47f65e4646b626368d7'/>
<id>8c249c44d41f69c867fcf47f65e4646b626368d7</id>
<content type='text'>
Because unconditional branch relaxation on AArch64 grows the stack to
spill a register, splitting a function would cause the red zone to be
overwritten. Explicitly disable MFS for such functions.

Differential Revision: https://reviews.llvm.org/D157127
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Because unconditional branch relaxation on AArch64 grows the stack to
spill a register, splitting a function would cause the red zone to be
overwritten. Explicitly disable MFS for such functions.

Differential Revision: https://reviews.llvm.org/D157127
</pre>
</div>
</content>
</entry>
<entry>
<title>Reland "[CodeGen] Fix unconditional branch duplication issue in bbsections"</title>
<updated>2023-08-24T21:27:55+00:00</updated>
<author>
<name>Daniel Hoekwater</name>
<email>hoekwater@google.com</email>
</author>
<published>2023-08-21T16:29:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c9f328844ddd4e4ee296eac6b8e7b8b94ac4c6fc'/>
<id>c9f328844ddd4e4ee296eac6b8e7b8b94ac4c6fc</id>
<content type='text'>
Reverted in 4c8d056f50342d5401f5930ed60e5e48b211c3fb because it broke
buildbot `llvm-clang-x86_64-expensive-checks-debian` due to the AArch64
test generating invalid code. The issue still exists, but it's fixed in
D156767, so the AArch64 test should be added there.

Differential Revision: https://reviews.llvm.org/D158674
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverted in 4c8d056f50342d5401f5930ed60e5e48b211c3fb because it broke
buildbot `llvm-clang-x86_64-expensive-checks-debian` due to the AArch64
test generating invalid code. The issue still exists, but it's fixed in
D156767, so the AArch64 test should be added there.

Differential Revision: https://reviews.llvm.org/D158674
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[CodeGen] Fix unconditional branch duplication issue in bbsections"</title>
<updated>2023-08-24T16:59:17+00:00</updated>
<author>
<name>Daniel Hoekwater</name>
<email>hoekwater@google.com</email>
</author>
<published>2023-08-24T16:58:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4c8d056f50342d5401f5930ed60e5e48b211c3fb'/>
<id>4c8d056f50342d5401f5930ed60e5e48b211c3fb</id>
<content type='text'>
This reverts commit 994eb5adc40cd001d82d0f95d18d1827b57e496c.
Breaks buildbot `llvm-clang-x86_64-expensive-checks-debian`
https://lab.llvm.org/buildbot/#/builders/16/builds/53620
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 994eb5adc40cd001d82d0f95d18d1827b57e496c.
Breaks buildbot `llvm-clang-x86_64-expensive-checks-debian`
https://lab.llvm.org/buildbot/#/builders/16/builds/53620
</pre>
</div>
</content>
</entry>
</feed>
