Go to the documentation of this file.
35 #ifndef LLVM_ANALYSIS_SCALAREVOLUTIONNORMALIZATION_H
36 #define LLVM_ANALYSIS_SCALAREVOLUTIONNORMALIZATION_H
44 class ScalarEvolution;
This is an optimization pass for GlobalISel generic memory operations.
const SCEV * denormalizeForPostIncUse(const SCEV *S, const PostIncLoopSet &Loops, ScalarEvolution &SE)
Denormalize S to be post-increment for all loops present in Loops.
The main scalar evolution driver.
const SCEV * normalizeForPostIncUseIf(const SCEV *S, NormalizePredTy Pred, ScalarEvolution &SE)
Normalize S for all add recurrence sub-expressions for which Pred returns true.
SmallPtrSet< const Loop *, 2 > PostIncLoopSet
An efficient, type-erasing, non-owning reference to a callable.
This class represents an analyzed expression in the program.
function_ref< bool(const SCEVAddRecExpr *)> NormalizePredTy
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
const SCEV * normalizeForPostIncUse(const SCEV *S, const PostIncLoopSet &Loops, ScalarEvolution &SE)
Normalize S to be post-increment for all loops present in Loops.
This node represents a polynomial recurrence on the trip count of the specified loop.