Home | History | Annotate | Download | only in Vectorize

Lines Matching defs:Bundle

452   /// the bundle
593 /// instruction bundle (= a group of instructions which is combined into a
620 /// Returns true for single instructions and for bundle representatives
621 /// (= the head of a bundle).
624 /// Returns true if it represents an instruction bundle and not only a
639 /// the whole bundle.
676 /// Points to the head in an instruction bundle (and always to this for
680 /// Single linked list of all instructions in a bundle. Null if it is a
707 /// instructions. As soon as this is zero, the instruction/bundle gets ready
712 /// The sum of UnscheduledDeps in a bundle. Equals to UnscheduledDeps for
788 "already scheduled bundle gets ready");
800 "already scheduled bundle gets ready");
821 /// Checks if a bundle of instructions can be scheduled, i.e. has no
839 /// Updates the dependency information of a bundle and of all instructions/
840 /// bundles which depend on the original bundle.
1049 DEBUG(dbgs() << "SLP: \tChecking bundle: " << *VL[i] << ".\n");
1060 // Check that none of the instructions in the bundle are already in the tree.
1088 DEBUG(dbgs() << "SLP: bundle in unreachable block.\n");
1093 // Check that every instructions appears once in this bundle.
1097 DEBUG(dbgs() << "SLP: Scalar used twice in bundle.\n");
1109 DEBUG(dbgs() << "SLP: We are not able to schedule this bundle!\n");
1116 DEBUG(dbgs() << "SLP: We are able to schedule this bundle.\n");
1787 DEBUG(dbgs() << "SLP: Adding cost " << C << " for bundle that starts with "
2743 // Groups the instructions to a bundle (which is then a single scheduling entity)
2744 // and schedules instructions until the bundle gets ready.
2750 // Initialize the instruction bundle.
2753 ScheduleData *Bundle = nullptr;
2755 DEBUG(dbgs() << "SLP: bundle: " << *VL[0] << "\n");
2758 // instructions of the bundle.
2767 "no ScheduleData for bundle member (maybe not in same basic block)");
2769 // A bundle member was scheduled as single instruction before and now
2770 // needs to be scheduled as part of the bundle. We just get rid of the
2777 "bundle member already part of other bundle");
2781 Bundle = BundleMember;
2784 Bundle->UnscheduledDepsInBundle += BundleMember->UnscheduledDeps;
2786 // Group the instructions to a bundle.
2787 BundleMember->FirstInBundle = Bundle;
2792 // new region for the first bundle). This makes it necessary to
2795 // initial bundle to the region.
2807 DEBUG(dbgs() << "SLP: try schedule bundle " << *Bundle << " in block "
2810 calculateDependencies(Bundle, true, SLP);
2812 // Now try to schedule the new bundle. As soon as the bundle is "ready" it
2814 // Note that's important that we don't "schedule" the bundle yet (see
2816 while (!Bundle->isReady() && !ReadyInsts.empty()) {
2825 if (!Bundle->isReady()) {
2836 ScheduleData *Bundle = getScheduleData(VL[0]);
2837 DEBUG(dbgs() << "SLP: cancel scheduling of " << *Bundle << "\n");
2838 assert(!Bundle->IsScheduled &&
2839 "Can't cancel bundle which is already scheduled");
2840 assert(Bundle->isSchedulingEntity() && Bundle->isPartOfBundle() &&
2841 "tried to unbundle something which is not a bundle");
2843 // Un-bundle: make single instructions out of the bundle.
2844 ScheduleData *BundleMember = Bundle;
2846 assert(BundleMember->FirstInBundle == Bundle && "corrupt bundle links");
2862 assert(I && "bundle member must be an instruction");
2988 // This lets the instruction/bundle never be scheduled and
3104 "scheduler and vectorizer have different opinion on what is a bundle");
3334 // Move to the next bundle.
3544 // Move to the next bundle.