Lines Matching defs:CRI
389 bool splitBlockOnBinaryCROp(CRLogicalOpInfo &CRI);
587 CRLogicalOpInfo CRI = AllCRLogicalOps[Idx];
588 if (CRI.IsBinary && CRI.ContainedInBlock && CRI.SingleUse && CRI.FeedsBR &&
589 CRI.DefsSingleUse) {
590 Changed = splitBlockOnBinaryCROp(CRI);
614 bool PPCReduceCRLogicals::splitBlockOnBinaryCROp(CRLogicalOpInfo &CRI) {
615 if (CRI.CopyDefs.first == CRI.CopyDefs.second) {
620 if (CRI.TrueDefs.first->isCopy() || CRI.TrueDefs.second->isCopy() ||
621 CRI.TrueDefs.first->isPHI() || CRI.TrueDefs.second->isPHI()) {
629 if (CRI.MI->getOpcode() != PPC::CROR &&
630 CRI.MI->getOpcode() != PPC::CRAND &&
631 CRI.MI->getOpcode() != PPC::CRNOR &&
632 CRI.MI->getOpcode() != PPC::CRNAND &&
633 CRI.MI->getOpcode() != PPC::CRORC &&
634 CRI.MI->getOpcode() != PPC::CRANDC) {
639 LLVM_DEBUG(dbgs() << "Splitting the following CR op:\n"; CRI.dump());
640 MachineBasicBlock::iterator Def1It = CRI.TrueDefs.first;
641 MachineBasicBlock::iterator Def2It = CRI.TrueDefs.second;
645 for (auto E = CRI.MI->getParent()->end(); Def2It != E; ++Def2It) {
654 LLVM_DEBUG(CRI.MI->getParent()->dump());
659 MRI->use_nodbg_begin(CRI.MI->getOperand(0).getReg())->getParent();
668 UsingDef1 ? CRI.TrueDefs.first : CRI.TrueDefs.second;
670 UsingDef1 ? CRI.CopyDefs.first : CRI.CopyDefs.second;
679 MBB->splice(FirstTerminator, MBB, CRI.MI);
681 unsigned Opc = CRI.MI->getOpcode();
687 UsingDef1 ? CRI.CopyDefs.second : CRI.CopyDefs.first;
694 InvertOrigBranch, TargetIsFallThrough, MBPI, CRI.MI,
695 UsingDef1 ? CRI.CopyDefs.first : CRI.CopyDefs.second };
701 CRI.TrueDefs.first && isCRLogical(*CRI.TrueDefs.first);
703 CRI.TrueDefs.second && isCRLogical(*CRI.TrueDefs.second);
705 AllCRLogicalOps.push_back(createCRLogicalOpInfo(*CRI.TrueDefs.first));
707 AllCRLogicalOps.push_back(createCRLogicalOpInfo(*CRI.TrueDefs.second));