1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/lib/Transforms
David Green 2017b8f59b [LV] Allow tail folded reduction selects to remain in the loop
The normal scheme for tail folding reductions is to use:

loop:
  p = phi(0, a)
  mask = ...
  x = masked_load(..., mask)
  a = add(x, p)
s = select(mask, a, p)

This means we need to keep the register p and a alive out of the loop, plus
the mask. On a target with predicated operations we can instead generate
the phi as p = phi(0, s). This ensures the select in the loop and we can
fold select(m, add(a, b), c) to something like a vaddt c, a, b using the
m predicate. This in turn allows us to tail predicate the entire loop.

Differential Revision: https://reviews.llvm.org/D84741
2020-08-20 14:31:14 +01:00
..
AggressiveInstCombine [SVE] Remove calls to VectorType::getNumElements from AggressiveInstCombine 2020-08-14 16:40:34 -07:00
CFGuard
Coroutines [Coroutines] Use to collect lifetime marker of in CoroFrame Differential Revision: https://reviews.llvm.org/D85279 2020-08-06 14:21:55 +08:00
Hello
InstCombine [ValueTracking] define/use max recursion depth in header 2020-08-19 16:56:59 -04:00
Instrumentation [MSAN] Avoid dangling ActualFnStart when replacing instruction 2020-08-14 23:50:38 +00:00
IPO [Attributor] Handle CallBase case in AAValueConstantRange::initialize 2020-08-20 20:15:19 +09:00
ObjCARC [NFC] Remove unused GetUnderlyingObject paramenter 2020-07-31 02:10:03 -07:00
Scalar Reland "[LoopUnswitch] Fix incorrect Modified status" 2020-08-20 11:52:09 +02:00
Utils Reland "[SLC] sprintf(dst, "%s", str) -> strcpy(dst, str)" 2020-08-15 12:14:57 +02:00
Vectorize [LV] Allow tail folded reduction selects to remain in the loop 2020-08-20 14:31:14 +01:00
CMakeLists.txt
LLVMBuild.txt