<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/CodeGen/ARM, 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>[DAG] Add strictfp implicit def reg after metadata. (#168282)</title>
<updated>2025-11-17T10:57:21+00:00</updated>
<author>
<name>David Green</name>
<email>david.green@arm.com</email>
</author>
<published>2025-11-17T10:57:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=22968f5b4a5327de3037e6bc5cfee826893c5847'/>
<id>22968f5b4a5327de3037e6bc5cfee826893c5847</id>
<content type='text'>
This prevents a machine verifier error, where it "Expected implicit
register after groups".

Fixes #158661</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This prevents a machine verifier error, where it "Expected implicit
register after groups".

Fixes #158661</pre>
</div>
</content>
</entry>
<entry>
<title>[GlobalMerge]Prefer use global-merge-max-offset instead of the target-specific constant offset. (#165591)</title>
<updated>2025-11-17T07:37:51+00:00</updated>
<author>
<name>hstk30-hw</name>
<email>hanwei62@huawei.com</email>
</author>
<published>2025-11-17T07:37:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=51c81805153bcf56eda22d984d7234bf314de9e7'/>
<id>51c81805153bcf56eda22d984d7234bf314de9e7</id>
<content type='text'>
In the Dhrystone benchmark, I find some adjacent global not be merged,
on the contrary the GCC's anchor optimize is work. Use
global-merge-max-offset to set the max offset can yield similar results
(still slightly different, at least we can control the offset).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the Dhrystone benchmark, I find some adjacent global not be merged,
on the contrary the GCC's anchor optimize is work. Use
global-merge-max-offset to set the max offset can yield similar results
(still slightly different, at least we can control the offset).</pre>
</div>
</content>
</entry>
<entry>
<title>[revert][CodeGen] add a command to force global merge (#168230)</title>
<updated>2025-11-15T19:40:07+00:00</updated>
<author>
<name>Austin</name>
<email>zhenhangwang@huawei.com</email>
</author>
<published>2025-11-15T19:40:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=700aa5e376af26b76bf76bf8f4e1e1dca22a2a6e'/>
<id>700aa5e376af26b76bf76bf8f4e1e1dca22a2a6e</id>
<content type='text'>
sorry, this was my mistake</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sorry, this was my mistake</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] add a command to force global merge</title>
<updated>2025-11-15T19:20:27+00:00</updated>
<author>
<name>Austin</name>
<email>zhenhangwang@huawei.com</email>
</author>
<published>2025-11-15T19:20:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3705921f60914df3cfb59e088cf9e476fe7992b7'/>
<id>3705921f60914df3cfb59e088cf9e476fe7992b7</id>
<content type='text'>
I found that in some performance scenarios, such as under O2, this pr can be helpful for a series of loading global variables.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I found that in some performance scenarios, such as under O2, this pr can be helpful for a series of loading global variables.
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] Fix not saving FP when required to in frame-pointer=non-leaf. (#163699)</title>
<updated>2025-11-13T00:31:25+00:00</updated>
<author>
<name>Amara Emerson</name>
<email>amara@apple.com</email>
</author>
<published>2025-11-13T00:31:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=18f29a581012139c5660176a1c2a50796dc4f0f3'/>
<id>18f29a581012139c5660176a1c2a50796dc4f0f3</id>
<content type='text'>
When the stars align to conspire against stack alignment, when we have
frame-pointer=non-leaf we can incorrectly skip preserving fp/r7 in the
prolog.

The fix here first makes sure we're using the right frame pointer
register in the context of preserving the incoming FP, and then make sure that we
save the FP when re-alignment is known to be necessary.

rdar://162462271</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the stars align to conspire against stack alignment, when we have
frame-pointer=non-leaf we can incorrectly skip preserving fp/r7 in the
prolog.

The fix here first makes sure we're using the right frame pointer
register in the context of preserving the incoming FP, and then make sure that we
save the FP when re-alignment is known to be necessary.

rdar://162462271</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] Prevent stack argument overwrite during tail calls (#166492)</title>
<updated>2025-11-12T23:38:48+00:00</updated>
<author>
<name>David Tellenbach</name>
<email>dtellenbach@apple.com</email>
</author>
<published>2025-11-12T23:38:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a01a921004c1c2e646d86a571aac2ffba57b90ae'/>
<id>a01a921004c1c2e646d86a571aac2ffba57b90ae</id>
<content type='text'>
For tail-calls we want to re-use the caller stack-frame and potentially
need to copy stack arguments.

For large stack arguments, such as by-val structs, this can lead to
overwriting incoming stack arguments when preparing outgoing ones by
copying them. E.g., in cases like

        %"struct.s1" = type { [19 x i32] }

        define void @f0(ptr byval(%"struct.s1") %0, ptr %1) {
        tail call  void @f1(ptr %1, ptr byval(%"struct.s1") %0)
        ret void
        }

        declare  void @f1(ptr, ptr)

that swap arguments, the last bytes of %0 are on the stack, followed by
%1. To prepare the outgoing arguments, %0 needs to be copied and %1
needs to be loaded into r0. However, currently the copy of %0
overwrites the location of %1, resulting in loading garbage into r0.

We fix that by forcing the load to the pointer stack argument to happen
before the copy.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For tail-calls we want to re-use the caller stack-frame and potentially
need to copy stack arguments.

For large stack arguments, such as by-val structs, this can lead to
overwriting incoming stack arguments when preparing outgoing ones by
copying them. E.g., in cases like

        %"struct.s1" = type { [19 x i32] }

        define void @f0(ptr byval(%"struct.s1") %0, ptr %1) {
        tail call  void @f1(ptr %1, ptr byval(%"struct.s1") %0)
        ret void
        }

        declare  void @f1(ptr, ptr)

that swap arguments, the last bytes of %0 are on the stack, followed by
%1. To prepare the outgoing arguments, %0 needs to be copied and %1
needs to be loaded into r0. However, currently the copy of %0
overwrites the location of %1, resulting in loading garbage into r0.

We fix that by forcing the load to the pointer stack argument to happen
before the copy.</pre>
</div>
</content>
</entry>
<entry>
<title>DAG: Use poison when widening build_vector (#167631)</title>
<updated>2025-11-12T20:17:41+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-11-12T20:17:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=782759b757f69c6be98bd8079bc57e8f49b7ec86'/>
<id>782759b757f69c6be98bd8079bc57e8f49b7ec86</id>
<content type='text'>
Test changes are mostly noise. There are a few improvements and a few
regressions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Test changes are mostly noise. There are a few improvements and a few
regressions.</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] Use TargetMachine over Subtarget in ARMAsmPrinter (#166329)</title>
<updated>2025-11-12T16:26:21+00:00</updated>
<author>
<name>David Green</name>
<email>david.green@arm.com</email>
</author>
<published>2025-11-12T16:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4d1f2492d26f8c2fad0eee2a141c7e0bbbc4c868'/>
<id>4d1f2492d26f8c2fad0eee2a141c7e0bbbc4c868</id>
<content type='text'>
The subtarget may not be set if no functions are present in the module.
Attempt to use the TargetMachine directly in more cases.

Fixes #165422
Fixes #167577</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The subtarget may not be set if no functions are present in the module.
Attempt to use the TargetMachine directly in more cases.

Fixes #165422
Fixes #167577</pre>
</div>
</content>
</entry>
<entry>
<title>RuntimeLibcalls: Remove incorrect sincospi from most targets (#166982)</title>
<updated>2025-11-10T19:05:08+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-11-10T19:05:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=821d2825a4f782da3da3c03b8a002802bff4b95c'/>
<id>821d2825a4f782da3da3c03b8a002802bff4b95c</id>
<content type='text'>
sincospi/sincospif/sincospil does not appear to exist on common
targets. Darwin targets have __sincospi and __sincospif, so define
and use those implementations. I have no idea what version added
those calls, so I'm just guessing it's the same conditions as
__sincos_stret.

Most of this patch is working to preserve codegen when a vector
library is explicitly enabled. This only covers sleef and armpl,
as those are the only cases tested.

The multiple result libcalls have an aberrant process where the
legalizer looks for the scalar type's libcall in RuntimeLibcalls,
and then cross references TargetLibraryInfo to find a matching
vector call. This was unworkable in the sincospi case, since the
common case is there is no scalar call available. To preserve
codegen if the call is available, first try to match a libcall
with the vector type before falling back on the old scalar search.

Eventually all of this logic should be contained in RuntimeLibcalls,
without the link to TargetLibraryInfo. In principle we should perform
the same legalization logic as for an ordinary operation, trying
to find a matching subvector type with a libcall.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sincospi/sincospif/sincospil does not appear to exist on common
targets. Darwin targets have __sincospi and __sincospif, so define
and use those implementations. I have no idea what version added
those calls, so I'm just guessing it's the same conditions as
__sincos_stret.

Most of this patch is working to preserve codegen when a vector
library is explicitly enabled. This only covers sleef and armpl,
as those are the only cases tested.

The multiple result libcalls have an aberrant process where the
legalizer looks for the scalar type's libcall in RuntimeLibcalls,
and then cross references TargetLibraryInfo to find a matching
vector call. This was unworkable in the sincospi case, since the
common case is there is no scalar call available. To preserve
codegen if the call is available, first try to match a libcall
with the vector type before falling back on the old scalar search.

Eventually all of this logic should be contained in RuntimeLibcalls,
without the link to TargetLibraryInfo. In principle we should perform
the same legalization logic as for an ordinary operation, trying
to find a matching subvector type with a libcall.</pre>
</div>
</content>
</entry>
<entry>
<title>ARM: Add fp128 ldexp tests (#166619)</title>
<updated>2025-11-06T06:42:59+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-11-06T06:42:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5e7f7a496ccb4856c7060ba9a4ba222a79306375'/>
<id>5e7f7a496ccb4856c7060ba9a4ba222a79306375</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
