llvm-project/llvm/test
Jessica Paquette d0ba6c4002 [AArch64][GlobalISel] Select CSINC and CSINV for G_SELECT with constants
Select the following:

- G_SELECT cc, 0, 1 -> CSINC zreg, zreg, cc
- G_SELECT cc 0, -1 -> CSINV zreg, zreg cc
- G_SELECT cc, 1, f -> CSINC f, zreg, inv_cc
- G_SELECT cc, -1, f -> CSINV f, zreg, inv_cc
- G_SELECT cc, t, 1 -> CSINC t, zreg, cc
- G_SELECT cc, t, -1 -> CSINC t, zreg, cc

(IR example: https://godbolt.org/z/YfPna9)

These correspond to a bunch of the AArch64csel patterns in AArch64InstrInfo.td.

Unfortunately, it doesn't seem like we can import patterns that use NZCV like
those ones do. E.g.

```
def : Pat<(AArch64csel GPR32:$tval, (i32 1), (i32 imm:$cc), NZCV),
          (CSINCWr GPR32:$tval, WZR, (i32 imm:$cc))>;
```

So we have to manually select these for now.

This replaces `selectSelectOpc` with an `emitSelect` function, which performs
these optimizations.

Differential Revision: https://reviews.llvm.org/D90701
2020-11-12 14:44:01 -08:00
..
Analysis [BasicAA] Remove checks for GEP decomposition limit reached 2020-11-12 20:43:38 +01:00
Assembler
Bindings C API: support scalable vectors 2020-10-28 18:19:34 -04:00
Bitcode [AMDGPU] Add amdgpu_gfx calling convention 2020-11-09 16:51:44 +01:00
BugPoint
CodeGen [AArch64][GlobalISel] Select CSINC and CSINV for G_SELECT with constants 2020-11-12 14:44:01 -08:00
DebugInfo [llvm] Check the debug info line table for basic block sections. 2020-11-09 12:19:20 -08:00
Demangle
Examples
ExecutionEngine [JITLink][ELF] Omit temporary labels in tests 2020-11-04 10:03:15 +00:00
Feature [NewPM] Provide method to run all pipeline callbacks, used for -O0 2020-11-11 15:10:27 -08:00
FileCheck [FileCheck] Use %ProtectFileCheckOutput in allow-unused-prefixes.txt 2020-11-05 07:08:20 -08:00
Instrumentation Add a flag to control whether to propagate labels from condition values to results 2020-11-11 20:41:42 +00:00
Integer
JitListener
LTO
Linker [test] Fix unused check prefixes in test/Linker/ and test/Other/ 2020-10-29 21:54:56 -07:00
MC [NFC][AMDGPU] Clean up some lit test prefixes 2020-11-11 17:12:37 +00:00
MachineVerifier
Object [MachO] Allow the LC_IDENT load command 2020-11-11 10:15:54 -08:00
ObjectYAML [MachO] Allow the LC_IDENT load command 2020-11-11 10:15:54 -08:00
Other Introduce -print-before-changed, making -print-changed also print before passes that modify IR 2020-11-12 15:20:50 +00:00
Reduce [llvm-reduce] Add reduction for special globals like llvm.used. 2020-11-11 11:25:05 +00:00
SafepointIRVerifier
Support
SymbolRewriter
TableGen [TableGen] Add the !filter bang operator. 2020-11-09 10:56:55 -05:00
ThinLTO/X86 [test] Fix unused FileCheck prefix in ThinLTO test 2020-11-02 09:06:36 -08:00
Transforms [LoopVectorize] regenerate test checks; NFC 2020-11-12 17:15:46 -05:00
Unit
Verifier [DebugInfo] Support for DW_TAG_generic_subrange 2020-10-29 01:34:15 +05:30
YAMLParser
tools [llvm-objcopy] --only-keep-debug: place zero-size segment according to its parent segment 2020-11-11 09:21:10 -08:00
.clang-format
CMakeLists.txt
TestRunner.sh
lit.cfg.py Make test/tools/llvm-dlltool/tool-name.test pass, and make it run 2020-11-03 11:59:15 -05:00
lit.site.cfg.py.in