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,
68 for (auto &MBB : MF) in runOnMachineFunction() local
69 Modified |= expandMBB(MBB); in runOnMachineFunction()
73 bool RISCVExpandAtomicPseudo::expandMBB(MachineBasicBlock &MBB) { in expandMBB() argument
76 MachineBasicBlock::iterator MBBI = MBB.begin(), E = MBB.end(); in expandMBB()
79 Modified |= expandMI(MBB, MBBI, NMBBI); in expandMBB()
86 bool RISCVExpandAtomicPseudo::expandMI(MachineBasicBlock &MBB, in expandMI() argument
94 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 32, in expandMI()
97 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 64, in expandMI()
100 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Xchg, true, 32, in expandMI()
103 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Add, true, 32, NextMBBI); in expandMI()
105 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Sub, true, 32, NextMBBI); in expandMI()
107 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, true, 32, in expandMI()
110 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::Max, true, 32, in expandMI()
113 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::Min, true, 32, in expandMI()
116 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::UMax, true, 32, in expandMI()
119 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::UMin, true, 32, in expandMI()
122 return expandAtomicCmpXchg(MBB, MBBI, false, 32, NextMBBI); in expandMI()
124 return expandAtomicCmpXchg(MBB, MBBI, false, 64, NextMBBI); in expandMI()
126 return expandAtomicCmpXchg(MBB, MBBI, true, 32, NextMBBI); in expandMI()
257 MachineBasicBlock *MBB, Register DestReg, in insertMaskedMerge() argument
267 BuildMI(MBB, DL, TII->get(RISCV::XOR), ScratchReg) in insertMaskedMerge()
270 BuildMI(MBB, DL, TII->get(RISCV::AND), ScratchReg) in insertMaskedMerge()
273 BuildMI(MBB, DL, TII->get(RISCV::XOR), DestReg) in insertMaskedMerge()
342 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, in expandAtomicBinOp() argument
348 MachineFunction *MF = MBB.getParent(); in expandAtomicBinOp()
349 auto LoopMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicBinOp()
350 auto DoneMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicBinOp()
353 MF->insert(++MBB.getIterator(), LoopMBB); in expandAtomicBinOp()
359 DoneMBB->splice(DoneMBB->end(), &MBB, MI, MBB.end()); in expandAtomicBinOp()
360 DoneMBB->transferSuccessors(&MBB); in expandAtomicBinOp()
361 MBB.addSuccessor(LoopMBB); in expandAtomicBinOp()
364 doAtomicBinOpExpansion(TII, MI, DL, &MBB, LoopMBB, DoneMBB, BinOp, Width); in expandAtomicBinOp()
366 doMaskedAtomicBinOpExpansion(TII, MI, DL, &MBB, LoopMBB, DoneMBB, BinOp, in expandAtomicBinOp()
369 NextMBBI = MBB.end(); in expandAtomicBinOp()
380 MachineBasicBlock *MBB, Register ValReg, in insertSext() argument
382 BuildMI(MBB, DL, TII->get(RISCV::SLL), ValReg) in insertSext()
385 BuildMI(MBB, DL, TII->get(RISCV::SRA), ValReg) in insertSext()
391 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, in expandAtomicMinMaxOp() argument
400 MachineFunction *MF = MBB.getParent(); in expandAtomicMinMaxOp()
401 auto LoopHeadMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicMinMaxOp()
402 auto LoopIfBodyMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicMinMaxOp()
403 auto LoopTailMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicMinMaxOp()
404 auto DoneMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicMinMaxOp()
407 MF->insert(++MBB.getIterator(), LoopHeadMBB); in expandAtomicMinMaxOp()
418 DoneMBB->splice(DoneMBB->end(), &MBB, MI, MBB.end()); in expandAtomicMinMaxOp()
419 DoneMBB->transferSuccessors(&MBB); in expandAtomicMinMaxOp()
420 MBB.addSuccessor(LoopHeadMBB); in expandAtomicMinMaxOp()
499 NextMBBI = MBB.end(); in expandAtomicMinMaxOp()
512 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, bool IsMasked, in expandAtomicCmpXchg() argument
516 MachineFunction *MF = MBB.getParent(); in expandAtomicCmpXchg()
517 auto LoopHeadMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicCmpXchg()
518 auto LoopTailMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicCmpXchg()
519 auto DoneMBB = MF->CreateMachineBasicBlock(MBB.getBasicBlock()); in expandAtomicCmpXchg()
522 MF->insert(++MBB.getIterator(), LoopHeadMBB); in expandAtomicCmpXchg()
531 DoneMBB->splice(DoneMBB->end(), &MBB, MI, MBB.end()); in expandAtomicCmpXchg()
532 DoneMBB->transferSuccessors(&MBB); in expandAtomicCmpXchg()
533 MBB.addSuccessor(LoopHeadMBB); in expandAtomicCmpXchg()
596 NextMBBI = MBB.end(); in expandAtomicCmpXchg()