Lines Matching refs:RSI
80 bool operator==(const RegSeqInfo &RSI) const { in operator ==()
81 return RSI.Instr == Instr; in operator ==()
95 bool tryMergeUsingCommonSlot(RegSeqInfo &RSI, RegSeqInfo &CompatibleRSI,
97 bool tryMergeUsingFreeSlot(RegSeqInfo &RSI, RegSeqInfo &CompatibleRSI,
103 void trackRSI(const RegSeqInfo &RSI);
179 RegSeqInfo *RSI, const RegSeqInfo *BaseRSI, in RebuildVector() argument
181 unsigned Reg = RSI->Instr->getOperand(0).getReg(); in RebuildVector()
182 MachineBasicBlock::iterator Pos = RSI->Instr; in RebuildVector()
189 for (DenseMap<unsigned, unsigned>::iterator It = RSI->RegToChan.begin(), in RebuildVector()
190 E = RSI->RegToChan.end(); It != E; ++It) { in RebuildVector()
224 RSI->Instr->eraseFromParent(); in RebuildVector()
227 RSI->Instr = Pos; in RebuildVector()
228 RSI->RegToChan = UpdatedRegToChan; in RebuildVector()
229 RSI->UndefReg = UpdatedUndef; in RebuildVector()
274 bool R600VectorRegMerger::tryMergeUsingCommonSlot(RegSeqInfo &RSI, in tryMergeUsingCommonSlot() argument
277 for (MachineInstr::mop_iterator MOp = RSI.Instr->operands_begin(), in tryMergeUsingCommonSlot()
278 MOE = RSI.Instr->operands_end(); MOp != MOE; ++MOp) { in tryMergeUsingCommonSlot()
285 if (RSI == CompatibleRSI) in tryMergeUsingCommonSlot()
287 if (tryMergeVector(&CompatibleRSI, &RSI, RemapChan)) in tryMergeUsingCommonSlot()
294 bool R600VectorRegMerger::tryMergeUsingFreeSlot(RegSeqInfo &RSI, in tryMergeUsingFreeSlot() argument
297 unsigned NeededUndefs = 4 - RSI.UndefReg.size(); in tryMergeUsingFreeSlot()
303 tryMergeVector(&CompatibleRSI, &RSI, RemapChan); in tryMergeUsingFreeSlot()
307 void R600VectorRegMerger::trackRSI(const RegSeqInfo &RSI) { in trackRSI() argument
309 It = RSI.RegToChan.begin(), E = RSI.RegToChan.end(); It != E; ++It) { in trackRSI()
310 PreviousRegSeqByReg[(*It).first].push_back(RSI.Instr); in trackRSI()
312 PreviousRegSeqByUndefCount[RSI.UndefReg.size()].push_back(RSI.Instr); in trackRSI()
313 PreviousRegSeq[RSI.Instr] = RSI; in trackRSI()
342 RegSeqInfo RSI(*MRI, MI); in runOnMachineFunction() local
356 if (tryMergeUsingCommonSlot(RSI, CandidateRSI, RemapChan)) { in runOnMachineFunction()
359 MII = RebuildVector(&RSI, &CandidateRSI, RemapChan); in runOnMachineFunction()
360 trackRSI(RSI); in runOnMachineFunction()
365 if (tryMergeUsingFreeSlot(RSI, CandidateRSI, RemapChan)) { in runOnMachineFunction()
367 MII = RebuildVector(&RSI, &CandidateRSI, RemapChan); in runOnMachineFunction()
368 trackRSI(RSI); in runOnMachineFunction()
372 trackRSI(RSI); in runOnMachineFunction()