| Package | Description |
|---|---|
| cetus.analysis | |
| cetus.hir | |
| cetus.transforms |
| Modifier and Type | Method and Description |
|---|---|
Loop |
DDArrayAccessInfo.getAccessLoop()
Returns the enclosing loop
|
static Loop |
LoopTools.getOutermostLoop(Loop loop)
Get the outermost loop for the nest that surrounds the input loop
|
| Modifier and Type | Method and Description |
|---|---|
static java.util.LinkedList<Loop> |
LoopTools.calculateInnerLoopNest(Loop enclosing_loop)
Calculate the nest of loops enclosed within the given loop
|
static java.util.LinkedList<Loop> |
LoopTools.calculateLoopNest(Loop loop)
Calculate the loop nest of this loop
|
static java.util.List<Loop> |
LoopTools.extractOutermostDependenceTestEligibleLoops(Traversable t) |
java.util.LinkedList<Loop> |
DDArrayAccessInfo.getAccessEnclosingLoops()
Returns entire nest of enclosing loops
|
java.util.LinkedList<Loop> |
RangeTest.getCommonEnclosingLoops()
Returns the list of loops that commonly enclose the subscript pair.
|
java.util.LinkedList<Loop> |
OmegaTest.getCommonEnclosingLoops() |
java.util.LinkedList<Loop> |
DDTest.getCommonEnclosingLoops()
Returns a list of loops from outermost to innermost that are common to
the two expressions being tested for dependence, whether they are a pair
of subscripts or a pair of whole array accesses
|
java.util.LinkedList<Loop> |
BanerjeeTest.getCommonEnclosingLoops() |
static java.util.LinkedList<Loop> |
LoopTools.getCommonNest(Loop loop1,
Loop loop2)
Get common enclosing loops for loop1 and loop2
|
java.util.LinkedHashMap<Loop,java.lang.Integer> |
DependenceVector.getDirectionVector() |
java.util.Set<Loop> |
DependenceVector.getLoops() |
| Modifier and Type | Method and Description |
|---|---|
abstract void |
LoopAnalysisPass.analyzeLoop(Loop loop) |
DDGraph |
DDTDriver.analyzeLoopsForDependence(Loop loop)
Analyze this loop and all inner loops to build a dependence graph for the
loop nest with this loop as the outermost loop.
|
boolean |
DDGraph.Arc.belongsToLoop(Loop loop) |
static java.util.LinkedList<Loop> |
LoopTools.calculateInnerLoopNest(Loop enclosing_loop)
Calculate the nest of loops enclosed within the given loop
|
static java.util.LinkedList<Loop> |
LoopTools.calculateLoopNest(Loop loop)
Calculate the loop nest of this loop
|
static boolean |
LoopTools.checkDataDependenceEligibility(Loop loop)
Checks the eligibility of a certain loop for data dependence testing
Eligibility checks can be added or removed to increase the scope of
dependence testing
|
boolean |
DDGraph.checkEqualDependences(Loop loop)
Check if the dependence direction for the input loop is equal in all
dependences in the graph
|
boolean |
DDGraph.checkLoopCarriedDependence(Loop l)
Check if the dependence direction for the input loop is loop-carried for
any of the dependences in the graph
|
static java.util.Set<Expression> |
LoopTools.collectScalarDependences(Loop l)
Returns symbols that may cause data dependences with the specified loop.
|
static boolean |
LoopTools.containsBreakStatement(Loop loop)
Check if the loop contains only a break statement modifier
|
static boolean |
LoopTools.containsControlFlowModifier(Loop loop)
Check whether the loop contains control constructs that cause it to
terminate before the loop condition is reached.
|
static boolean |
LoopTools.containsControlFlowModifierOtherThanBreakStmt(Loop loop) |
static boolean |
LoopTools.containsFunctionCall(Loop loop)
Checks if loop body contains a function call
|
static boolean |
LoopTools.containsLoop(Loop loop)
Check if loop body contains another loop
|
static boolean |
LoopTools.containsOnlyParallelizableCall(Loop loop)
Check if the loop contains a function call that can be
tested for data dependences/that can be eventually parallelized
|
static java.util.LinkedList<Loop> |
LoopTools.getCommonNest(Loop loop1,
Loop loop2)
Get common enclosing loops for loop1 and loop2
|
DDGraph |
DDTDriver.getDDGraph(boolean summarize,
Loop loop)
Deprecated.
This routine must no longer be used to get access to data dependence
information. Instead, obtain a copy of the dependence graph from Program
object and use DDGraph API for details related to dependence information
|
int |
DependenceVector.getDirection(Loop loop) |
static Expression |
LoopTools.getIncrementExpression(Loop loop)
Get the expression that represents the actual increment value for the
loop.
|
static Expression |
LoopTools.getIndexVariable(Loop loop)
Get loop index variable, if loop is canonical
|
static Symbol |
LoopTools.getLoopIndexSymbol(Loop loop)
Get symbol of loop index, index variable is identified from step
expression for loop
|
static Expression |
LoopTools.getLowerBoundExpression(Loop loop)
Returns a simplified lower bound expression for the loop
|
static Loop |
LoopTools.getOutermostLoop(Loop loop)
Get the outermost loop for the nest that surrounds the input loop
|
static long |
LoopTools.getReuseDistance(Loop loop,
ArrayAccess e1,
ArrayAccess e2)
A simple implementation based on the Euclidean GCD algorithm to
calculate the distance in terms of loop iterations between
subscripts of dependent arrays.
|
DDGraph |
DDGraph.getSubGraph(Loop loop)
From the current dependence graph, extract a subgraph containing
dependences only for the specified loop and its inner nest
|
static Expression |
LoopTools.getUpperBoundExpression(Loop loop)
Returns a simplified upper bound expression for the loop
|
static boolean |
LoopTools.isCanonical(Loop loop)
Check if loop is canonical, FORTRAN DO Loop format
|
boolean |
DDGraph.Arc.isCarried(Loop l) |
static boolean |
LoopTools.isIncrementConstant(Loop loop)
Get loop increment expression and check if it is an integer constant
|
static boolean |
LoopTools.isIncrementEligible(Loop loop)
Returns true if the loop increment is an integer constant value.
|
static boolean |
LoopTools.isIndexInvariant(Loop loop,
Identifier id)
Check if the index variable is defined within the loop body
|
static boolean |
LoopTools.isInnermostLoop(Loop loop)
Checks whether this loop contains any inner loops
|
static boolean |
LoopTools.isLoopInvariant(Loop loop,
Expression e)
Check if the given expression is loop invariant
|
static boolean |
LoopTools.isLowerBoundConstant(Loop loop)
Check if the lower bound expression is an integer constant
|
static boolean |
LoopTools.isOutermostLoop(Loop loop)
Checks whether this loop is enclosed by any outer loops
|
static boolean |
LoopTools.isPerfectNest(Loop loop)
Check if this loop and inner loops form a perfect nest
|
static boolean |
LoopTools.isPrivate(Symbol s,
Loop l)
Check if the input symbol is marked as private to the loop by the
Privatization pass.
|
static boolean |
LoopTools.isReduction(Symbol s,
Loop l)
Check if the input symbol is marked as reduction for the loop by the
Reduction pass.
|
static boolean |
LoopTools.isUpperBoundConstant(Loop loop)
Check if loop upper bound is an integer constant
|
static Expression |
LoopTools.replaceSymbolicLowerBound(Loop loop)
Replaces symbolic values in loop lower bound with information obtained
from range analysis.
|
static Expression |
LoopTools.replaceSymbolicLowerBound(Loop loop,
RangeDomain loop_rd)
Replaces symbolic values in loop lower bound with information obtained
from range analysis.
|
static Expression |
LoopTools.replaceSymbolicUpperBound(Loop loop)
Replaces symbolic values in loop upper bound with information obtained
from range analysis.
|
static Expression |
LoopTools.replaceSymbolicUpperBound(Loop loop,
RangeDomain loop_rd)
Replaces symbolic values in loop upper bound with information obtained
from range analysis.
|
static boolean |
LoopTools.scalarDependencePossible(Loop l)
Check for scalars that are not privatizable or reduction variables
|
void |
DependenceVector.setDirection(Loop loop,
int direction) |
static java.lang.String |
LoopTools.toControlString(Loop loop)
Returns the control structure of the specified loop in string.
|
| Modifier and Type | Method and Description |
|---|---|
java.util.ArrayList<DependenceVector> |
DDGraph.getDirectionMatrix(java.util.LinkedList<Loop> nest)
Obtain a matrix representation of direction vectors for the dependences
contained within this dependence graph
|
void |
OmegaTest.printDirectionVector(java.util.HashMap<Loop,java.lang.Integer> dv,
java.util.LinkedList<Loop> nest) |
void |
OmegaTest.printDirectionVector(java.util.HashMap<Loop,java.lang.Integer> dv,
java.util.LinkedList<Loop> nest) |
| Constructor and Description |
|---|
DDArrayAccessInfo(ArrayAccess expr,
int type,
Loop loop,
Statement stmt)
Constructs a new array access information for the specified array access,
access type, enclosing loop, and enclosing statement.
|
LoopInfo(Loop loop)
Creates a data structure containing loop-related information (use only
if canonical loop)
|
| Constructor and Description |
|---|
DDTestWrapper(DDArrayAccessInfo a1,
DDArrayAccessInfo a2,
java.util.LinkedList<Loop> loop_nest,
java.util.HashMap<Loop,LoopInfo> loopInfo)
Constructs a new test wrapper with the specified pair of array accesses
and loop information.
|
DDTestWrapper(DDArrayAccessInfo a1,
DDArrayAccessInfo a2,
java.util.LinkedList<Loop> loop_nest,
java.util.HashMap<Loop,LoopInfo> loopInfo)
Constructs a new test wrapper with the specified pair of array accesses
and loop information.
|
DependenceVector(java.util.LinkedList<Loop> nest) |
OmegaTest(DDArrayAccessInfo a1,
DDArrayAccessInfo a2,
java.util.LinkedList<Loop> common_enclosing_loops,
java.util.HashMap<Loop,LoopInfo> loopInfo) |
OmegaTest(DDArrayAccessInfo a1,
DDArrayAccessInfo a2,
java.util.LinkedList<Loop> common_enclosing_loops,
java.util.HashMap<Loop,LoopInfo> loopInfo) |
SubscriptPair(Expression s1,
Expression s2,
Statement st1,
Statement st2,
java.util.LinkedList<Loop> nest,
java.util.HashMap<Loop,LoopInfo> loopinfo)
Constructs a new subscript pair with the given pairs of expressions,
statements, and the loop nest information.
|
SubscriptPair(Expression s1,
Expression s2,
Statement st1,
Statement st2,
java.util.LinkedList<Loop> nest,
java.util.HashMap<Loop,LoopInfo> loopinfo)
Constructs a new subscript pair with the given pairs of expressions,
statements, and the loop nest information.
|
| Modifier and Type | Class and Description |
|---|---|
class |
DoLoop
DoLoop represents a C-style do-while loop.
|
class |
ForLoop
ForLoop represents a C-style for loop, typically having an initial
statement, a condition expression, and a step expression.
|
class |
WhileLoop
WhileLoop represents a while loop having a condition expression and
a loop body.
|
| Modifier and Type | Method and Description |
|---|---|
abstract void |
LoopTransformPass.transformLoop(Loop loop) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
LoopTiling.isLegal(java.util.LinkedList<Loop> nest,
int src,
int target) |
boolean |
LoopInterchange.isLegal(java.util.LinkedList<Loop> nest,
int src,
int target) |