Lines Matching refs:Hi

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);
85 bool RISCVMergeBaseOffsetOpt::detectFoldable(MachineInstr &Hi, in INITIALIZE_PASS()
87 if (Hi.getOpcode() != RISCV::LUI && Hi.getOpcode() != RISCV::AUIPC) in INITIALIZE_PASS()
90 const MachineOperand &HiOp1 = Hi.getOperand(1); in INITIALIZE_PASS()
92 Hi.getOpcode() == RISCV::AUIPC ? RISCVII::MO_PCREL_HI : RISCVII::MO_HI; in INITIALIZE_PASS()
100 Register HiDestReg = Hi.getOperand(0).getReg(); in INITIALIZE_PASS()
109 if (Hi.getOpcode() == RISCV::LUI) { in INITIALIZE_PASS()
115 assert(Hi.getOpcode() == RISCV::AUIPC); in INITIALIZE_PASS()
138 void RISCVMergeBaseOffsetOpt::foldOffset(MachineInstr &Hi, MachineInstr &Lo, in foldOffset() argument
142 Hi.getOperand(1).setOffset(Offset); in foldOffset()
143 if (Hi.getOpcode() != RISCV::AUIPC) in foldOffset()
151 << " " << Hi << " " << Lo;); in foldOffset()
174 bool RISCVMergeBaseOffsetOpt::foldLargeOffset(MachineInstr &Hi, in foldLargeOffset() argument
201 foldOffset(Hi, Lo, TailAdd, OffLo); in foldLargeOffset()
222 foldOffset(Hi, Lo, TailAdd, Offset); in foldLargeOffset()
231 foldOffset(Hi, Lo, TailAdd, Offset); in foldLargeOffset()
249 bool RISCVMergeBaseOffsetOpt::foldShiftedOffset(MachineInstr &Hi, in foldShiftedOffset() argument
290 foldOffset(Hi, Lo, TailShXAdd, Offset); in foldShiftedOffset()
295 bool RISCVMergeBaseOffsetOpt::detectAndFoldOffset(MachineInstr &Hi, in detectAndFoldOffset() argument
323 foldOffset(Hi, Lo, TailTail, Offset); in detectAndFoldOffset()
330 foldOffset(Hi, Lo, Tail, Offset); in detectAndFoldOffset()
342 return foldLargeOffset(Hi, Lo, Tail, DestReg); in detectAndFoldOffset()
349 return foldShiftedOffset(Hi, Lo, Tail, DestReg); in detectAndFoldOffset()
355 bool RISCVMergeBaseOffsetOpt::foldIntoMemoryOps(MachineInstr &Hi, in foldIntoMemoryOps() argument
459 int64_t NewOffset = Hi.getOperand(1).getOffset() + *CommonOffset; in foldIntoMemoryOps()
467 Hi.getOperand(1).setOffset(NewOffset); in foldIntoMemoryOps()
469 if (Hi.getOpcode() != RISCV::AUIPC) in foldIntoMemoryOps()
504 MRI->replaceRegWith(Lo.getOperand(0).getReg(), Hi.getOperand(0).getReg()); in foldIntoMemoryOps()
519 for (MachineInstr &Hi : MBB) { in runOnMachineFunction()
521 if (!detectFoldable(Hi, Lo)) in runOnMachineFunction()
523 MadeChange |= detectAndFoldOffset(Hi, *Lo); in runOnMachineFunction()
524 MadeChange |= foldIntoMemoryOps(Hi, *Lo); in runOnMachineFunction()