Lines Matching refs:Compare
85 bool convertToBRCT(MachineInstr &MI, MachineInstr &Compare,
87 bool convertToLoadAndTrap(MachineInstr &MI, MachineInstr &Compare,
89 bool convertToLoadAndTest(MachineInstr &MI, MachineInstr &Compare,
91 bool adjustCCMasksForInstr(MachineInstr &MI, MachineInstr &Compare,
94 bool optimizeCompareZero(MachineInstr &Compare,
96 bool fuseCompareOperations(MachineInstr &Compare,
179 static unsigned getCompareSourceReg(MachineInstr &Compare) { in getCompareSourceReg() argument
181 if (Compare.isCompare()) in getCompareSourceReg()
182 reg = Compare.getOperand(0).getReg(); in getCompareSourceReg()
183 else if (isLoadAndTestAsCmp(Compare)) in getCompareSourceReg()
184 reg = Compare.getOperand(1).getReg(); in getCompareSourceReg()
194 MachineInstr &MI, MachineInstr &Compare, in convertToBRCT() argument
222 unsigned SrcReg = getCompareSourceReg(Compare); in convertToBRCT()
223 MachineBasicBlock::iterator MBBI = Compare, MBBE = Branch; in convertToBRCT()
248 MachineInstr &MI, MachineInstr &Compare, in convertToLoadAndTrap() argument
266 unsigned SrcReg = getCompareSourceReg(Compare); in convertToLoadAndTrap()
267 MachineBasicBlock::iterator MBBI = Compare, MBBE = Branch; in convertToLoadAndTrap()
288 MachineInstr &MI, MachineInstr &Compare, in convertToLoadAndTest() argument
293 if (!Opcode || !adjustCCMasksForInstr(MI, Compare, CCUsers, Opcode)) in convertToLoadAndTest()
313 MachineInstr &MI, MachineInstr &Compare, in adjustCCMasksForInstr() argument
324 unsigned CompareFlags = Compare.getDesc().TSFlags; in adjustCCMasksForInstr()
389 if (MBBI == Compare) { in adjustCCMasksForInstr()
396 MachineBasicBlock::iterator MBBI = MI, MBBE = Compare; in adjustCCMasksForInstr()
405 static bool isCompareZero(MachineInstr &Compare) { in isCompareZero() argument
406 switch (Compare.getOpcode()) { in isCompareZero()
413 if (isLoadAndTestAsCmp(Compare)) in isCompareZero()
415 return Compare.getNumExplicitOperands() == 2 && in isCompareZero()
416 Compare.getOperand(1).isImm() && Compare.getOperand(1).getImm() == 0; in isCompareZero()
425 MachineInstr &Compare, SmallVectorImpl<MachineInstr *> &CCUsers) { in optimizeCompareZero() argument
426 if (!isCompareZero(Compare)) in optimizeCompareZero()
430 unsigned SrcReg = getCompareSourceReg(Compare); in optimizeCompareZero()
431 MachineBasicBlock &MBB = *Compare.getParent(); in optimizeCompareZero()
435 std::next(MachineBasicBlock::reverse_iterator(&Compare)), in optimizeCompareZero()
443 if (convertToBRCT(MI, Compare, CCUsers)) { in optimizeCompareZero()
447 if (convertToLoadAndTrap(MI, Compare, CCUsers)) { in optimizeCompareZero()
453 if ((!CCRefs && convertToLoadAndTest(MI, Compare, CCUsers)) || in optimizeCompareZero()
454 (!CCRefs.Def && adjustCCMasksForInstr(MI, Compare, CCUsers))) { in optimizeCompareZero()
471 std::next(MachineBasicBlock::iterator(&Compare)), MBBE = MBB.end(); in optimizeCompareZero()
476 if (convertToLoadAndTest(MI, Compare, CCUsers)) { in optimizeCompareZero()
493 MachineInstr &Compare, SmallVectorImpl<MachineInstr *> &CCUsers) { in fuseCompareOperations() argument
518 TII->getFusedCompare(Compare.getOpcode(), Type, &Compare); in fuseCompareOperations()
526 unsigned SrcReg = Compare.getOperand(0).getReg(); in fuseCompareOperations()
528 Compare.getOperand(1).isReg() ? Compare.getOperand(1).getReg() : 0; in fuseCompareOperations()
529 MachineBasicBlock::iterator MBBI = Compare, MBBE = Branch; in fuseCompareOperations()
566 MIB.add(Compare.getOperand(I)); in fuseCompareOperations()
581 MBBI = Compare; in fuseCompareOperations()