Lines Matching refs:RSI
88 bool operator==(const RegSeqInfo &RSI) const { in operator ==()
89 return RSI.Instr == Instr; in operator ==()
109 bool tryMergeUsingCommonSlot(RegSeqInfo &RSI, RegSeqInfo &CompatibleRSI,
111 bool tryMergeUsingFreeSlot(RegSeqInfo &RSI, RegSeqInfo &CompatibleRSI,
116 void trackRSI(const RegSeqInfo &RSI);
202 RegSeqInfo *RSI, const RegSeqInfo *BaseRSI, in RebuildVector() argument
204 Register Reg = RSI->Instr->getOperand(0).getReg(); in RebuildVector()
205 MachineBasicBlock::iterator Pos = RSI->Instr; in RebuildVector()
212 for (DenseMap<Register, unsigned>::iterator It = RSI->RegToChan.begin(), in RebuildVector()
213 E = RSI->RegToChan.end(); It != E; ++It) { in RebuildVector()
245 RSI->Instr->eraseFromParent(); in RebuildVector()
248 RSI->Instr = NewMI; in RebuildVector()
249 RSI->RegToChan = UpdatedRegToChan; in RebuildVector()
250 RSI->UndefReg = UpdatedUndef; in RebuildVector()
295 bool R600VectorRegMerger::tryMergeUsingCommonSlot(RegSeqInfo &RSI, in tryMergeUsingCommonSlot() argument
298 for (MachineInstr::mop_iterator MOp = RSI.Instr->operands_begin(), in tryMergeUsingCommonSlot()
299 MOE = RSI.Instr->operands_end(); MOp != MOE; ++MOp) { in tryMergeUsingCommonSlot()
306 if (RSI == CompatibleRSI) in tryMergeUsingCommonSlot()
308 if (tryMergeVector(&CompatibleRSI, &RSI, RemapChan)) in tryMergeUsingCommonSlot()
315 bool R600VectorRegMerger::tryMergeUsingFreeSlot(RegSeqInfo &RSI, in tryMergeUsingFreeSlot() argument
318 unsigned NeededUndefs = 4 - RSI.UndefReg.size(); in tryMergeUsingFreeSlot()
324 tryMergeVector(&CompatibleRSI, &RSI, RemapChan); in tryMergeUsingFreeSlot()
328 void R600VectorRegMerger::trackRSI(const RegSeqInfo &RSI) { in trackRSI() argument
330 It = RSI.RegToChan.begin(), E = RSI.RegToChan.end(); It != E; ++It) { in trackRSI()
331 PreviousRegSeqByReg[(*It).first].push_back(RSI.Instr); in trackRSI()
333 PreviousRegSeqByUndefCount[RSI.UndefReg.size()].push_back(RSI.Instr); in trackRSI()
334 PreviousRegSeq[RSI.Instr] = RSI; in trackRSI()
367 RegSeqInfo RSI(*MRI, &MI); in runOnMachineFunction() local
382 if (tryMergeUsingCommonSlot(RSI, CandidateRSI, RemapChan)) { in runOnMachineFunction()
385 MII = RebuildVector(&RSI, &CandidateRSI, RemapChan); in runOnMachineFunction()
386 trackRSI(RSI); in runOnMachineFunction()
391 if (tryMergeUsingFreeSlot(RSI, CandidateRSI, RemapChan)) { in runOnMachineFunction()
393 MII = RebuildVector(&RSI, &CandidateRSI, RemapChan); in runOnMachineFunction()
394 trackRSI(RSI); in runOnMachineFunction()
398 trackRSI(RSI); in runOnMachineFunction()