This is an archive of the discontinued LLVM Phabricator instance.

AArch64: support atomics up to 64-bits in GISel
ClosedPublic

Authored by t.p.northover on Apr 23 2021, 3:36 AM.

Details

Reviewers
aemerson
paquette
Summary

Most of them were working already, but the -O0 cmpxchg needed a few more patterns to map to CMP_SWAP_N pseudos because that's handled elsewhere in SDAG. Also some old code from when there was less generic atomic support in GISel was preventing the existing patterns from handling atomic stores.

Diff Detail

Event Timeline

t.p.northover created this revision.Apr 23 2021, 3:36 AM
t.p.northover requested review of this revision.Apr 23 2021, 3:36 AM
Herald added a project: Restricted Project. · View Herald TranscriptApr 23 2021, 3:36 AM
paquette accepted this revision.Apr 23 2021, 11:47 AM
paquette added inline comments.
llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
2671

Should we assert that !MemOp.isAtomic() or return false if MemO.isAtomic() in the manual selector code now?

This revision is now accepted and ready to land.Apr 23 2021, 11:47 AM
t.p.northover closed this revision.Apr 26 2021, 6:38 AM

Thanks. I've committed it with the if (...) return false; bailout since the assertion would actually trigger (I think). It's 8705399d0105.