Lines Matching refs:MI
60 void pushStack(MachineInstr *MI);
61 MachineInstr *getAccDefMI(MachineInstr *MI) const;
62 unsigned getDefReg(MachineInstr *MI) const;
63 bool hasRAWHazard(unsigned Reg, MachineInstr *MI) const;
64 bool FindMLxHazard(MachineInstr *MI);
65 void ExpandFPMLxInstruction(MachineBasicBlock &MBB, MachineInstr *MI,
78 void MLxExpansion::pushStack(MachineInstr *MI) { in pushStack() argument
79 LastMIs[MIIdx] = MI; in pushStack()
84 MachineInstr *MLxExpansion::getAccDefMI(MachineInstr *MI) const { in getAccDefMI()
87 unsigned Reg = MI->getOperand(1).getReg(); in getAccDefMI()
91 MachineBasicBlock *MBB = MI->getParent(); in getAccDefMI()
114 unsigned MLxExpansion::getDefReg(MachineInstr *MI) const { in getDefReg()
115 unsigned Reg = MI->getOperand(0).getReg(); in getDefReg()
120 MachineBasicBlock *MBB = MI->getParent(); in getDefReg()
138 bool MLxExpansion::hasRAWHazard(unsigned Reg, MachineInstr *MI) const { in hasRAWHazard()
140 const MCInstrDesc &MCID = MI->getDesc(); in hasRAWHazard()
142 if (MI->mayStore()) in hasRAWHazard()
148 return MI->readsRegister(Reg, TRI); in hasRAWHazard()
153 bool MLxExpansion::FindMLxHazard(MachineInstr *MI) { in FindMLxHazard() argument
160 MachineInstr *DefMI = getAccDefMI(MI); in FindMLxHazard()
174 if (IgnoreStall.count(MI)) in FindMLxHazard()
196 if (i <= Limit2 && hasRAWHazard(getDefReg(MI), NextMI)) in FindMLxHazard()
206 MLxExpansion::ExpandFPMLxInstruction(MachineBasicBlock &MBB, MachineInstr *MI, in ExpandFPMLxInstruction() argument
209 unsigned DstReg = MI->getOperand(0).getReg(); in ExpandFPMLxInstruction()
210 bool DstDead = MI->getOperand(0).isDead(); in ExpandFPMLxInstruction()
211 unsigned AccReg = MI->getOperand(1).getReg(); in ExpandFPMLxInstruction()
212 unsigned Src1Reg = MI->getOperand(2).getReg(); in ExpandFPMLxInstruction()
213 unsigned Src2Reg = MI->getOperand(3).getReg(); in ExpandFPMLxInstruction()
214 bool Src1Kill = MI->getOperand(2).isKill(); in ExpandFPMLxInstruction()
215 bool Src2Kill = MI->getOperand(3).isKill(); in ExpandFPMLxInstruction()
216 unsigned LaneImm = HasLane ? MI->getOperand(4).getImm() : 0; in ExpandFPMLxInstruction()
218 ARMCC::CondCodes Pred = (ARMCC::CondCodes)MI->getOperand(NextOp).getImm(); in ExpandFPMLxInstruction()
219 unsigned PredReg = MI->getOperand(++NextOp).getReg(); in ExpandFPMLxInstruction()
225 MachineInstrBuilder MIB = BuildMI(MBB, MI, MI->getDebugLoc(), MCID1, TmpReg) in ExpandFPMLxInstruction()
232 MIB = BuildMI(MBB, MI, MI->getDebugLoc(), MCID2) in ExpandFPMLxInstruction()
245 dbgs() << "Expanding: " << *MI; in ExpandFPMLxInstruction()
247 MachineBasicBlock::iterator MII = MI; in ExpandFPMLxInstruction()
256 MI->eraseFromParent(); in ExpandFPMLxInstruction()
269 MachineInstr *MI = &*MII; in ExpandFPMLxInstructions() local
271 if (MI->isLabel() || MI->isImplicitDef() || MI->isCopy()) { in ExpandFPMLxInstructions()
276 const MCInstrDesc &MCID = MI->getDesc(); in ExpandFPMLxInstructions()
277 if (MI->isBarrier()) { in ExpandFPMLxInstructions()
296 !FindMLxHazard(MI)) in ExpandFPMLxInstructions()
297 pushStack(MI); in ExpandFPMLxInstructions()
299 ExpandFPMLxInstruction(MBB, MI, MulOpc, AddSubOpc, NegAcc, HasLane); in ExpandFPMLxInstructions()