Files
archived-llvm/test/CodeGen/AMDGPU
Neil Henning b461f4de29 [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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343973 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-08 15:49:19 +00:00
..
2017-08-07 18:30:35 +00:00
2018-06-12 18:02:46 +00:00
2017-08-07 18:30:35 +00:00
2018-07-31 13:25:23 +00:00
2018-07-31 13:25:23 +00:00
2017-08-07 18:30:35 +00:00
2018-04-30 19:08:16 +00:00
2017-08-07 18:30:35 +00:00
2017-07-14 00:11:13 +00:00
2018-10-04 16:57:37 +00:00
2018-10-04 16:57:37 +00:00
2017-08-07 18:30:35 +00:00
2017-11-28 23:40:12 +00:00
2017-08-07 18:30:35 +00:00
2017-08-07 18:30:35 +00:00
2018-08-31 22:43:36 +00:00
2018-08-31 22:43:36 +00:00
2017-08-07 18:30:35 +00:00
2018-06-27 15:33:33 +00:00
2018-06-27 15:33:33 +00:00
2017-08-07 18:30:35 +00:00
2017-08-07 18:30:35 +00:00
2017-06-28 21:38:50 +00:00
2018-05-07 13:21:26 +00:00
2017-08-07 18:30:35 +00:00
2018-06-27 15:33:33 +00:00

+==============================================================================+
| How to organize the lit tests                                                |
+==============================================================================+

- If you write a test for matching a single DAG opcode or intrinsic, it should
  go in a file called {opcode_name,intrinsic_name}.ll (e.g. fadd.ll)

- If you write a test that matches several DAG opcodes and checks for a single
  ISA instruction, then that test should go in a file called {ISA_name}.ll (e.g.
  bfi_int.ll

- For all other tests, use your best judgement for organizing tests and naming
  the files.

+==============================================================================+
| Naming conventions                                                           |
+==============================================================================+

- Use dash '-' and not underscore '_' to separate words in file names, unless
  the file is named after a DAG opcode or ISA instruction that has an
  underscore '_' in its name.