Interface that views SCEV expressions under a growing set of predicates.
Synopsis
Declared in <llvm/Analysis/ScalarEvolution.h>
class PredicatedScalarEvolution;
Description
An interface layer with SCEV used to manage how we see SCEV expressions for values in the context of existing predicates. We can add new predicates, but we cannot remove them.
This layer has multiple purposes:
-
provides a simple interface for SCEV versioning.
-
guarantees that the order of transformations applied on a SCEV expression for a single Value is consistent across two different getSCEV calls. This means that, for example, once we've obtained an AddRec expression for a certain value through expression rewriting, we will continue to get an AddRec expression for that Value.
-
lowers the number of expression rewrites.
Member Functions
Name |
Description |
|
Constructors |
Add |
|
Add every predicate in |
|
Return true if |
|
Attempt to rewrite |
|
Get the (predicated) backedge count for the analyzed loop. |
|
Return the current union of SCEV predicates. |
|
Return the rewritten SCEV for |
|
Return the SCEV for |
|
Returns the ScalarEvolution analysis used. |
|
Returns the upper bound of the loop trip count as a normal unsigned value, or 0 if the trip count is unknown. |
|
Get the (predicated) symbolic max backedge count for the analyzed loop. |
|
Return true if |
|
Print the SCEV mappings done by this analysis to |
Non-Member Functions
Name |
Description |
If the pointer has a constant stride return it in units of the access type size. If the pointer is loop‐invariant, return 0. Otherwise return std::nullopt. |
|
Overload of getPtrStride that stores no‐wrap predicates in |
|
Return the SCEV corresponding to a pointer with the symbolic stride replaced with constant one, assuming the SCEV predicate associated with |
Created with MrDocs