<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/CodeGen/AtomicExpandPass.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>[AtomicExpandPass] Match isIdempotentRMW with InstcombineRMW (#142277)</title>
<updated>2025-06-08T10:32:20+00:00</updated>
<author>
<name>AZero13</name>
<email>gfunni234@gmail.com</email>
</author>
<published>2025-06-08T10:32:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7119a0f39b64c9451dc2122dd028104068588780'/>
<id>7119a0f39b64c9451dc2122dd028104068588780</id>
<content type='text'>
Add umin, smin, umax, smax to isIdempotentRMW</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add umin, smin, umax, smax to isIdempotentRMW</pre>
</div>
</content>
</entry>
<entry>
<title>Reland [llvm] Add support for llvm IR atomicrmw fminimum/fmaximum instructions (#137701)</title>
<updated>2025-04-30T21:06:37+00:00</updated>
<author>
<name>Jonathan Thackray</name>
<email>jonathan.thackray@arm.com</email>
</author>
<published>2025-04-30T21:06:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6e49f73825f1b9cb98352a7c8dca3e0cf83ebd9e'/>
<id>6e49f73825f1b9cb98352a7c8dca3e0cf83ebd9e</id>
<content type='text'>
This patch adds support for LLVM IR atomicrmw `fmaximum` and `fminimum`
instructions.

These mirror the `llvm.maximum.*` and `llvm.minimum.*` instructions, but
are atomic and use IEEE754 2019 handling for NaNs, which is different to
`fmax` and `fmin`. See:
     https://llvm.org/docs/LangRef.html#llvm-minimum-intrinsic
for more details.

Future changes will allow this LLVM IR to be lowered to specialised
assembler instructions on suitable targets, such as AArch64.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds support for LLVM IR atomicrmw `fmaximum` and `fminimum`
instructions.

These mirror the `llvm.maximum.*` and `llvm.minimum.*` instructions, but
are atomic and use IEEE754 2019 handling for NaNs, which is different to
`fmax` and `fmin`. See:
     https://llvm.org/docs/LangRef.html#llvm-minimum-intrinsic
for more details.

Future changes will allow this LLVM IR to be lowered to specialised
assembler instructions on suitable targets, such as AArch64.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[llvm] Add support for llvm IR atomicrmw fminimum/fmaximum instructions" (#137657)</title>
<updated>2025-04-28T15:53:36+00:00</updated>
<author>
<name>Jonathan Thackray</name>
<email>jonathan.thackray@arm.com</email>
</author>
<published>2025-04-28T15:53:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7ee0097b486b31be8b9a1750b2cd47580efd9587'/>
<id>7ee0097b486b31be8b9a1750b2cd47580efd9587</id>
<content type='text'>
Reverts llvm/llvm-project#136759 due to bad interaction with c792b25e4</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#136759 due to bad interaction with c792b25e4</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Add support for llvm IR atomicrmw fminimum/fmaximum instructions (#136759)</title>
<updated>2025-04-28T14:31:44+00:00</updated>
<author>
<name>Jonathan Thackray</name>
<email>jonathan.thackray@arm.com</email>
</author>
<published>2025-04-28T14:31:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ba420d8122239592a1fb7ad6efd2c186aecfdef5'/>
<id>ba420d8122239592a1fb7ad6efd2c186aecfdef5</id>
<content type='text'>
This patch adds support for LLVM IR atomicrmw `fmaximum` and `fminimum`
instructions.

These mirror the `llvm.maximum.*` and `llvm.minimum.*` instructions, but
are atomic and use IEEE754 2019 handling for NaNs, which is different to
`fmax` and `fmin`. See:
     https://llvm.org/docs/LangRef.html#llvm-minimum-intrinsic
for more details.

Future changes will allow this LLVM IR to be lowered to specialised
assembler instructions on suitable targets, such as AArch64.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds support for LLVM IR atomicrmw `fmaximum` and `fminimum`
instructions.

These mirror the `llvm.maximum.*` and `llvm.minimum.*` instructions, but
are atomic and use IEEE754 2019 handling for NaNs, which is different to
`fmax` and `fmin`. See:
     https://llvm.org/docs/LangRef.html#llvm-minimum-intrinsic
for more details.

Future changes will allow this LLVM IR to be lowered to specialised
assembler instructions on suitable targets, such as AArch64.</pre>
</div>
</content>
</entry>
<entry>
<title>[NVPTX] Support for memory orderings for cmpxchg (#126159)</title>
<updated>2025-02-24T18:13:23+00:00</updated>
<author>
<name>Akshay Deodhar</name>
<email>adeodhar@nvidia.com</email>
</author>
<published>2025-02-24T18:13:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9638d08af96c4cb8cf16785eed92179b2658bdfe'/>
<id>9638d08af96c4cb8cf16785eed92179b2658bdfe</id>
<content type='text'>
So far, all cmpxchg instructions were lowered to atom.cas. This change
adds support for memory orders in lowering. Specifically:
- For cmpxchg which are emulated, memory ordering is enforced by adding
fences around the emulation loops.
- For cmpxchg which are lowered to PTX directly, where the memory order
is supported in ptx, lower directly to the correct ptx instruction.
- For seq_cst cmpxchg which are lowered to PTX directly, use a sequence
(fence.sc; atom.cas.acquire) to provide the semantics that we want.

Also adds tests for all possible combinations of (size, memory ordering,
address space, SM/PTX versions)

This also adds `atomicOperationOrderAfterFenceSplit` in TargetLowering,
for specially handling seq_cst atomics.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
So far, all cmpxchg instructions were lowered to atom.cas. This change
adds support for memory orders in lowering. Specifically:
- For cmpxchg which are emulated, memory ordering is enforced by adding
fences around the emulation loops.
- For cmpxchg which are lowered to PTX directly, where the memory order
is supported in ptx, lower directly to the correct ptx instruction.
- For seq_cst cmpxchg which are lowered to PTX directly, use a sequence
(fence.sc; atom.cas.acquire) to provide the semantics that we want.

Also adds tests for all possible combinations of (size, memory ordering,
address space, SM/PTX versions)

This also adds `atomicOperationOrderAfterFenceSplit` in TargetLowering,
for specially handling seq_cst atomics.</pre>
</div>
</content>
</entry>
<entry>
<title>AtomicExpand: Preserve metadata when bitcasting fp atomicrmw xchg (#115240)</title>
<updated>2024-11-13T20:51:18+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2024-11-13T20:51:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=04d450fd8d4e8fcf0b0c5019d9233a5c7d7fe751'/>
<id>04d450fd8d4e8fcf0b0c5019d9233a5c7d7fe751</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Remove unused includes (NFC) (#115996)</title>
<updated>2024-11-13T07:15:06+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2024-11-13T07:15:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=735ab61ac828bd61398e6847d60e308fdf2b54ec'/>
<id>735ab61ac828bd61398e6847d60e308fdf2b54ec</id>
<content type='text'>
Identified with misc-include-cleaner.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Identified with misc-include-cleaner.</pre>
</div>
</content>
</entry>
<entry>
<title>AMDGPU: Custom expand flat cmpxchg which may access private (#109410)</title>
<updated>2024-11-04T17:29:38+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2024-11-04T17:29:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=30dd1297fa2cc172ef7a1435775010d7efd673fd'/>
<id>30dd1297fa2cc172ef7a1435775010d7efd673fd</id>
<content type='text'>
64-bit flat cmpxchg instructions do not work correctly for scratch
addresses, and need to be expanded as non-atomic.

Allow custom expansion of cmpxchg in AtomicExpand, as is
already the case for atomicrmw.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
64-bit flat cmpxchg instructions do not work correctly for scratch
addresses, and need to be expanded as non-atomic.

Allow custom expansion of cmpxchg in AtomicExpand, as is
already the case for atomicrmw.</pre>
</div>
</content>
</entry>
<entry>
<title>AtomicExpand: Copy metadata from atomicrmw to cmpxchg (#109409)</title>
<updated>2024-10-31T18:54:07+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2024-10-31T18:54:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9cc298108a7bb34d0126028a529ecdcb0ade9baf'/>
<id>9cc298108a7bb34d0126028a529ecdcb0ade9baf</id>
<content type='text'>
When expanding an atomicrmw with a cmpxchg, preserve any metadata
attached to it. This will avoid unwanted double expansions
in a future commit.

The initial load should also probably receive the same metadata
(which for some reason is not emitted as an atomic).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When expanding an atomicrmw with a cmpxchg, preserve any metadata
attached to it. This will avoid unwanted double expansions
in a future commit.

The initial load should also probably receive the same metadata
(which for some reason is not emitted as an atomic).</pre>
</div>
</content>
</entry>
<entry>
<title>AtomicExpand: Really allow incremental legalization (#108613)</title>
<updated>2024-09-20T04:18:33+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2024-09-20T04:18:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5326614e2f84677515c38a17cf2f30cf66deaadc'/>
<id>5326614e2f84677515c38a17cf2f30cf66deaadc</id>
<content type='text'>
Fix up 100d9b89947bb1d42af20010bb594fa4c02542fc. The iterator
fixes ended up defeating the point, since newly inserted blocks
were not visited. This never erases the current block, so we can
simply not preincrement the block iterator.

The AArch64 FP atomic tests now expand the cmpxchg in the second
round of legalization.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix up 100d9b89947bb1d42af20010bb594fa4c02542fc. The iterator
fixes ended up defeating the point, since newly inserted blocks
were not visited. This never erases the current block, so we can
simply not preincrement the block iterator.

The AArch64 FP atomic tests now expand the cmpxchg in the second
round of legalization.</pre>
</div>
</content>
</entry>
</feed>
