Amara Emerson cc76da7ada [GlobalISel] Rewrite the elide-br-by-swapping-icmp-ops combine to do less.
This combine previously tried to take sequences like:
  %cond = G_ICMP pred, a, b
  G_BRCOND %cond, %truebb
  G_BR %falsebb
%truebb:
  ...
%falsebb:
  ...

and by inverting the compare predicate and swapping branch targets, delete the
G_BR and instead have a single conditional branch to the falsebb. Since in an
earlier patch we have a combine to fold not(icmp) into just an inverted icmp,
we don't need this combine to do as much. This patch instead generalizes the
combine by just looking for:
  G_BRCOND %cond, %truebb
  G_BR %falsebb
%truebb:
  ...
%falsebb:
  ...

and then inverting the condition using a not (xor). The xor can be folded away
in a separate combine. This change also lets us avoid some optimization code
in the IRTranslator.

I also think that deleting G_BRs in the combiner is unnecessary. That's
something that targets can decide to do at selection time and could simplify
generic code in future.

Differential Revision: https://reviews.llvm.org/D86664
2020-09-09 13:08:16 -07:00
..
2019-06-20 15:08:34 +00:00
2019-05-08 22:09:57 +00:00
2020-08-09 20:50:30 +02:00
2019-06-20 15:08:34 +00:00
2020-08-09 20:50:30 +02:00
2020-08-09 20:50:30 +02:00
2020-06-25 10:38:23 +02:00
2020-08-09 20:50:30 +02:00
2020-08-09 20:50:30 +02:00
2019-09-25 18:50:34 +00:00
2019-03-19 15:50:24 +00:00
2019-07-01 17:17:45 +00:00
2020-08-05 12:36:26 -07:00
2020-08-05 12:36:26 -07:00
2019-03-12 21:02:54 +00:00
2020-08-05 12:36:26 -07:00
2020-08-05 12:36:26 -07:00
2020-06-15 16:18:05 -07:00
2020-08-09 20:50:30 +02:00
2020-06-15 16:18:05 -07: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
2020-06-15 16:18:05 -07: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
2020-08-09 20:50:30 +02:00
2020-08-09 20:50:30 +02:00
2020-08-09 20:50:30 +02:00
2020-06-25 10:38:23 +02:00
2020-08-09 20:50:30 +02:00
2020-08-09 20:50:30 +02:00
2019-06-20 15:08:34 +00:00
2020-08-09 20:50:30 +02:00
2020-06-04 17:49:00 -04:00
2020-06-04 17:49:00 -04:00
2020-06-04 17:49:00 -04:00
2020-06-04 17:49:00 -04:00
2020-06-04 17:49:00 -04:00
2020-06-04 17:49:00 -04:00
2020-06-04 17:49:00 -04:00
2020-06-04 17:49:00 -04:00
2019-06-20 15:08:34 +00:00
2019-05-03 15:37:07 +00:00
2020-04-03 10:07:21 +01:00
2020-08-09 20:50:30 +02:00
2020-08-09 20:50:30 +02:00
2020-06-15 16:18:05 -07:00
2020-08-09 20:50:30 +02:00
2020-08-09 20:50:30 +02:00
2020-06-15 16:18:05 -07:00
2020-08-09 20:50:30 +02:00
2020-01-12 22:44:51 -05: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.