<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Target/PowerPC/PPCISelLowering.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>[PowerPC] Prevent copying in loop variables (NFC)</title>
<updated>2025-06-29T02:21:00+00:00</updated>
<author>
<name>Jie Fu</name>
<email>jiefu@tencent.com</email>
</author>
<published>2025-06-29T02:21:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=25d52fbf96ec927914b3a5c9db0b61fe2804a3dd'/>
<id>25d52fbf96ec927914b3a5c9db0b61fe2804a3dd</id>
<content type='text'>
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:5769:19: error: loop variable '[Reg, N]' creates a copy from type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const' [-Werror,-Wrange-loop-construct]
  for (const auto [Reg, N] : RegsToPass)
                  ^
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:5769:8: note: use reference type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const &amp;' to prevent copying
  for (const auto [Reg, N] : RegsToPass)
       ^~~~~~~~~~~~~~~~~~~~~
                  &amp;
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6193:19: error: loop variable '[Reg, N]' creates a
copy from type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const' [-Werror,-Wrange-loop-construct]
  for (const auto [Reg, N] : RegsToPass) {
                  ^
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6193:8: note: use reference type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const &amp;' to prevent copying
  for (const auto [Reg, N] : RegsToPass) {
       ^~~~~~~~~~~~~~~~~~~~~
                  &amp;
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6806:19: error: loop variable '[Reg, N]' creates a copy from type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const' [-Werror,-Wrange-loop-construct]
  for (const auto [Reg, N] : RegsToPass) {
                  ^
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6806:8: note: use reference type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const &amp;' to prevent copying
  for (const auto [Reg, N] : RegsToPass) {
       ^~~~~~~~~~~~~~~~~~~~~
                  &amp;
3 errors generated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:5769:19: error: loop variable '[Reg, N]' creates a copy from type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const' [-Werror,-Wrange-loop-construct]
  for (const auto [Reg, N] : RegsToPass)
                  ^
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:5769:8: note: use reference type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const &amp;' to prevent copying
  for (const auto [Reg, N] : RegsToPass)
       ^~~~~~~~~~~~~~~~~~~~~
                  &amp;
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6193:19: error: loop variable '[Reg, N]' creates a
copy from type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const' [-Werror,-Wrange-loop-construct]
  for (const auto [Reg, N] : RegsToPass) {
                  ^
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6193:8: note: use reference type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const &amp;' to prevent copying
  for (const auto [Reg, N] : RegsToPass) {
       ^~~~~~~~~~~~~~~~~~~~~
                  &amp;
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6806:19: error: loop variable '[Reg, N]' creates a copy from type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const' [-Werror,-Wrange-loop-construct]
  for (const auto [Reg, N] : RegsToPass) {
                  ^
/data/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6806:8: note: use reference type 'std::pair&lt;unsigned int, llvm::SDValue&gt; const &amp;' to prevent copying
  for (const auto [Reg, N] : RegsToPass) {
       ^~~~~~~~~~~~~~~~~~~~~
                  &amp;
3 errors generated.
</pre>
</div>
</content>
</entry>
<entry>
<title>[PowerPC] Use range-based for loops (NFC) (#146221)</title>
<updated>2025-06-28T20:04:08+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-06-28T20:04:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bad5a740e1141895a6ef7c47f0f25e9711e6a995'/>
<id>bad5a740e1141895a6ef7c47f0f25e9711e6a995</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[PowerPC] Fix handling of undefs in the PPC::isSplatShuffleMask query (#145149)</title>
<updated>2025-06-23T17:22:33+00:00</updated>
<author>
<name>Wael Yehia</name>
<email>wmyehia2001@yahoo.com</email>
</author>
<published>2025-06-23T17:22:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=735d721de451067c3a618b309703d0b8beb9cacc'/>
<id>735d721de451067c3a618b309703d0b8beb9cacc</id>
<content type='text'>
Currently, the query assumes that a single undef byte implies the rest of
the `EltSize - 1` bytes are undefs, but that's not always true.
e.g. isSplatShuffleMask(
&lt;0,1,2,3,4,5,6,7,undef,undef,undef,undef,0,1,2,3&gt;, 8) should return
false.

---------

Co-authored-by: Wael Yehia &lt;wyehia@ca.ibm.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, the query assumes that a single undef byte implies the rest of
the `EltSize - 1` bytes are undefs, but that's not always true.
e.g. isSplatShuffleMask(
&lt;0,1,2,3,4,5,6,7,undef,undef,undef,undef,0,1,2,3&gt;, 8) should return
false.

---------

Co-authored-by: Wael Yehia &lt;wyehia@ca.ibm.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>CodeGen: Emit error if getRegisterByName fails (#145194)</title>
<updated>2025-06-23T07:33:35+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-06-23T07:33:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=48155f93dd84919432e3276a143f8ef46c247b9a'/>
<id>48155f93dd84919432e3276a143f8ef46c247b9a</id>
<content type='text'>
This avoids using report_fatal_error and standardizes the error
message in a subset of the error conditions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This avoids using report_fatal_error and standardizes the error
message in a subset of the error conditions.</pre>
</div>
</content>
</entry>
<entry>
<title>[PowerPC][AIX] Specify pointer info and alignment for stack store (#144526)</title>
<updated>2025-06-18T08:50:17+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2025-06-18T08:50:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7ea7ccd24d603ceec6eb5194d98911e6ab7c0717'/>
<id>7ea7ccd24d603ceec6eb5194d98911e6ab7c0717</id>
<content type='text'>
When lowering call arguments to stack, specify a stack MPI, as well as
the stack alignment, instead of using the defaults (which would be an
unknown location with ABI alignment).

I believe the asm diffs are just changes in scheduling.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When lowering call arguments to stack, specify a stack MPI, as well as
the stack alignment, instead of using the defaults (which would be an
unknown location with ABI alignment).

I believe the asm diffs are just changes in scheduling.</pre>
</div>
</content>
</entry>
<entry>
<title>[PowerPC] enable AtomicExpandImpl::expandAtomicCmpXchg for powerpc (#142395)</title>
<updated>2025-06-13T13:14:48+00:00</updated>
<author>
<name>zhijian lin</name>
<email>zhijian@ca.ibm.com</email>
</author>
<published>2025-06-13T13:14:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=85a9f2e14859b472750f13fb441291e6e9c893a0'/>
<id>85a9f2e14859b472750f13fb441291e6e9c893a0</id>
<content type='text'>
In PowerPC, the AtomicCmpXchgInst is lowered to
ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS. However, this node does not handle
the weak attribute of AtomicCmpXchgInst. As a result, when compiling C++
atomic_compare_exchange_weak_explicit, the generated assembly includes a
"reservation lost" loop — i.e., it branches back and retries if the
stwcx. (store-conditional) fails. This differs from GCC’s codegen, which
does not include that loop for weak compare-exchange.

Since PowerPC uses LL/SC-style atomic instructions, the patch enables
AtomicExpandImpl::expandAtomicCmpXchg for PowerPC. With this, the weak
attribute is properly respected, and the "reservation lost" loop is
removed for weak operations.

---------

Co-authored-by: Matt Arsenault &lt;arsenm2@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In PowerPC, the AtomicCmpXchgInst is lowered to
ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS. However, this node does not handle
the weak attribute of AtomicCmpXchgInst. As a result, when compiling C++
atomic_compare_exchange_weak_explicit, the generated assembly includes a
"reservation lost" loop — i.e., it branches back and retries if the
stwcx. (store-conditional) fails. This differs from GCC’s codegen, which
does not include that loop for weak compare-exchange.

Since PowerPC uses LL/SC-style atomic instructions, the patch enables
AtomicExpandImpl::expandAtomicCmpXchg for PowerPC. With this, the weak
attribute is properly respected, and the "reservation lost" loop is
removed for weak operations.

---------

Co-authored-by: Matt Arsenault &lt;arsenm2@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>PowerPC: Move runtime libcall configuration to RuntimeLibcallsInfo (#142542)</title>
<updated>2025-06-09T22:28:04+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-06-09T22:28:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=55858527da9e33063b45e60fd90619df85ea6f7e'/>
<id>55858527da9e33063b45e60fd90619df85ea6f7e</id>
<content type='text'>
These should not be set in the TargetLowering constructor,
RuntimeLibcalls
needs to be accurate outside of codegen contexts.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These should not be set in the TargetLowering constructor,
RuntimeLibcalls
needs to be accurate outside of codegen contexts.</pre>
</div>
</content>
</entry>
<entry>
<title>[PowerPC] extend smaller splats into bigger splats (with fix) (#142194)</title>
<updated>2025-06-09T18:01:38+00:00</updated>
<author>
<name>RolandF77</name>
<email>55763885+RolandF77@users.noreply.github.com</email>
</author>
<published>2025-06-09T18:01:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5d6218d311854a0b5d48ae19636f6abe1e67fc69'/>
<id>5d6218d311854a0b5d48ae19636f6abe1e67fc69</id>
<content type='text'>
For pwr9, xxspltib is a byte splat with a range -128 to 127 - it can be
used with a following vector extend sign to make splats of i16, i32, or
i64 element size. For pwr8, vspltisw with a following vector extend sign
can be used to make splats of i64 elements in the range -16 to 15.

Add check for P8 to make sure the 64-bit vector ops are there.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For pwr9, xxspltib is a byte splat with a range -128 to 127 - it can be
used with a following vector extend sign to make splats of i16, i32, or
i64 element size. For pwr8, vspltisw with a following vector extend sign
can be used to make splats of i64 elements in the range -16 to 15.

Add check for P8 to make sure the 64-bit vector ops are there.</pre>
</div>
</content>
</entry>
<entry>
<title>[PowerPC] Change default for auto gen stxvp for cpu=future (#142826)</title>
<updated>2025-06-09T16:34:50+00:00</updated>
<author>
<name>Lei Huang</name>
<email>lei@ca.ibm.com</email>
</author>
<published>2025-06-09T16:34:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=649020c680166af0ad822d5aa1518234d93828e4'/>
<id>649020c680166af0ad822d5aa1518234d93828e4</id>
<content type='text'>
For cpu=future, we want to auto generate stxvp instructions by default.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For cpu=future, we want to auto generate stxvp instructions by default.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[PowerPC] extend smaller splats into bigger splats (#141282)"</title>
<updated>2025-05-29T05:10:55+00:00</updated>
<author>
<name>Hubert Tong</name>
<email>hubert.reinterpretcast@gmail.com</email>
</author>
<published>2025-05-29T05:08:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8f486254e4fb03e30c0140aa207b10140ccbdd32'/>
<id>8f486254e4fb03e30c0140aa207b10140ccbdd32</id>
<content type='text'>
The subject commit causes the build to ICE on AIX:
https://lab.llvm.org/buildbot/#/builders/64/builds/3890/steps/5/logs/stdio

This reverts commit 7fa365843d9f99e75c38a6107e8511b324950e74.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The subject commit causes the build to ICE on AIX:
https://lab.llvm.org/buildbot/#/builders/64/builds/3890/steps/5/logs/stdio

This reverts commit 7fa365843d9f99e75c38a6107e8511b324950e74.
</pre>
</div>
</content>
</entry>
</feed>
