1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 12:43:36 +01:00
llvm-mirror/lib
Jessica Paquette 1f262f8352 [AArch64][GlobalISel] Fold constants into G_GLOBAL_VALUE
This is pretty much just ports `performGlobalAddressCombine` from
AArch64ISelLowering. (AArch64 doesn't use the generic DAG combine for this.)

This adds a pre-legalize combine which looks for this pattern:

```
  %g = G_GLOBAL_VALUE @x
  %ptr1 = G_PTR_ADD %g, cst1
  %ptr2 = G_PTR_ADD %g, cst2
  ...
  %ptrN = G_PTR_ADD %g, cstN
```

And then, if possible, transforms it like so:

```
  %g = G_GLOBAL_VALUE @x
  %offset_g = G_PTR_ADD %g, -min(cst)
  %ptr1 = G_PTR_ADD %offset_g, cst1
  %ptr2 = G_PTR_ADD %offset_g, cst2
  ...
  %ptrN = G_PTR_ADD %offset_g, cstN
```

Where min(cst) is the smallest out of the G_PTR_ADD constants.

This means we should save at least one G_PTR_ADD.

This also updates code in the legalizer + selector which assumes that
G_GLOBAL_VALUE will never have an offset and adds/updates relevant tests.

Differential Revision: https://reviews.llvm.org/D96624
2021-02-12 14:55:15 -08:00
..
Analysis [AA] Add option for tracing AA queries (NFC) 2021-02-12 21:42:49 +01:00
AsmParser Encode alignment attribute for cmpxchg 2021-02-11 15:17:50 -05:00
BinaryFormat [Debuginfo][DW_OP_implicit_pointer] (1/7) Support for DW_OP_LLVM_implicit_pointer 2021-01-15 14:45:04 +05:30
Bitcode Fix bitcode decoder error in "Encode alignment attribute for atomicrmw" 2021-02-11 22:29:03 -05:00
Bitstream [llvm] Use llvm::append_range (NFC) 2021-01-06 18:27:33 -08:00
CodeGen [GlobalISel] Simpler verification of G_SEXT_INREG and G_ASSERT_ZEXT 2021-02-12 21:33:27 +00:00
DebugInfo DebugInfo/Symbolize: Exclude ARM mapping symbols for .symtab symbolization after D95916 2021-02-12 11:04:20 -08:00
Demangle [Demangle] Support demangling Swift calling convention in MS demangler. 2021-01-27 13:24:54 -08:00
DWARFLinker [dsymutil][DWARFLinker][NFC] make AddressManager not depending on the order of checks for relocations. 2021-01-31 16:34:10 +03:00
ExecutionEngine [ORC] Clear unused materializing info entries. 2021-02-02 17:47:32 +11:00
Extensions llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
FileCheck [llvm] Use llvm::sort (NFC) 2021-01-17 10:39:45 -08:00
Frontend [OpenMPIRBuilder] Implement collapseLoops. 2021-02-03 19:12:02 -06:00
Fuzzer
FuzzMutate [FuzzMutate] Add mutator to modify instruction flags. 2021-01-23 19:05:20 +00:00
InterfaceStub [llvm-elfabi] Support ELF file that lacks .gnu.hash section 2021-01-26 12:31:52 -08:00
IR Fix layering after ed4718eccb12. 2021-02-12 14:54:59 -05:00
IRReader static const char *const foo => const char foo[] 2020-12-01 10:33:18 -08:00
LineEditor llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Linker ValueMapper: Rename RF_MoveDistinctMDs => RF_ReuseAndMutateDistinctMDs, NFC 2021-02-10 16:53:21 -08:00
LTO [NFC] Don't pass redundant arguments 2021-02-10 22:06:49 -08:00
MC [WebAssembly] Use data sections by default 2021-02-09 11:03:06 -08:00
MCA [llvm] Use llvm::find (NFC) 2021-01-19 20:19:14 -08:00
Object [llvm-objdump] Support PLT decoding for aarch64_be 2021-02-08 08:50:26 -08:00
ObjectYAML [llvm-readobj] Add support for decoding FreeBSD ELF notes 2021-02-09 16:59:22 +00:00
Option [clang][cli] Command line round-trip for HeaderSearch options 2021-02-04 10:18:34 +01:00
Passes [opt][NewPM] Add a --print-passes flag to print all available passes 2021-02-10 11:22:12 -08:00
ProfileData [CSSPGO][llvm-profgen] Add brackets for context id to support extended binary format 2021-02-12 01:14:53 -08:00
Remarks [llvm] Use append_range (NFC) 2021-01-27 23:25:41 -08:00
Support [Timer] On macOS count number of executed instructions 2021-02-11 17:26:37 +01:00
TableGen [TableGen] Fix anonymous record self-reference in foreach and multiclass 2021-02-01 10:59:07 -05:00
Target [AArch64][GlobalISel] Fold constants into G_GLOBAL_VALUE 2021-02-12 14:55:15 -08:00
Testing [clangd] Implement semanticTokens modifiers 2021-02-09 16:31:22 +01:00
TextAPI [llvm] Use llvm::sort (NFC) 2021-01-17 10:39:45 -08:00
ToolDrivers llvm-lib: Pull error printing code out of two functions 2021-01-26 19:13:30 -05:00
Transforms [coro] Add support for polymorphic return typed coro.suspend.async 2021-02-12 10:08:00 -08:00
WindowsManifest llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
XRay [lib/Object, tools] - Make ELFObjectFile::getELFFile return reference. 2020-12-04 16:02:29 +03:00
CMakeLists.txt llvmbuildectomy - support disabled native target 2020-11-13 15:50:13 +01:00