Austin Kerbow fef69706dc AMDGPU: Handle waitcnt overflow
Summary:
The waitcnt pass can overflow the counters when the number of outstanding events
for a type exceed the capacity of the counter. This can lead to inefficient
insertion of waitcnts, or to waitcnt instructions with max values for each type.
The last situation can cause an instruction which when disassembled appears to
be an illegal waitcnt without an operand.

In these cases we should add a wait for the 'counter maximum' - 1, and update the
waitcnt brackets accordingly.

Reviewers: rampitec, arsenm

Reviewed By: rampitec

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D70418
2019-11-23 09:34:23 -08:00
..
2019-07-11 21:19:33 +00:00
2019-06-20 15:08:34 +00:00
2019-06-20 15:08:34 +00:00
2019-05-08 22:09:57 +00:00
2019-06-20 15:08:34 +00:00
2019-03-29 17:35:56 +00:00
2017-08-07 18:30:35 +00:00
2017-08-07 18:30:35 +00:00
2019-05-13 19:30:06 +00:00
2019-06-14 00:33:31 +00:00
2019-09-25 18:50:34 +00:00
2019-03-19 15:50:24 +00:00
2019-10-07 10:57:41 +00:00
2018-04-30 19:08:16 +00:00
2019-07-01 17:17:45 +00:00
2019-03-21 12:01:21 +00:00
2019-07-09 18:10:06 +00:00
2019-06-20 16:29:40 +00:00
2019-07-08 19:03:38 +00:00
2019-03-12 21:02:54 +00:00
2019-03-12 21:02:54 +00:00
2017-08-07 18:30:35 +00:00
2019-07-11 21:19:33 +00:00
2019-10-08 16:16:26 +00:00
2019-07-08 19:03:38 +00:00
2019-03-21 12:01:21 +00:00
2019-07-11 21:19:33 +00:00
2019-03-19 15:50:24 +00:00
2019-04-26 16:37:51 +00:00
2019-03-19 15:50:24 +00:00
2019-07-15 17:50:31 +00:00
2019-06-20 15:08:34 +00:00
2019-05-08 22:09:57 +00:00
2019-05-03 15:37:07 +00:00
2018-06-27 15:33:33 +00:00
2019-07-24 19:40:13 +00:00
2019-07-27 14:32:23 +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
2019-06-20 15:08:34 +00:00
2019-10-08 16:16:26 +00:00
2019-06-20 15:08:34 +00:00
2019-05-03 15:37:07 +00:00
2019-07-27 14:32:23 +00:00
2017-08-07 18:30:35 +00:00
2019-03-21 12:01:21 +00:00
2019-06-20 15:08:34 +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.