summaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorNoah Goldstein <goldstein.w.n@gmail.com>2023-01-16 18:51:08 -0800
committerNoah Goldstein <goldstein.w.n@gmail.com>2023-01-16 22:05:47 -0800
commit0b74e34938ba6cb89cbd197835219a6970ebaf39 (patch)
treea0b0134e4f54a2f9ad426b89a9e46d2ad571ae17 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent282d5a5b063e09d059591778dd56ab351130e4d7 (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