Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:split

33                 "Split virtual regists across loop boundaries.", false, false)
39 "Split virtual regists across loop boundaries.", false, false)
59 "Cannot split physical registers.");
79 assert(valid && "Attempt to apply invalid split.");
574 assert(splitBlock != 0 && "Failed to create split block.");
599 "Split-block parent doesn't contain original loop?");
705 void LoopSplitter::processHeader(LoopSplit &split) {
706 MachineBasicBlock &header = *split.getLoop().getHeader();
709 if (!lis->isLiveInToMBB(split.getLI(), &header))
712 MachineBasicBlock *preHeader = split.getLoop().getLoopPreheader();
715 if (!canInsertPreHeader(split.getLoop())) {
716 split.invalidate();
723 if (lis->isLiveOutOfMBB(split.getLI(), *predItr)) {
724 split.splitIncoming();
728 } else if (lis->isLiveOutOfMBB(split.getLI(), preHeader)) {
729 split.splitIncoming();
733 void LoopSplitter::processLoopExits(LoopSplit &split) {
736 split.getLoop().getExitEdges(exitEdges);
746 split.getLI().getLiveRangeContaining(lis->getMBBStartIdx(exitEdge.second));
750 split.invalidate();
754 split.splitOutgoing(exitEdge);
759 void LoopSplitter::processLoopUses(LoopSplit &split) {
763 rItr = mri->reg_begin(split.getLI().reg),
767 if (split.getLoop().contains(&instr) && processed.count(&instr) == 0) {
768 split.addLoopInstr(&instr);
780 "Attempt to split physical register.");
782 LoopSplit split(*this, li, loop);
783 processHeader(split);
784 if (split.isValid())
785 processLoopExits(split);
786 if (split.isValid())
787 processLoopUses(split);
788 if (split.isValid() /* && split.isWorthwhile() */) {
789 split.apply();
809 // Couldn't split over outer loop, schedule sub-loops to be checked.