Lines Matching defs:FusionCandidate
141 /// The invalidate method should be used to indicate that the FusionCandidate is
143 /// be used to ensure that the FusionCandidate is still valid for fusion.
144 struct FusionCandidate {
178 /// determine where the FusionCandidate should be inserted into the set. These
185 FusionCandidate(Loop *L, DominatorTree &DT, const PostDominatorTree *PDT,
361 // are immutable. Thus, any time we need to change/update a FusionCandidate,
395 bool operator()(const FusionCandidate &LHS,
396 const FusionCandidate &RHS) const {
430 // FusionCandidates then, Order of FusionCandidate can be
460 using FusionCandidateSet = std::set<FusionCandidate, FusionCandidateCompare>;
465 const FusionCandidate &FC) {
476 for (const FusionCandidate &FC : CandSet)
656 bool isControlFlowEquivalent(const FusionCandidate &FC0,
657 const FusionCandidate &FC1) const {
671 FusionCandidate CurrCand(L, DT, &PDT, ORE, PP);
713 bool isBeneficialFusion(const FusionCandidate &FC0,
714 const FusionCandidate &FC1) {
727 haveIdenticalTripCounts(const FusionCandidate &FC0,
728 const FusionCandidate &FC1) const {
785 void peelFusionCandidate(FusionCandidate &FC0, const FusionCandidate &FC1,
1020 FusionCandidate FC0Copy = *FC0;
1034 FusionCandidate FusedCand(
1075 const FusionCandidate &FC0) const {
1138 bool canSinkInst(Instruction &I, const FusionCandidate &FC1) const {
1181 const FusionCandidate &FC0, const FusionCandidate &FC1,
1324 bool dependencesAllowFusion(const FusionCandidate &FC0,
1325 const FusionCandidate &FC1, Instruction &I0,
1371 bool dependencesAllowFusion(const FusionCandidate &FC0,
1372 const FusionCandidate &FC1) {
1435 bool isAdjacent(const FusionCandidate &FC0,
1436 const FusionCandidate &FC1) const {
1444 bool isEmptyPreheader(const FusionCandidate &FC) const {
1450 void movePreheaderInsts(const FusionCandidate &FC0,
1451 const FusionCandidate &FC1,
1497 bool haveIdenticalGuards(const FusionCandidate &FC0,
1498 const FusionCandidate &FC1) const {
1520 void simplifyLatchBranch(const FusionCandidate &FC) const {
1534 void mergeLatch(const FusionCandidate &FC0, const FusionCandidate &FC1) {
1571 Loop *performFusion(const FusionCandidate &FC0, const FusionCandidate &FC1) {
1784 void reportLoopFusion(const FusionCandidate &FC0, const FusionCandidate &FC1,
1815 Loop *fuseGuardedLoops(const FusionCandidate &FC0,
1816 const FusionCandidate &FC1) {