Lines Matching refs:CmpInstr

1516     MachineInstr &CmpInstr, Register SrcReg, Register SrcReg2, int64_t CmpMask,  in optimizeCompareInstr()  argument
1518 assert(CmpInstr.getParent()); in optimizeCompareInstr()
1522 int DeadNZCVIdx = CmpInstr.findRegisterDefOperandIdx(AArch64::NZCV, true); in optimizeCompareInstr()
1524 if (CmpInstr.definesRegister(AArch64::WZR) || in optimizeCompareInstr()
1525 CmpInstr.definesRegister(AArch64::XZR)) { in optimizeCompareInstr()
1526 CmpInstr.eraseFromParent(); in optimizeCompareInstr()
1529 unsigned Opc = CmpInstr.getOpcode(); in optimizeCompareInstr()
1530 unsigned NewOpc = convertToNonFlagSettingOpc(CmpInstr); in optimizeCompareInstr()
1534 CmpInstr.setDesc(MCID); in optimizeCompareInstr()
1535 CmpInstr.removeOperand(DeadNZCVIdx); in optimizeCompareInstr()
1536 bool succeeded = UpdateOperandRegClass(CmpInstr); in optimizeCompareInstr()
1542 if (CmpInstr.getOpcode() == AArch64::PTEST_PP || in optimizeCompareInstr()
1543 CmpInstr.getOpcode() == AArch64::PTEST_PP_ANY) in optimizeCompareInstr()
1544 return optimizePTestInstr(&CmpInstr, SrcReg, SrcReg2, MRI); in optimizeCompareInstr()
1550 if (!MRI->use_nodbg_empty(CmpInstr.getOperand(0).getReg())) in optimizeCompareInstr()
1553 if (CmpValue == 0 && substituteCmpToZero(CmpInstr, SrcReg, *MRI)) in optimizeCompareInstr()
1556 removeCmpToZeroOrOne(CmpInstr, SrcReg, CmpValue, *MRI); in optimizeCompareInstr()
1708 llvm::examineCFlagsUse(MachineInstr &MI, MachineInstr &CmpInstr, in examineCFlagsUse() argument
1711 MachineBasicBlock *CmpParent = CmpInstr.getParent(); in examineCFlagsUse()
1720 std::next(CmpInstr.getIterator()), CmpParent->instr_end())) { in examineCFlagsUse()
1756 static bool canInstrSubstituteCmpInstr(MachineInstr &MI, MachineInstr &CmpInstr, in canInstrSubstituteCmpInstr() argument
1762 const unsigned CmpOpcode = CmpInstr.getOpcode(); in canInstrSubstituteCmpInstr()
1766 assert((CmpInstr.getOperand(2).isImm() && in canInstrSubstituteCmpInstr()
1767 CmpInstr.getOperand(2).getImm() == 0) && in canInstrSubstituteCmpInstr()
1770 std::optional<UsedNZCV> NZVCUsed = examineCFlagsUse(MI, CmpInstr, TRI); in canInstrSubstituteCmpInstr()
1786 return !areCFlagsAccessedBetweenInstrs(&MI, &CmpInstr, &TRI, AccessToCheck); in canInstrSubstituteCmpInstr()
1794 MachineInstr &CmpInstr, unsigned SrcReg, in substituteCmpToZero() argument
1807 if (!canInstrSubstituteCmpInstr(*MI, CmpInstr, TRI)) in substituteCmpToZero()
1812 CmpInstr.eraseFromParent(); in substituteCmpToZero()
1824 static bool canCmpInstrBeRemoved(MachineInstr &MI, MachineInstr &CmpInstr, in canCmpInstrBeRemoved() argument
1853 const unsigned CmpOpcode = CmpInstr.getOpcode(); in canCmpInstrBeRemoved()
1866 examineCFlagsUse(MI, CmpInstr, TRI, &CCUseInstrs); in canCmpInstrBeRemoved()
1880 if (areCFlagsAccessedBetweenInstrs(&MI, &CmpInstr, &TRI, AK_Write)) in canCmpInstrBeRemoved()
1919 MachineInstr &CmpInstr, unsigned SrcReg, int CmpValue, in removeCmpToZeroOrOne() argument
1927 if (!canCmpInstrBeRemoved(*MI, CmpInstr, CmpValue, TRI, CCUseInstrs, in removeCmpToZeroOrOne()
1931 CmpInstr.eraseFromParent(); in removeCmpToZeroOrOne()