Lines Matching defs:FlattenInfo
114 struct FlattenInfo { struct
115 Loop *OuterLoop = nullptr; // The loop pair to be flattened.
116 Loop *InnerLoop = nullptr;
118 PHINode *InnerInductionPHI = nullptr; // These PHINodes correspond to loop
119 PHINode *OuterInductionPHI = nullptr; // induction variables, which are
123 Value *InnerTripCount = nullptr; // The product of these two tripcounts
124 Value *OuterTripCount = nullptr; // will be the new flattened loop
128 SmallPtrSet<Value *, 4> LinearIVUses; // Contains the linear expressions
132 BinaryOperator *InnerIncrement = nullptr; // Uses of induction variables in
133 BinaryOperator *OuterIncrement = nullptr; // loop control statements that
134 BranchInst *InnerBranch = nullptr; // are safe to ignore.
136 BranchInst *OuterBranch = nullptr; // The instruction that needs to be
139 SmallPtrSet<PHINode *, 4> InnerPHIsToTransform;
141 bool Widened = false; // Whether this holds the flatten info before or after
144 PHINode *NarrowInnerInductionPHI = nullptr; // Holds the old/narrow induction
145 PHINode *NarrowOuterInductionPHI = nullptr; // phis, i.e. the Phis before IV
149 Value *NewTripCount = nullptr; // The tripcount of the flattened loop.
151 FlattenInfo(Loop *OL, Loop *IL) : OuterLoop(OL), InnerLoop(IL){}; in FlattenInfo() argument
153 bool isNarrowInductionPhi(PHINode *Phi) { in isNarrowInductionPhi()
159 bool isInnerLoopIncrement(User *U) { in isInnerLoopIncrement()
162 bool isOuterLoopIncrement(User *U) { in isOuterLoopIncrement()
165 bool isInnerLoopTest(User *U) { in isInnerLoopTest()
169 bool checkOuterInductionPhiUsers(SmallPtrSet<Value *, 4> &ValidOuterPHIUses) { in checkOuterInductionPhiUsers()
198 bool matchLinearIVUser(User *U, Value *InnerTripCount, in matchLinearIVUser()
263 bool checkInnerInductionPhiUsers(SmallPtrSet<Value *, 4> &ValidOuterPHIUses) { in checkInnerInductionPhiUsers()