1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/lib/Transforms
Philip Reames 041ac7b389 [EarlyCSE] Value forwarding for unordered atomics
This patch teaches the fully redundant load part of EarlyCSE how to forward from atomic and volatile loads and stores, and how to eliminate unordered atomics (only). This patch does not include dead store elimination support for unordered atomics, that will follow in the near future.

The basic idea is that we allow all loads and stores to be tracked by the AvailableLoad table. We store a bit in the table which tracks whether load/store was atomic, and then only replace atomic loads with ones which were also atomic.

No attempt is made to refine our handling of ordered loads or stores. Those are still treated as full fences. We could pretty easily extend the release fence handling to release stores, but that should be a separate patch.

Differential Revision: http://reviews.llvm.org/D15337

llvm-svn: 255054
2015-12-08 21:45:41 +00:00
..
Hello
InstCombine [InstCombine] Call getCmpPredicateForMinMax only with a valid SPF 2015-12-05 23:44:22 +00:00
Instrumentation [ASAN] Add doFinalization to reset state 2015-12-05 14:42:34 +00:00
IPO [ThinLTO] Support for specifying function index from pass manager 2015-12-07 19:21:11 +00:00
ObjCARC ObjCARC: Remove implicit ilist iterator conversions, NFC 2015-10-19 23:20:14 +00:00
Scalar [EarlyCSE] Value forwarding for unordered atomics 2015-12-08 21:45:41 +00:00
Utils [OperandBundles] Remove unncessary constructor 2015-12-08 03:50:32 +00:00
Vectorize Fix a typo in LoopVectorize.cpp. NFC. 2015-12-05 01:00:22 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile