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
Diff Detail
Event Timeline
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? |
Comment Actions
Thanks. I've committed it with the if (...) return false; bailout since the assertion would actually trigger (I think). It's 8705399d0105.
Should we assert that !MemOp.isAtomic() or return false if MemO.isAtomic() in the manual selector code now?