diff options
| author | Noah Goldstein <goldstein.w.n@gmail.com> | 2023-01-16 18:51:08 -0800 |
|---|---|---|
| committer | Noah Goldstein <goldstein.w.n@gmail.com> | 2023-01-16 22:05:47 -0800 |
| commit | 0b74e34938ba6cb89cbd197835219a6970ebaf39 (patch) | |
| tree | a0b0134e4f54a2f9ad426b89a9e46d2ad571ae17 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
| parent | 282d5a5b063e09d059591778dd56ab351130e4d7 (diff) | |
Transform AtomicRMW logic operations to BT{R|C|S} if only changing/testing a single bit.
This is essentially expanding on the optimizations added on: D120199
but applies the optimization to cases where the bit being changed /
tested is not am IMM but is a provable power of 2.
The only case currently added for cases like:
`__atomic_fetch_xor(p, 1 << c, __ATOMIC_RELAXED) & (1 << c)`
Which instead of using a `cmpxchg` loop can be done with `btcl; setcc; shl`.
There are still a variety of missed cases that could/should be
addressed in the future. This commit documents many of those
cases with Todos.
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D140939
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions
