Lines Matching full:partition
120 /// Maintains the set of instructions of the loop for a partition before
131 /// Returns whether this partition contains a dependence cycle.
134 /// Adds an instruction to this partition.
144 /// Moves this partition into \p Other. This partition becomes empty
152 /// Populates the partition with a transitive closure of all the
188 /// The cloned loop. If this partition is mapped to the original loop,
192 /// Returns the loop where this partition ends up after distribution.
193 /// If this partition is mapped to the original loop then use the block from
208 /// Based on the set of instructions selected for this partition,
247 /// Instructions from OrigLoop selected for this partition.
250 /// Whether this partition contains a dependence cycle.
256 /// The cloned loop. If this partition is mapped to the original loop,
261 /// partition is mapped to the original loop, this is empty.
265 /// finalized. If this partition is mapped to the original loop, these are not
282 /// Adds \p Inst into the current partition if that is marked to
283 /// contain cycles. Otherwise start a new partition for it.
285 // If the current partition is non-cyclic. Start a new one. in addToCyclicPartition()
292 /// Adds \p Inst into a partition that is not marked to contain
304 /// partition. We could later allow more distribution among these partition
311 /// If a partition contains only conditional stores, we won't vectorize
312 /// it. Try to merge it with a previous cyclic partition.
314 mergeAdjacentPartitionsIf([&](const InstPartition *Partition) { in mergeNonIfConvertible() argument
315 if (Partition->hasDepCycle()) in mergeNonIfConvertible()
318 // Now, check if all stores are conditional in this partition. in mergeNonIfConvertible()
321 for (auto *Inst : *Partition) in mergeNonIfConvertible()
412 for (const auto &Partition : PartitionContainer) { in setupPartitionIdOnInstructions() local
413 for (Instruction *Inst : Partition) { in setupPartitionIdOnInstructions()
426 /// Populates the partition with everything that the seeding
454 // Create a loop for each partition except the last. Clone the original in cloneLoops()
487 for (auto &Partition : PartitionContainer) in removeUnusedInsts() local
488 Partition.removeUnusedInsts(); in removeUnusedInsts()
508 int &Partition = PtrToPartitions[I]; in computePartitionSetForPointers() local
510 Partition = -2; in computePartitionSetForPointers()
515 if (Partition == -2) in computePartitionSetForPointers()
516 Partition = ThisPartition; in computePartitionSetForPointers()
518 else if (Partition == -1) in computePartitionSetForPointers()
520 else if (Partition != (int)ThisPartition) in computePartitionSetForPointers()
521 Partition = -1; in computePartitionSetForPointers()
523 assert(Partition != -2 && "Pointer not belonging to any partition"); in computePartitionSetForPointers()
532 OS << "LDist: Partition " << Index++ << ":"; in print()
550 OS << "LDist: Partition " << Index++ << ":"; in printBlocks()
561 /// Mapping from Instruction to partition Id. If the instruction
589 /// Assign new LoopIDs for the partition's cloned loop.
695 // with unsafe dependences into "cyclic" partition otherwise put each store in processLoop()
696 // in its own "non-cyclic" partition (we'll merge these later). in processLoop()
700 // included in the same cyclic partition as the dependent operations. This in processLoop()
710 // we just keep assigning to the same cyclic partition until in processLoop()
733 // partition uses a load we will merge this partition with the original in processLoop()
734 // partition of the load that we set up in the previous loop (see in processLoop()
758 // partition that we set up in the MemoryInstructionDependences loop. in processLoop()
829 // Create identical copies of the original loop for each partition and hook in processLoop()
834 // partition. in processLoop()
895 /// Filter out checks between pointers from the same partition.
897 /// \p PtrToPartition contains the partition number for pointers. Partition