Lines Matching refs:CRI

389   bool splitBlockOnBinaryCROp(CRLogicalOpInfo &CRI);
586 CRLogicalOpInfo CRI = AllCRLogicalOps[Idx];
587 if (CRI.IsBinary && CRI.ContainedInBlock && CRI.SingleUse && CRI.FeedsBR &&
588 CRI.DefsSingleUse) {
589 Changed = splitBlockOnBinaryCROp(CRI);
613 bool PPCReduceCRLogicals::splitBlockOnBinaryCROp(CRLogicalOpInfo &CRI) {
614 if (CRI.CopyDefs.first == CRI.CopyDefs.second) {
619 if (CRI.TrueDefs.first->isCopy() || CRI.TrueDefs.second->isCopy() ||
620 CRI.TrueDefs.first->isPHI() || CRI.TrueDefs.second->isPHI()) {
628 if (CRI.MI->getOpcode() != PPC::CROR &&
629 CRI.MI->getOpcode() != PPC::CRAND &&
630 CRI.MI->getOpcode() != PPC::CRNOR &&
631 CRI.MI->getOpcode() != PPC::CRNAND &&
632 CRI.MI->getOpcode() != PPC::CRORC &&
633 CRI.MI->getOpcode() != PPC::CRANDC) {
638 LLVM_DEBUG(dbgs() << "Splitting the following CR op:\n"; CRI.dump());
639 MachineBasicBlock::iterator Def1It = CRI.TrueDefs.first;
640 MachineBasicBlock::iterator Def2It = CRI.TrueDefs.second;
644 for (auto E = CRI.MI->getParent()->end(); Def2It != E; ++Def2It) {
653 LLVM_DEBUG(CRI.MI->getParent()->dump());
658 MRI->use_nodbg_begin(CRI.MI->getOperand(0).getReg())->getParent();
667 UsingDef1 ? CRI.TrueDefs.first : CRI.TrueDefs.second;
669 UsingDef1 ? CRI.CopyDefs.first : CRI.CopyDefs.second;
678 MBB->splice(FirstTerminator, MBB, CRI.MI);
680 unsigned Opc = CRI.MI->getOpcode();
686 UsingDef1 ? CRI.CopyDefs.second : CRI.CopyDefs.first;
693 InvertOrigBranch, TargetIsFallThrough, MBPI, CRI.MI,
694 UsingDef1 ? CRI.CopyDefs.first : CRI.CopyDefs.second };
700 CRI.TrueDefs.first && isCRLogical(*CRI.TrueDefs.first);
702 CRI.TrueDefs.second && isCRLogical(*CRI.TrueDefs.second);
704 AllCRLogicalOps.push_back(createCRLogicalOpInfo(*CRI.TrueDefs.first));
706 AllCRLogicalOps.push_back(createCRLogicalOpInfo(*CRI.TrueDefs.second));