1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/lib
Philip Reames 17055bcff3 [LoopVec] Support non-instructions as argument to uniform mem ops
The initial step of the uniform-after-vectorization (lane-0 demanded only) analysis was very awkwardly written. It would revisit use list of each pointer operand of a widened load/store. As a result, it was in the worst case O(N^2) where N was the number of instructions in a loop, and had restricted operand Value types to reduce the size of use lists.

This patch replaces the original algorithm with one which is at most O(2N) in the number of instructions in the loop. (The key observation is that each use of a potentially interesting pointer is visited at most twice, once on first scan, once in the use list of *it's* operand. Only instructions within the loop have their uses scanned.)

In the process, we remove a restriction which required the operand of the uniform mem op to itself be an instruction.  This allows detection of uniform mem ops involving global addresses.

Differential Revision: https://reviews.llvm.org/D92056
2020-12-03 14:51:44 -08:00
..
Analysis [MemCpyOpt] Correctly merge alias scopes during call slot optimization 2020-12-03 09:23:37 -08:00
AsmParser Adding PoisonValue for representing poison value explicitly in IR 2020-11-25 17:33:51 -07:00
BinaryFormat [Triple][MachO] Define "arm64e", an AArch64 subarch for Pointer Auth. 2020-12-03 07:53:59 -08:00
Bitcode Adding PoisonValue for representing poison value explicitly in IR 2020-11-25 17:33:51 -07:00
Bitstream
CodeGen [ScalarizeMaskedMemIntrin] NFC: Pass args by reference 2020-12-03 14:04:21 -05:00
DebugInfo Recommit "[llvm-symbolizer] Switch to using native symbolizer by default on Windows" 2020-11-30 17:36:12 -08:00
Demangle
DWARFLinker
ExecutionEngine TargetProcessControl.cpp - Remove warning: extra ‘;’ 2020-11-27 18:19:58 +01:00
Extensions
FileCheck
Frontend [OpenMPIRBuilder] forward arguments as pointers to outlined function 2020-12-02 14:59:41 +01:00
Fuzzer
FuzzMutate
InterfaceStub [llvm-elfabi] Emit ELF .dynsym, .dynamic sections 2020-11-24 00:17:04 -08:00
IR [Metadata] Fix layer violation in D91576 2020-12-03 10:58:46 -08:00
IRReader static const char *const foo => const char foo[] 2020-12-01 10:33:18 -08:00
LineEditor
Linker [ThinLTO] Import symver directives for imported symbols (PR48214) 2020-12-02 14:56:43 +01:00
LTO [Triple][MachO] Define "arm64e", an AArch64 subarch for Pointer Auth. 2020-12-03 07:53:59 -08:00
MC [XCOFF][AIX] Alternative path in EHStreamer for platforms do not have uleb128 support 2020-12-02 20:03:15 +00:00
MCA [llvm-mca] Fix processing thumb instruction set 2020-11-24 18:27:59 +03:00
Object [Triple][MachO] Define "arm64e", an AArch64 subarch for Pointer Auth. 2020-12-03 07:53:59 -08:00
ObjectYAML [obj2yaml] - Teach tool to emit the "SectionHeaderTable" key and sort sections by file offset. 2020-12-01 12:59:15 +03:00
Option
Passes [llvm][inliner] Reuse the inliner pass to implement 'always inliner' 2020-11-30 12:03:39 -08:00
ProfileData
Remarks
Support Speedup some unicode rendering 2020-12-03 20:11:11 +01:00
TableGen [TableGen] Eliminate the 'code' type 2020-12-03 10:19:11 -05:00
Target Revert D90844 "[TableGen][SchedModels] Fix read/write variant substitution" 2020-12-03 14:24:29 -08:00
Testing
TextAPI
ToolDrivers
Transforms [LoopVec] Support non-instructions as argument to uniform mem ops 2020-12-03 14:51:44 -08:00
WindowsManifest
XRay
CMakeLists.txt