Home | History | Annotate | Download | only in Scalar

Lines Matching refs:Partitions

231 /// \brief Holds the set of Partitions.  It populates them, merges them and then
240 /// \brief Returns the number of partitions.
256 // Initially we isolate memory instructions into as many partitions as
262 /// \brief Merges adjacent non-cyclic partitions.
292 /// \brief Merges the partitions according to various heuristics.
299 /// \brief Merges partitions in order to ensure that no loads are duplicated.
305 /// Return if any partitions were merged.
313 // Step through the partitions and create equivalence between partitions
314 // that contain the same load. Also put partitions in between them in the
321 // If a load occurs in two partitions PartI and PartJ, merge all
322 // partitions (PartI, PartJ] into PartI.
331 DEBUG(dbgs() << "Merging partitions due to this load in multiple "
332 << "partitions: " << PartI << ", "
360 // Remove the empty partitions.
367 /// \brief Sets up the mapping between instructions to partitions. If the
368 /// instruction is duplicated across multiple partitions, set the entry to -1.
393 /// the partitions.
404 assert(!PartitionContainer.empty() && "at least two partitions expected");
450 /// partitions its entry is set to -1.
467 // partitions.
471 // -1 means belonging to multiple partitions.
495 const InstPartitionContainer &Partitions) {
496 Partitions.print(OS);
512 /// \brief List of partitions.
516 /// belongs to multiple partitions the entry contains -1.
523 /// \brief The control structure to merge adjacent partitions if both satisfy
622 InstPartitionContainer Partitions(L, LI, DT);
625 // partitions (the order of partitions follows program order). Put those
654 Partitions.addToCyclicPartition(I);
656 Partitions.addToNewNonCyclicPartition(I);
662 // Add partitions for values used outside. These partitions can be out of
669 Partitions.addToNewNonCyclicPartition(Inst);
671 DEBUG(dbgs() << "Seeded partitions:\n" << Partitions);
672 if (Partitions.getSize() < 2)
675 // Run the merge heuristics: Merge non-cyclic adjacent partitions since we
677 Partitions.mergeBeforePopulating();
678 DEBUG(dbgs() << "\nMerged partitions:\n" << Partitions);
679 if (Partitions.getSize() < 2)
682 // Now, populate the partitions with non-memory operations.
683 Partitions.populateUsedSet();
684 DEBUG(dbgs() << "\nPopulated partitions:\n" << Partitions);
688 if (Partitions.mergeToAvoidDuplicatedLoads()) {
690 << Partitions);
691 if (Partitions.getSize() < 2)
703 // We're done forming the partitions set up the reverse mapping from
704 // instructions to partitions.
705 Partitions.setupPartitionIdOnInstructions();
714 auto PtrToPartition = Partitions.computePartitionSetForPointers(*LAI);
732 Partitions.cloneLoops();
736 Partitions.removeUnusedInsts();
738 DEBUG(Partitions.printBlocks());
793 /// number -1 means that the pointer is used in multiple partitions. In this
808 // separate partitions.
818 // pair whose pointers fall into different partitions.)