Lines Matching defs:Regs
129 static std::string getFrameHelperName(SmallVectorImpl<unsigned> &Regs,
147 for (auto Reg : Regs) {
278 /// Return a unique function if a helper can be formed with the given Regs
305 /// @param Regs callee save regs that the helper will handle
309 SmallVectorImpl<unsigned> &Regs,
312 assert(Regs.size() >= 2);
313 auto Name = getFrameHelperName(Regs, Type, FpOffset);
323 int Size = (int)Regs.size();
328 auto LRIdx = std::distance(Regs.begin(), llvm::find(Regs, AArch64::LR));
333 assert(Regs[Size - 2] != AArch64::LR);
334 emitStore(MF, MBB, MBB.end(), TII, Regs[Size - 2], Regs[Size - 1],
341 if (Regs[I - 1] == AArch64::LR)
343 emitStore(MF, MBB, MBB.end(), TII, Regs[I - 1], Regs[I], Size - I - 1,
369 emitLoad(MF, MBB, MBB.end(), TII, Regs[I], Regs[I + 1], Size - I - 2,
372 emitLoad(MF, MBB, MBB.end(), TII, Regs[Size - 2], Regs[Size - 1], Size,
387 /// @param Regs callee save registers that are saved or restored.
392 SmallVectorImpl<unsigned> &Regs,
395 auto RegCount = Regs.size();
401 if (!llvm::is_contained(Regs, AArch64::LR))
470 SmallVector<unsigned, 8> Regs;
480 Regs.push_back(MO.getReg());
483 int Size = (int)Regs.size();
491 if (shouldUseFrameHelper(MBB, NextMBBI, Regs, FrameHelperType::EpilogTail)) {
494 getOrCreateFrameHelper(M, MMI, Regs, FrameHelperType::EpilogTail);
503 } else if (shouldUseFrameHelper(MBB, NextMBBI, Regs,
507 getOrCreateFrameHelper(M, MMI, Regs, FrameHelperType::Epilog);
515 emitLoad(MF, MBB, MBBI, *TII, Regs[I], Regs[I + 1], Size - I - 2, false);
517 emitLoad(MF, MBB, MBBI, *TII, Regs[Size - 2], Regs[Size - 1], Size, true);
553 SmallVector<unsigned, 8> Regs;
561 LRIdx = Regs.size();
568 Regs.push_back(MO.getReg());
574 int Size = (int)Regs.size();
582 shouldUseFrameHelper(MBB, NextMBBI, Regs, FrameHelperType::PrologFrame)) {
586 M, MMI, Regs, FrameHelperType::PrologFrame, *FpOffset);
593 } else if (!FpOffset && shouldUseFrameHelper(MBB, NextMBBI, Regs,
598 getOrCreateFrameHelper(M, MMI, Regs, FrameHelperType::Prolog);
605 emitStore(MF, MBB, MBBI, *TII, Regs[Size - 2], Regs[Size - 1], -Size, true);
607 emitStore(MF, MBB, MBBI, *TII, Regs[I - 1], Regs[I], Size - I - 1, false);