Lines Matching refs:MBB

47   bool expandMBB(MachineBasicBlock &MBB);
48 bool expandMI(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
50 bool expandAtomicBinOp(MachineBasicBlock &MBB,
54 bool expandAtomicMinMaxOp(MachineBasicBlock &MBB,
58 bool expandAtomicCmpXchg(MachineBasicBlock &MBB,
69 for (auto &MBB : MF)
70 Modified |= expandMBB(MBB);
74 bool LoongArchExpandAtomicPseudo::expandMBB(MachineBasicBlock &MBB) {
77 MachineBasicBlock::iterator MBBI = MBB.begin(), E = MBB.end();
80 Modified |= expandMI(MBB, MBBI, NMBBI);
88 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
92 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Xchg, true, 32,
95 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Xchg, false, 32,
98 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Add, true, 32, NextMBBI);
100 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Sub, true, 32, NextMBBI);
102 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 32,
105 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 64,
108 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, true, 32,
111 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Add, false, 32,
114 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Sub, false, 32,
117 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::And, false, 32,
120 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Or, false, 32, NextMBBI);
122 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Xor, false, 32,
125 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::UMax, true, 32,
128 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::UMin, true, 32,
131 return expandAtomicCmpXchg(MBB, MBBI, false, 32, NextMBBI);
133 return expandAtomicCmpXchg(MBB, MBBI, false, 64, NextMBBI);
135 return expandAtomicCmpXchg(MBB, MBBI, true, 32, NextMBBI);
137 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::Max, true, 32,
140 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::Min, true, 32,
219 MachineBasicBlock *MBB, Register DestReg,
227 BuildMI(MBB, DL, TII->get(LoongArch::XOR), ScratchReg)
230 BuildMI(MBB, DL, TII->get(LoongArch::AND), ScratchReg)
233 BuildMI(MBB, DL, TII->get(LoongArch::XOR), DestReg)
301 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
307 MachineFunction *MF = MBB.getParent();
308 auto LoopMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
309 auto DoneMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
312 MF->insert(++MBB.getIterator(), LoopMBB);
318 DoneMBB->splice(DoneMBB->end(), &MBB, MI, MBB.end());
319 DoneMBB->transferSuccessors(&MBB);
320 MBB.addSuccessor(LoopMBB);
323 doMaskedAtomicBinOpExpansion(TII, MI, DL, &MBB, LoopMBB, DoneMBB, BinOp,
326 doAtomicBinOpExpansion(TII, MI, DL, &MBB, LoopMBB, DoneMBB, BinOp, Width);
328 NextMBBI = MBB.end();
339 MachineBasicBlock *MBB, Register ValReg,
341 BuildMI(MBB, DL, TII->get(LoongArch::SLL_W), ValReg)
344 BuildMI(MBB, DL, TII->get(LoongArch::SRA_W), ValReg)
350 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
359 MachineFunction *MF = MBB.getParent();
360 auto LoopHeadMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
361 auto LoopIfBodyMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
362 auto LoopTailMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
363 auto DoneMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
366 MF->insert(++MBB.getIterator(), LoopHeadMBB);
377 DoneMBB->splice(DoneMBB->end(), &MBB, MI, MBB.end());
378 DoneMBB->transferSuccessors(&MBB);
379 MBB.addSuccessor(LoopHeadMBB);
457 NextMBBI = MBB.end();
470 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, bool IsMasked,
474 MachineFunction *MF = MBB.getParent();
475 auto LoopHeadMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
476 auto LoopTailMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
477 auto TailMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
478 auto DoneMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock());
481 MF->insert(++MBB.getIterator(), LoopHeadMBB);
492 DoneMBB->splice(DoneMBB->end(), &MBB, MI, MBB.end());
493 DoneMBB->transferSuccessors(&MBB);
494 MBB.addSuccessor(LoopHeadMBB);
593 NextMBBI = MBB.end();