Lines Matching refs:CmpInstr

1423     MachineInstr &CmpInstr, Register SrcReg, Register SrcReg2, int64_t CmpMask,  in optimizeCompareInstr()  argument
1425 assert(CmpInstr.getParent()); in optimizeCompareInstr()
1429 int DeadNZCVIdx = CmpInstr.findRegisterDefOperandIdx(AArch64::NZCV, true); in optimizeCompareInstr()
1431 if (CmpInstr.definesRegister(AArch64::WZR) || in optimizeCompareInstr()
1432 CmpInstr.definesRegister(AArch64::XZR)) { in optimizeCompareInstr()
1433 CmpInstr.eraseFromParent(); in optimizeCompareInstr()
1436 unsigned Opc = CmpInstr.getOpcode(); in optimizeCompareInstr()
1437 unsigned NewOpc = convertToNonFlagSettingOpc(CmpInstr); in optimizeCompareInstr()
1441 CmpInstr.setDesc(MCID); in optimizeCompareInstr()
1442 CmpInstr.removeOperand(DeadNZCVIdx); in optimizeCompareInstr()
1443 bool succeeded = UpdateOperandRegClass(CmpInstr); in optimizeCompareInstr()
1449 if (CmpInstr.getOpcode() == AArch64::PTEST_PP) in optimizeCompareInstr()
1450 return optimizePTestInstr(&CmpInstr, SrcReg, SrcReg2, MRI); in optimizeCompareInstr()
1456 if (!MRI->use_nodbg_empty(CmpInstr.getOperand(0).getReg())) in optimizeCompareInstr()
1459 if (CmpValue == 0 && substituteCmpToZero(CmpInstr, SrcReg, *MRI)) in optimizeCompareInstr()
1462 removeCmpToZeroOrOne(CmpInstr, SrcReg, CmpValue, *MRI); in optimizeCompareInstr()
1614 llvm::examineCFlagsUse(MachineInstr &MI, MachineInstr &CmpInstr, in examineCFlagsUse() argument
1617 MachineBasicBlock *CmpParent = CmpInstr.getParent(); in examineCFlagsUse()
1626 std::next(CmpInstr.getIterator()), CmpParent->instr_end())) { in examineCFlagsUse()
1660 static bool canInstrSubstituteCmpInstr(MachineInstr &MI, MachineInstr &CmpInstr, in canInstrSubstituteCmpInstr() argument
1664 const unsigned CmpOpcode = CmpInstr.getOpcode(); in canInstrSubstituteCmpInstr()
1668 Optional<UsedNZCV> NZVCUsed = examineCFlagsUse(MI, CmpInstr, TRI); in canInstrSubstituteCmpInstr()
1675 return !areCFlagsAccessedBetweenInstrs(&MI, &CmpInstr, &TRI, AccessToCheck); in canInstrSubstituteCmpInstr()
1683 MachineInstr &CmpInstr, unsigned SrcReg, in substituteCmpToZero() argument
1696 if (!canInstrSubstituteCmpInstr(*MI, CmpInstr, TRI)) in substituteCmpToZero()
1701 CmpInstr.eraseFromParent(); in substituteCmpToZero()
1713 static bool canCmpInstrBeRemoved(MachineInstr &MI, MachineInstr &CmpInstr, in canCmpInstrBeRemoved() argument
1742 const unsigned CmpOpcode = CmpInstr.getOpcode(); in canCmpInstrBeRemoved()
1755 examineCFlagsUse(MI, CmpInstr, TRI, &CCUseInstrs); in canCmpInstrBeRemoved()
1769 if (areCFlagsAccessedBetweenInstrs(&MI, &CmpInstr, &TRI, AK_Write)) in canCmpInstrBeRemoved()
1808 MachineInstr &CmpInstr, unsigned SrcReg, int CmpValue, in removeCmpToZeroOrOne() argument
1816 if (!canCmpInstrBeRemoved(*MI, CmpInstr, CmpValue, TRI, CCUseInstrs, in removeCmpToZeroOrOne()
1820 CmpInstr.eraseFromParent(); in removeCmpToZeroOrOne()