1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 12:43:36 +01:00
llvm-mirror/include/llvm-c
David Green 3248675f42 [UnrollAndJam] New Unroll and Jam pass
This is a simple implementation of the unroll-and-jam classical loop
optimisation.

The basic idea is that we take an outer loop of the form:

  for i..
    ForeBlocks(i)
    for j..
      SubLoopBlocks(i, j)
    AftBlocks(i)

Instead of doing normal inner or outer unrolling, we unroll as follows:

  for i... i+=2
    ForeBlocks(i)
    ForeBlocks(i+1)
    for j..
      SubLoopBlocks(i, j)
      SubLoopBlocks(i+1, j)
    AftBlocks(i)
    AftBlocks(i+1)
  Remainder Loop

So we have unrolled the outer loop, then jammed the two inner loops into
one. This can lead to a simpler inner loop if memory accesses can be shared
between the now jammed loops.

To do this we have to prove that this is all safe, both for the memory
accesses (using dependence analysis) and that ForeBlocks(i+1) can move before
AftBlocks(i) and SubLoopBlocks(i, j).

Differential Revision: https://reviews.llvm.org/D41953

llvm-svn: 336062
2018-07-01 12:47:30 +00:00
..
Transforms [UnrollAndJam] New Unroll and Jam pass 2018-07-01 12:47:30 +00:00
Analysis.h
BitReader.h
BitWriter.h
Comdat.h [LLVM-C] [bindings/go] Add C and Golang bindings for COMDAT 2018-03-14 18:33:53 +00:00
Core.h [LLVM-C] Improve Bindings For Aliases 2018-05-20 23:49:08 +00:00
DataTypes.h Assume existence of inttypes.h and stdint.h in DataTypes.h. 2018-04-02 13:22:26 +00:00
DebugInfo.h [DebugInfo] Refactoring DIType::setFlags to DIType::cloneWithFlags, NFC 2018-06-01 23:15:09 +00:00
Disassembler.h Split Disassembler.h in two to fix dependencies 2018-03-29 00:29:44 +00:00
DisassemblerTypes.h Split Disassembler.h in two to fix dependencies 2018-03-29 00:29:44 +00:00
ErrorHandling.h
ExecutionEngine.h [C-API] Add functions to create GDB, Intel, Oprofile event listeners. 2018-05-24 21:32:54 +00:00
Initialization.h [AggressiveInstCombine] Add aggressive inst combiner to the LLVM C API. 2018-04-24 00:39:29 +00:00
IRReader.h
Linker.h
LinkTimeOptimizer.h
lto.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
module.modulemap
Object.h
OrcBindings.h [ORC][C-API] Expose LLVMOrc{Unr,R}egisterJITEventListener(). 2018-05-24 21:32:52 +00:00
Support.h Reapply Support layering fixes. 2018-03-21 17:31:49 +00:00
Target.h
TargetMachine.h [LLVM-C] Add LLVMGetHostCPU{Name,Features}. 2018-04-11 22:40:42 +00:00
Types.h [ORC][C-API] Expose LLVMOrc{Unr,R}egisterJITEventListener(). 2018-05-24 21:32:52 +00:00