llvm-project/llvm/test
Neil Henning 6641657453 [AMDGPU] Add an AMDGPU specific atomic optimizer.
This commit adds a new IR level pass to the AMDGPU backend to perform
atomic optimizations. It works by:

- Running through a function and finding atomicrmw add/sub or uses of
  the atomic buffer intrinsics for add/sub.
- If all arguments except the value to be added/subtracted are uniform,
  record the value to be optimized.
- Run through the atomic operations we can optimize and, depending on
  whether the value is uniform/divergent use wavefront wide operations
  (DPP in the divergent case) to calculate the total amount to be
  atomically added/subtracted.
- Then let only a single lane of each wavefront perform the atomic
  operation, reducing the total number of atomic operations in flight.
- Lastly we recombine the result from the single lane to each lane of
  the wavefront, and calculate our individual lanes offset into the
  final result.

Differential Revision: https://reviews.llvm.org/D51969

llvm-svn: 343973
2018-10-08 15:49:19 +00:00
..
Analysis [LV][LAA] Vectorize loop invariant values stored into loop invariant address 2018-09-25 20:57:20 +00:00
Assembler Emit template type and value parameter DIEs for template variables. 2018-10-03 18:44:53 +00:00
Bindings [LLVM-C] Add more debug information accessors to GlobalObject and Instruction 2018-09-28 15:35:18 +00:00
Bitcode Fix some missing opcodes in bcanalyzer 2018-09-24 12:47:17 +00:00
BugPoint
CodeGen [AMDGPU] Add an AMDGPU specific atomic optimizer. 2018-10-08 15:49:19 +00:00
DebugInfo Don't use back-quotes in a run line. 2018-10-08 15:14:05 +00:00
Demangle [MS Demangler] Add support for $$Z parameter pack separator. 2018-08-30 20:53:29 +00:00
Examples
ExecutionEngine [ORC] Add partitioning support to CompileOnDemandLayer2. 2018-09-29 23:49:57 +00:00
Feature
FileCheck
Instrumentation [hwasan] Record and display stack history in stack-based reports. 2018-09-24 23:03:34 +00:00
Integer
JitListener
LTO [ThinLTO] Keep non-prevailing (linkonce|weak)_odr symbols live 2018-10-08 15:12:48 +00:00
Linker Fix asserts when linking wrong address space declarations 2018-09-24 04:42:14 +00:00
MC [AsmParser] Return an error in the case of empty symbol ref in an expression 2018-10-08 10:28:11 +00:00
Object [llvm-ar] Use POSIX-specified timestamps for 'tv'. 2018-10-05 23:25:39 +00:00
ObjectYAML
Other [New PM][PassTiming] implement -time-passes for the new pass manager 2018-10-05 22:32:01 +00:00
SafepointIRVerifier
SymbolRewriter
TableGen [globalisel][tblgen] Table optimization should consider the C++ code in C++ predicates 2018-09-25 17:59:02 +00:00
ThinLTO/X86 [ThinLTO] Keep non-prevailing (linkonce|weak)_odr symbols live 2018-10-08 15:12:48 +00:00
Transforms [ThinLTO] Keep non-prevailing (linkonce|weak)_odr symbols live 2018-10-08 15:12:48 +00:00
Unit
Verifier [machineverifier] Detect PHI's that are preceeded by non-PHI's 2018-10-03 22:05:31 +00:00
YAMLParser
tools [llvm-ar] Use POSIX-specified timestamps for 'tv'. 2018-10-05 23:25:39 +00:00
.clang-format
CMakeLists.txt Reapply r343058 with a fix for -DLLVM_ENABLE_THREADS=OFF. 2018-09-26 16:26:59 +00:00
TestRunner.sh
lit.cfg.py Reapply r343058 with a fix for -DLLVM_ENABLE_THREADS=OFF. 2018-09-26 16:26:59 +00:00
lit.site.cfg.py.in Reapply r343058 with a fix for -DLLVM_ENABLE_THREADS=OFF. 2018-09-26 16:26:59 +00:00