aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineModuleInfo.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2024-02-07 08:24:50 -0800
committerGitHub <noreply@github.com>2024-02-07 08:24:50 -0800
commit79fec2f8ba8ea0b0b1c2f13fb6355cb395e1d3af (patch)
treec76355dbd827ba99164aca077122655cf2fce1b4 /llvm/lib/CodeGen/MachineModuleInfo.cpp
parent8c37e3e64bb1432f771ec4d191837e6b3be5bf0c (diff)
downloadllvm-79fec2f8ba8ea0b0b1c2f13fb6355cb395e1d3af.zip
llvm-79fec2f8ba8ea0b0b1c2f13fb6355cb395e1d3af.tar.gz
llvm-79fec2f8ba8ea0b0b1c2f13fb6355cb395e1d3af.tar.bz2
[AtomicExpand][RISCV] Call shouldExpandAtomicRMWInIR before widenPartwordAtomicRMW (#80947)
This gives the target a chance to keep an atomicrmw op that is smaller than the minimum cmpxchg size. This is needed to support the Zabha extension for RISC-V which provides i8/i16 atomicrmw operations, but does not provide an i8/i16 cmpxchg or LR/SC instructions. This moves the widening until after the target requests LLSC/CmpXChg/MaskedIntrinsic expansion. Once we widen, we call shouldExpandAtomicRMWInIR again to give the target another chance to make a decision about the widened operation. I considered making the targets return AtomicExpansionKind::Expand or a new expansion kind for And/Or/Xor, but that required the targets to special case And/Or/Xor which they weren't currently doing.
Diffstat (limited to 'llvm/lib/CodeGen/MachineModuleInfo.cpp')
0 files changed, 0 insertions, 0 deletions