llvm-project/llvm/test
Sidharth Baveja bb8850d34d [Loop Fusion] Integrate Loop Peeling into Loop Fusion
Summary:
This patch adds the ability to peel off iterations of the first loop in loop
fusion. This can allow for both loops to have the same trip count, making it
legal for them to be fused together.

Here is a simple scenario peeling can be used in loop fusion:

for (i = 0; i < 10; ++i)
  a[i] = a[i] + 3;
for (j = 1; j < 10; ++j)
  b[j] = b[j] + 5;

Here is we can make use of peeling, and then fuse the two loops together. We can
peel off the 0th iteration of the loop i, and then combine loop i and j for
i = 1 to 10.

a[0] = a[0] +3;
for (i = 1; i < 10; ++i) {
  a[i] = a[i] + 3;
  b[i] = b[i] + 5;
}

Currently peeling with loop fusion is only supported for loops with constant
trip counts and a single exit point. Both unguarded and guarded loops are
supported.

Author: sidbav (Sidharth Baveja)

Reviewers: kbarton, Meinersbur, bkramer, Whitney, skatkov, ashlykov, fhahn, bmahjour

Reviewed By: bmahjour

Subscribers: bmahjour, mgorny, hiraditya, zzheng

Tags: LLVM

Differential Revision: https://reviews.llvm.org/D82927
2020-07-21 15:59:14 +00:00
..
Analysis [ARM] Constant fold VCTP intrinsics 2020-07-21 11:39:31 +01:00
Assembler [ThinLTO] parse flags and blockcount summaries 2020-07-20 09:50:22 -07:00
Bindings [llvm] Development-mode InlineAdvisor 2020-07-20 11:01:56 -07:00
Bitcode [DebugInfo] Support for DW_AT_associated and DW_AT_allocated. 2020-07-20 19:54:35 +05:30
BugPoint
CodeGen [AArch64][SVE] Fix PCS for functions taking/returning scalable types. 2020-07-21 15:55:39 +01:00
DebugInfo [MC,NVPTX] Add MCAsmPrinter support for unsigned-only data directives. 2020-07-20 16:24:41 -07:00
Demangle
Examples Fix incorrect "REQUIRE" (default_target->default_triple) introduced in 59f45a1cdb 2020-06-23 18:22:39 +00:00
ExecutionEngine [jitlink] Updating test file for GOT relocations for elf x86 2020-07-21 17:19:48 +10:00
Feature [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
FileCheck [FileCheck] Implement -dump-input-filter 2020-07-10 11:02:11 -04:00
Instrumentation IR: Define byref parameter attribute 2020-07-20 10:23:09 -04:00
Integer
JitListener
LTO
Linker
MC [llvm-readobj] Update tests because of changes in llvm-readobj behavior 2020-07-20 10:39:04 +01:00
MachineVerifier GlobalISel: Verify G_BITCAST changes the type 2020-07-08 17:16:27 -04:00
Object [yaml2obj] - Rename FileHeader::SH* fields. 2020-07-15 12:47:31 +03:00
ObjectYAML [test] Run llvm/test/**/*.yaml & don't run llvm/test/**/*.cxx (not exist) 2020-07-08 10:22:49 -07:00
Other [Matrix] Add minimal lowering pass that only requires TTI. 2020-07-20 11:16:11 +01:00
Reduce [NFC] Use FileCheck for llvm-reduce interesness test 2020-07-21 09:03:45 +01:00
SafepointIRVerifier
Support
SymbolRewriter
TableGen [TableGen] Report an error instead of asserting 2020-07-17 11:32:46 +01:00
ThinLTO/X86 Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00
Transforms [Loop Fusion] Integrate Loop Peeling into Loop Fusion 2020-07-21 15:59:14 +00:00
Unit
Verifier Verifier: Check byref address space for AMDGPU calling conventions 2020-07-20 11:13:11 -04:00
YAMLParser
tools [llvm-readobj] Construct relocation-aware DWARFDataExtractor to decode .eh_frame addresses correctly 2020-07-21 08:33:19 -07:00
.clang-format
CMakeLists.txt Introducing llvm-libtool-darwin 2020-07-17 08:07:02 -07:00
TestRunner.sh
lit.cfg.py [llvm] Moved InlineSizeEstimatorAnalysis test to .ll 2020-07-16 12:25:16 -07:00
lit.site.cfg.py.in [llvm] Moved InlineSizeEstimatorAnalysis test to .ll 2020-07-16 12:25:16 -07:00