[PATCH] D66309: Introduce infrastructure for an incremental port of SelectionDAG atomic load/store handling

Philip Reames via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 15 13:03:50 PDT 2019


reames created this revision.
reames added reviewers: jlebar, jfb, craig.topper, RKSimon, efriedma.
Herald added subscribers: dexonsmith, bollu, mcrosier.
Herald added a project: LLVM.

This is the first patch in a large sequence.  The eventual goal is to have unordered atomic loads and stores - and possibly ordered atomics as well - handled through the normal ISEL codepaths for loads and stores.  Today, there handled w/instances of AtomicSDNodes.  The result of which is that all transforms need to be duplicated to work for unordered atomics.  The benefit of the current design is that it's harder to introduce a silent miscompile by adding an transform which forgets about atomicity.

The basic strategy I plan on taking is:

1. introduce infrastructure and a flag for testing (this patch)
2. introduce isSimpleMMO and replace all isVolatile with it
3. piecemeal update generic code and x86 backedge code in individual reviews w/tests for cases which didn't check volatile, but can be found with inspection
4. flip the flag at the end

We've taken a very similar strategy twice before with success - once at IR level, and once at the MI level (post ISEL).  I'll probably need some help with some of the ISEL patterns since that's the part I'm not familiar with.

Note that this patch is NFC unless the experimental flag is set.


Repository:
  rL LLVM

https://reviews.llvm.org/D66309

Files:
  include/llvm/CodeGen/SelectionDAGNodes.h
  include/llvm/CodeGen/TargetLowering.h
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  lib/Target/X86/X86ISelLowering.cpp
  lib/Target/X86/X86ISelLowering.h
  test/CodeGen/X86/atomic-unordered.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66309.215458.patch
Type: text/x-patch
Size: 61640 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190815/6d03bb3a/attachment.bin>


More information about the llvm-commits mailing list