Lines Matching refs:Lo

35   bool detectFoldable(MachineInstr &Hi, MachineInstr *&Lo);
37 bool detectAndFoldOffset(MachineInstr &Hi, MachineInstr &Lo);
38 void foldOffset(MachineInstr &Hi, MachineInstr &Lo, MachineInstr &Tail,
40 bool foldLargeOffset(MachineInstr &Hi, MachineInstr &Lo,
42 bool foldShiftedOffset(MachineInstr &Hi, MachineInstr &Lo,
45 bool foldIntoMemoryOps(MachineInstr &Hi, MachineInstr &Lo);
86 MachineInstr *&Lo) { in INITIALIZE_PASS()
104 Lo = &Hi; in INITIALIZE_PASS()
110 Lo = &*MRI->use_instr_begin(HiDestReg); in INITIALIZE_PASS()
111 if (Lo->getOpcode() != RISCV::ADDI) in INITIALIZE_PASS()
115 const MachineOperand &LoOp2 = Lo->getOperand(2); in INITIALIZE_PASS()
145 void RISCVMergeBaseOffsetOpt::foldOffset(MachineInstr &Hi, MachineInstr &Lo, in foldOffset() argument
151 Lo.getOperand(2).setOffset(Offset); in foldOffset()
153 MRI->constrainRegClass(Lo.getOperand(0).getReg(), in foldOffset()
155 MRI->replaceRegWith(Tail.getOperand(0).getReg(), Lo.getOperand(0).getReg()); in foldOffset()
158 << " " << Hi << " " << Lo;); in foldOffset()
182 MachineInstr &Lo, in foldLargeOffset() argument
208 foldOffset(Hi, Lo, TailAdd, OffLo); in foldLargeOffset()
229 foldOffset(Hi, Lo, TailAdd, Offset); in foldLargeOffset()
238 foldOffset(Hi, Lo, TailAdd, Offset); in foldLargeOffset()
257 MachineInstr &Lo, in foldShiftedOffset() argument
297 foldOffset(Hi, Lo, TailShXAdd, Offset); in foldShiftedOffset()
303 MachineInstr &Lo) { in detectAndFoldOffset() argument
304 Register DestReg = Lo.getOperand(0).getReg(); in detectAndFoldOffset()
330 foldOffset(Hi, Lo, TailTail, Offset); in detectAndFoldOffset()
337 foldOffset(Hi, Lo, Tail, Offset); in detectAndFoldOffset()
349 return foldLargeOffset(Hi, Lo, Tail, DestReg); in detectAndFoldOffset()
356 return foldShiftedOffset(Hi, Lo, Tail, DestReg); in detectAndFoldOffset()
363 MachineInstr &Lo) { in foldIntoMemoryOps() argument
364 Register DestReg = Lo.getOperand(0).getReg(); in foldIntoMemoryOps()
483 MachineOperand &ImmOp = Lo.getOperand(2); in foldIntoMemoryOps()
528 if (&Lo == &Hi) in foldIntoMemoryOps()
531 MRI->replaceRegWith(Lo.getOperand(0).getReg(), Hi.getOperand(0).getReg()); in foldIntoMemoryOps()
532 Lo.eraseFromParent(); in foldIntoMemoryOps()
547 MachineInstr *Lo = nullptr; in runOnMachineFunction() local
548 if (!detectFoldable(Hi, Lo)) in runOnMachineFunction()
550 MadeChange |= detectAndFoldOffset(Hi, *Lo); in runOnMachineFunction()
551 MadeChange |= foldIntoMemoryOps(Hi, *Lo); in runOnMachineFunction()