1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test
Huihui Zhang 6dc3e5ee9a [SVE][LSR] Teach LSR to enable simple scaled-index addressing mode generation for SVE.
Currently, Loop strengh reduce is not handling loops with scalable stride very well.

Take loop vectorized with scalable vector type <vscale x 8 x i16> for instance,
(refer to test/CodeGen/AArch64/sve-lsr-scaled-index-addressing-mode.ll added).

Memory accesses are incremented by "16*vscale", while induction variable is incremented
by "8*vscale". The scaling factor "2" needs to be extracted to build candidate formula
i.e., "reg(%in) + 2*reg({0,+,(8 * %vscale)}". So that addrec register reg({0,+,(8*vscale)})
can be reused among Address and ICmpZero LSRUses to enable optimal solution selection.

This patch allow LSR getExactSDiv to recognize special cases like "C1*X*Y /s C2*X*Y",
and pull out "C1 /s C2" as scaling factor whenever possible. Without this change, LSR
is missing candidate formula with proper scaled factor to leverage target scaled-index
addressing mode.

Note: This patch doesn't fully fix AArch64 isLegalAddressingMode for scalable
vector. But allow simple valid scale to pass through.

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D103939
2021-06-14 16:42:34 -07:00
..
Analysis [CostModel][AArch64] Improve the cost estimate of CTPOP intrinsic 2021-06-11 11:15:46 +01:00
Assembler Intrinsic::getName: require a Module argument 2021-06-14 14:52:29 +02:00
Bindings
Bitcode [OpaquePtr] Create new bitcode encoding for atomicrmw 2021-05-25 16:30:34 -07:00
BugPoint
CodeGen [SVE][LSR] Teach LSR to enable simple scaled-index addressing mode generation for SVE. 2021-06-14 16:42:34 -07:00
DebugInfo [AIX][XCOFF] emit vector info of traceback table. 2021-06-14 11:15:22 -04:00
Demangle [Demangle][Rust] Parse const backreferences 2021-06-08 10:01:50 +02:00
Examples
ExecutionEngine [JITLink][MachO] Add missing testcase. 2021-06-13 20:43:49 +10:00
Feature
FileCheck
Instrumentation [HWASan] Enable globals support for LAM. 2021-06-14 14:20:44 -07:00
Integer
JitListener Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
Linker [IR] make -warn-frame-size into a module attr 2021-06-10 16:15:27 -07:00
LTO LTO: Export functions referenced by non-canonical CFI jump tables 2021-06-08 14:57:43 -07:00
MachineVerifier
MC Implement DW_CFA_LLVM_* for Heterogeneous Debugging 2021-06-14 08:51:50 +05:30
Object Reland "[AMDGPU] Add gfx1013 target" 2021-06-08 21:15:35 -04:00
ObjectYAML
Other Revert "[DSE] Remove stores in the same loop iteration" 2021-06-08 21:23:08 +01:00
SafepointIRVerifier
Support
SymbolRewriter
TableGen
ThinLTO/X86 [LTO] Support new PM in ThinLTOCodeGenerator. 2021-06-09 10:05:14 +01:00
tools [CSSPGO] Aggregation by the last K context frames for cold profiles 2021-06-14 10:33:43 -07:00
Transforms [InstCombine] add DeMorgan folds for logical ops in select form 2021-06-14 12:54:35 -04:00
Unit
Verifier [VP] Binary floating-point intrinsics. 2021-06-14 08:51:41 +02:00
YAMLParser
.clang-format
CMakeLists.txt Revert "[IRSim] Adding basic implementation of llvm-sim." 2021-06-11 15:44:19 -05:00
lit.cfg.py Revert "[IRSim] Adding basic implementation of llvm-sim." 2021-06-11 15:44:19 -05:00
lit.site.cfg.py.in
TestRunner.sh