Files
llvm/test/CodeGen/AMDGPU
David Stuttard 9cb56c603f [AMDGPU] Fix-up cases where writelane has 2 SGPR operands
Summary:
Even though writelane doesn't have the same constraints as other valu
instructions it still can't violate the >1 SGPR operand constraint

Due to later register propagation (e.g. fixing up vgpr operands via
readfirstlane) changing writelane to only have a single SGPR is tricky.

This implementation puts a new check after SIFixSGPRCopies that prevents
multiple SGPRs being used in any writelane instructions.

The algorithm used is to check for trivial copy prop of suitable constants into
one of the SGPR operands and perform that if possible. If this isn't possible
put an explicit copy of Src1 SGPR into M0 and use that instead (this is
allowable for writelane as the constraint is for SGPR read-port and not
constant-bus access).

Reviewers: rampitec, tpr, arsenm, nhaehnle

Reviewed By: rampitec, arsenm, nhaehnle

Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, mgorny, yaxunl, tpr, t-tye, llvm-commits

Tags: #llvm

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

Change-Id: Ic7553fa57440f208d4dbc4794fc24345d7e0e9ea

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375004 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-16 14:37:39 +00: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.