1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/lib
Meera Nakrani 0d90ee064b [AArch64LoadStoreOptimizer] Generate more STPs by renaming registers earlier
Our initial motivating case was memcpy's with alignments > 16. The
loads/stores, to which small memcpy's expand, are kept together in
several places so that we get a sequence like this for a 64 bit copy:
LD w0
LD w1
ST w0
ST w1
The load/store optimiser can generate a LDP/STP w0, w1 from this because
the registers read/written are consecutive. In our case however, the
sequence is optimised during ISel, resulting in:
LD w0
ST w0
LD w0
ST w0
This instruction reordering allows reuse of registers. Since the registers
are no longer consecutive (i.e. they are the same), it inhibits LDP/STP
creation. The approach here is to perform renaming:
LD w0
ST w0
LD w1
ST w1
to enable the folding of the stores into a STP. We do not yet generate
the LDP due to a limitation in the renaming implementation, but plan to
look at that in a follow-up so that we fully support this case. While
this was initially motivated by certain memcpy's, this is a general
approach and thus is beneficial for other cases too, as can be seen
in some test changes.

Differential Revision: https://reviews.llvm.org/D103597
2021-06-09 11:25:26 +00:00
..
Analysis Add an option to hide "cold" blocks from CFG graph 2021-06-08 11:29:27 -07:00
AsmParser Fix some -Wunused-but-set-variable in -DLLVM_ENABLE_ASSERTIONS=off build 2021-06-04 23:34:43 -07:00
BinaryFormat MsgPackReader.cpp - add missing implicit MathExtras.h header dependency. NFCI. 2021-06-05 18:05:40 +01:00
Bitcode [OpaquePtr] Make atomicrmw work with opaque pointers 2021-05-25 20:16:21 -07:00
Bitstream
CodeGen [ValueTypes][RISCV] Cap RVV fixed-length vectors by size 2021-06-09 12:15:37 +01:00
DebugInfo [ELF] getRelocatedSection: remove the check for ET_REL object file 2021-06-07 13:17:00 -07:00
Demangle [Demangle][Rust] Parse const backreferences 2021-06-08 10:01:50 +02:00
DWARFLinker
ExecutionEngine [JITLink][MachO] Handle muliple symbols at same offset when splitting C-strings. 2021-06-09 19:16:49 +10:00
Extensions
FileCheck
Frontend [OPENMP]Fix PR50129: omp cancel parallel not working as expected. 2021-06-04 08:24:55 -07:00
Fuzzer
FuzzMutate [FuzzMutate] Fix getWeight of InstDeleterIRStrategy 2021-06-08 11:14:33 -07:00
InterfaceStub
IR reland [IR] make -stack-alignment= into a module attr 2021-06-08 10:59:46 -07:00
IRReader
LineEditor
Linker
LTO [LTO] Support new PM in ThinLTOCodeGenerator. 2021-06-09 10:05:14 +01:00
MC [ms] [llvm-ml] Disambiguate size directives and variable declarations 2021-06-08 15:44:31 -04:00
MCA [MCA][NFCI] Minor changes to InstrBuilder and Instruction. 2021-05-31 17:05:13 +01:00
Object Reland "[AMDGPU] Add gfx1013 target" 2021-06-08 21:15:35 -04:00
ObjectYAML Reland "[AMDGPU] Add gfx1013 target" 2021-06-08 21:15:35 -04:00
Option
Passes [LoopUnrollAndJam] Change LoopUnrollAndJamPass to LoopNest pass 2021-06-08 20:30:02 +09:00
ProfileData [SampleFDO] New hierarchical discriminator for FS SampleFDO (llvm-profdata part) 2021-06-04 11:22:06 -07:00
Remarks
Support Add Twine support for std::string_view. 2021-06-08 20:19:04 -07:00
TableGen
Target [AArch64LoadStoreOptimizer] Generate more STPs by renaming registers earlier 2021-06-09 11:25:26 +00:00
Testing
TextAPI Revert "[llvm] llvm-tapi-diff" 2021-06-03 21:10:51 -07:00
ToolDrivers
Transforms Revert "[SROA] Avoid splitting loads/stores with irregular type" 2021-06-09 06:32:58 -04:00
WindowsManifest
XRay
CMakeLists.txt