diff options
Diffstat (limited to 'polly/lib/Analysis/ScopInfo.cpp')
-rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 65 |
1 files changed, 34 insertions, 31 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 819bf15a3d6..61edeaf2841 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -461,7 +461,7 @@ MemoryAccess::getReductionOperatorStr(MemoryAccess::ReductionType RT) { return ""; } -/// @brief Return the reduction type for a given binary operator +/// Return the reduction type for a given binary operator. static MemoryAccess::ReductionType getReductionType(const BinaryOperator *BinOp, const Instruction *Load) { if (!BinOp) @@ -747,7 +747,7 @@ __isl_give isl_map *MemoryAccess::foldAccess(__isl_take isl_map *AccessRelation, return AccessRelation; } -/// @brief Check if @p Expr is divisible by @p Size. +/// Check if @p Expr is divisible by @p Size. static bool isDivisible(const SCEV *Expr, unsigned Size, ScalarEvolution &SE) { assert(Size != 0); if (Size == 1) @@ -1114,7 +1114,7 @@ void ScopStmt::realignParams() { Domain = isl_set_gist_params(Domain, Ctx); } -/// @brief Add @p BSet to the set @p User if @p BSet is bounded. +/// Add @p BSet to the set @p User if @p BSet is bounded. static isl_stat collectBoundedParts(__isl_take isl_basic_set *BSet, void *User) { isl_set **BoundedParts = static_cast<isl_set **>(User); @@ -1125,7 +1125,7 @@ static isl_stat collectBoundedParts(__isl_take isl_basic_set *BSet, return isl_stat_ok; } -/// @brief Return the bounded parts of @p S. +/// Return the bounded parts of @p S. static __isl_give isl_set *collectBoundedParts(__isl_take isl_set *S) { isl_set *BoundedParts = isl_set_empty(isl_set_get_space(S)); isl_set_foreach_basic_set(S, collectBoundedParts, &BoundedParts); @@ -1133,7 +1133,7 @@ static __isl_give isl_set *collectBoundedParts(__isl_take isl_set *S) { return BoundedParts; } -/// @brief Compute the (un)bounded parts of @p S wrt. to dimension @p Dim. +/// Compute the (un)bounded parts of @p S wrt. to dimension @p Dim. /// /// @returns A separation of @p S into first an unbounded then a bounded subset, /// both with regards to the dimension @p Dim. @@ -1176,7 +1176,7 @@ partitionSetParts(__isl_take isl_set *S, unsigned Dim) { return std::make_pair(UnboundedParts, BoundedParts); } -/// @brief Set the dimension Ids from @p From in @p To. +/// Set the dimension Ids from @p From in @p To. static __isl_give isl_set *setDimensionIds(__isl_keep isl_set *From, __isl_take isl_set *To) { for (unsigned u = 0, e = isl_set_n_dim(From); u < e; u++) { @@ -1186,7 +1186,7 @@ static __isl_give isl_set *setDimensionIds(__isl_keep isl_set *From, return To; } -/// @brief Create the conditions under which @p L @p Pred @p R is true. +/// Create the conditions under which @p L @p Pred @p R is true. static __isl_give isl_set *buildConditionSet(ICmpInst::Predicate Pred, __isl_take isl_pw_aff *L, __isl_take isl_pw_aff *R) { @@ -1216,7 +1216,7 @@ static __isl_give isl_set *buildConditionSet(ICmpInst::Predicate Pred, } } -/// @brief Create the conditions under which @p L @p Pred @p R is true. +/// Create the conditions under which @p L @p Pred @p R is true. /// /// Helper function that will make sure the dimensions of the result have the /// same isl_id's as the @p Domain. @@ -1228,7 +1228,7 @@ static __isl_give isl_set *buildConditionSet(ICmpInst::Predicate Pred, return setDimensionIds(Domain, ConsequenceCondSet); } -/// @brief Build the conditions sets for the switch @p SI in the @p Domain. +/// Build the conditions sets for the switch @p SI in the @p Domain. /// /// This will fill @p ConditionSets with the conditions under which control /// will be moved from @p SI to its successors. Hence, @p ConditionSets will @@ -1272,8 +1272,8 @@ buildConditionSets(ScopStmt &Stmt, SwitchInst *SI, Loop *L, return true; } -/// @brief Build the conditions sets for the branch condition @p Condition in -/// the @p Domain. +/// Build the conditions sets for the branch condition @p Condition in +/// the @p Domain. /// /// This will fill @p ConditionSets with the conditions under which control /// will be moved from @p TI to its successors. Hence, @p ConditionSets will @@ -1364,7 +1364,7 @@ buildConditionSets(ScopStmt &Stmt, Value *Condition, TerminatorInst *TI, return true; } -/// @brief Build the conditions sets for the terminator @p TI in the @p Domain. +/// Build the conditions sets for the terminator @p TI in the @p Domain. /// /// This will fill @p ConditionSets with the conditions under which control /// will be moved from @p TI to its successors. Hence, @p ConditionSets will @@ -1505,7 +1505,7 @@ void ScopStmt::init(LoopInfo &LI) { checkForReductions(); } -/// @brief Collect loads which might form a reduction chain with @p StoreMA +/// Collect loads which might form a reduction chain with @p StoreMA. /// /// Check if the stored value for @p StoreMA is a binary operator with one or /// two loads as operands. If the binary operand is commutative & associative, @@ -1559,7 +1559,7 @@ void ScopStmt::collectCandiateReductionLoads( Loads.push_back(&getArrayAccessFor(PossibleLoad1)); } -/// @brief Check for reductions in this ScopStmt +/// Check for reductions in this ScopStmt. /// /// Iterate over all store memory accesses and check for valid binary reduction /// like chains. For all candidates we check if they have the same base address @@ -1725,7 +1725,7 @@ void Scop::setContext(__isl_take isl_set *NewContext) { Context = NewContext; } -/// @brief Remap parameter values but keep AddRecs valid wrt. invariant loads. +/// Remap parameter values but keep AddRecs valid wrt. invariant loads. struct SCEVSensitiveParameterRewriter : public SCEVVisitor<SCEVSensitiveParameterRewriter, const SCEV *> { ValueToValueMap &VMap; @@ -2099,7 +2099,7 @@ void Scop::simplifyContexts() { InvalidContext = isl_set_align_params(InvalidContext, getParamSpace()); } -/// @brief Add the minimal/maximal access in @p Set to @p User. +/// Add the minimal/maximal access in @p Set to @p User. static isl_stat buildMinMaxAccess(__isl_take isl_set *Set, void *User) { Scop::MinMaxVectorTy *MinMaxAccesses = (Scop::MinMaxVectorTy *)User; isl_pw_multi_aff *MinPMA, *MaxPMA; @@ -2172,7 +2172,7 @@ static __isl_give isl_set *getAccessDomain(MemoryAccess *MA) { return isl_set_reset_tuple_id(Domain); } -/// @brief Wrapper function to calculate minimal/maximal accesses to each array. +/// Wrapper function to calculate minimal/maximal accesses to each array. static bool calculateMinMaxAccess(__isl_take isl_union_map *Accesses, __isl_take isl_union_set *Domains, Scop::MinMaxVectorTy &MinMaxAccesses) { @@ -2187,17 +2187,17 @@ static bool calculateMinMaxAccess(__isl_take isl_union_map *Accesses, return Valid; } -/// @brief Helper to treat non-affine regions and basic blocks the same. +/// Helper to treat non-affine regions and basic blocks the same. /// ///{ -/// @brief Return the block that is the representing block for @p RN. +/// Return the block that is the representing block for @p RN. static inline BasicBlock *getRegionNodeBasicBlock(RegionNode *RN) { return RN->isSubRegion() ? RN->getNodeAs<Region>()->getEntry() : RN->getNodeAs<BasicBlock>(); } -/// @brief Return the @p idx'th block that is executed after @p RN. +/// Return the @p idx'th block that is executed after @p RN. static inline BasicBlock * getRegionNodeSuccessor(RegionNode *RN, TerminatorInst *TI, unsigned idx) { if (RN->isSubRegion()) { @@ -2207,7 +2207,7 @@ getRegionNodeSuccessor(RegionNode *RN, TerminatorInst *TI, unsigned idx) { return TI->getSuccessor(idx); } -/// @brief Return the smallest loop surrounding @p RN. +/// Return the smallest loop surrounding @p RN. static inline Loop *getRegionNodeLoop(RegionNode *RN, LoopInfo &LI) { if (!RN->isSubRegion()) return LI.getLoopFor(RN->getNodeAs<BasicBlock>()); @@ -2321,7 +2321,7 @@ static Loop *getFirstNonBoxedLoopFor(BasicBlock *BB, LoopInfo &LI, return L; } -/// @brief Adjust the dimensions of @p Dom that was constructed for @p OldL +/// Adjust the dimensions of @p Dom that was constructed for @p OldL /// to be compatible to domains constructed for loop @p NewL. /// /// This function assumes @p NewL and @p OldL are equal or there is a CFG @@ -2735,10 +2735,13 @@ bool Scop::propagateDomainConstraints(Region *R, DominatorTree &DT, return true; } -/// @brief Create a map from SetSpace -> SetSpace where the dimensions @p Dim -/// is incremented by one and all other dimensions are equal, e.g., +/// Create a map to map from a given iteration to a subsequent iteration. +/// +/// This map maps from SetSpace -> SetSpace where the dimensions @p Dim +/// is incremented by one and all other dimensions are equal, e.g., /// [i0, i1, i2, i3] -> [i0, i1, i2 + 1, i3] -/// if @p Dim is 2 and @p SetSpace has 4 dimensions. +/// +/// if @p Dim is 2 and @p SetSpace has 4 dimensions. static __isl_give isl_map * createNextIterationMap(__isl_take isl_space *SetSpace, unsigned Dim) { auto *MapSpace = isl_space_map_from_set(SetSpace); @@ -3076,7 +3079,7 @@ bool Scop::buildAliasGroups(AliasAnalysis &AA) { return true; } -/// @brief Get the smallest loop that contains @p S but is not in @p S. +/// Get the smallest loop that contains @p S but is not in @p S. static Loop *getLoopSurroundingScop(Scop &S, LoopInfo &LI) { // Start with the smallest loop containing the entry and expand that // loop until it contains all blocks in the region. If there is a loop @@ -3285,7 +3288,7 @@ InvariantEquivClassTy *Scop::lookupInvariantEquivClass(Value *Val) { return nullptr; } -/// @brief Check if @p MA can always be hoisted without execution context. +/// Check if @p MA can always be hoisted without execution context. static bool canAlwaysBeHoisted(MemoryAccess *MA, bool StmtInvalidCtxIsEmpty, bool MAInvalidCtxIsEmpty, bool NonHoistableCtxIsEmpty) { @@ -4038,8 +4041,8 @@ struct MapToDimensionDataTy { isl_union_pw_multi_aff *Res; }; -// @brief Create a function that maps the elements of 'Set' to its N-th -// dimension and add it to User->Res. +// Create a function that maps the elements of 'Set' to its N-th dimension and +// add it to User->Res. // // @param Set The input set. // @param User->N The dimension to map to. @@ -4065,8 +4068,8 @@ static isl_stat mapToDimension_AddSet(__isl_take isl_set *Set, void *User) { return isl_stat_ok; } -// @brief Create an isl_multi_union_aff that defines an identity mapping -// from the elements of USet to their N-th dimension. +// Create an isl_multi_union_aff that defines an identity mapping from the +// elements of USet to their N-th dimension. // // # Example: // |