Lines Matching refs:MBB

58   bool expandMBB(Block &MBB);
59 bool expandMI(Block &MBB, BlockIt MBBI);
60 template <unsigned OP> bool expand(Block &MBB, BlockIt MBBI);
62 MachineInstrBuilder buildMI(Block &MBB, BlockIt MBBI, unsigned Opcode) { in buildMI() argument
63 return BuildMI(MBB, MBBI, MBBI->getDebugLoc(), TII->get(Opcode)); in buildMI()
66 MachineInstrBuilder buildMI(Block &MBB, BlockIt MBBI, unsigned Opcode, in buildMI() argument
68 return BuildMI(MBB, MBBI, MBBI->getDebugLoc(), TII->get(Opcode), DstReg); in buildMI()
71 MachineRegisterInfo &getRegInfo(Block &MBB) { in getRegInfo() argument
72 return MBB.getParent()->getRegInfo(); in getRegInfo()
75 bool expandArith(unsigned OpLo, unsigned OpHi, Block &MBB, BlockIt MBBI);
76 bool expandLogic(unsigned Op, Block &MBB, BlockIt MBBI);
77 bool expandLogicImm(unsigned Op, Block &MBB, BlockIt MBBI);
80 template <typename Func> bool expandAtomic(Block &MBB, BlockIt MBBI, Func f);
83 bool expandAtomicBinaryOp(unsigned Opcode, Block &MBB, BlockIt MBBI, Func f);
85 bool expandAtomicBinaryOp(unsigned Opcode, Block &MBB, BlockIt MBBI);
88 bool expandLSLB7Rd(Block &MBB, BlockIt MBBI);
89 bool expandLSRB7Rd(Block &MBB, BlockIt MBBI);
90 bool expandASRB6Rd(Block &MBB, BlockIt MBBI);
91 bool expandASRB7Rd(Block &MBB, BlockIt MBBI);
94 bool expandLSLW4Rd(Block &MBB, BlockIt MBBI);
95 bool expandLSRW4Rd(Block &MBB, BlockIt MBBI);
96 bool expandASRW7Rd(Block &MBB, BlockIt MBBI);
97 bool expandLSLW8Rd(Block &MBB, BlockIt MBBI);
98 bool expandLSRW8Rd(Block &MBB, BlockIt MBBI);
99 bool expandASRW8Rd(Block &MBB, BlockIt MBBI);
100 bool expandLSLW12Rd(Block &MBB, BlockIt MBBI);
101 bool expandLSRW12Rd(Block &MBB, BlockIt MBBI);
102 bool expandASRW14Rd(Block &MBB, BlockIt MBBI);
103 bool expandASRW15Rd(Block &MBB, BlockIt MBBI);
106 bool expandLPMWELPMW(Block &MBB, BlockIt MBBI, bool IsExt);
114 bool AVRExpandPseudo::expandMBB(MachineBasicBlock &MBB) { in expandMBB() argument
117 BlockIt MBBI = MBB.begin(), E = MBB.end(); in expandMBB()
120 Modified |= expandMI(MBB, MBBI); in expandMBB()
137 for (Block &MBB : MF) { in runOnMachineFunction()
146 bool BlockModified = expandMBB(MBB); in runOnMachineFunction()
157 bool AVRExpandPseudo::expandArith(unsigned OpLo, unsigned OpHi, Block &MBB, in expandArith() argument
170 buildMI(MBB, MBBI, OpLo) in expandArith()
176 buildMI(MBB, MBBI, OpHi) in expandArith()
191 bool AVRExpandPseudo::expandLogic(unsigned Op, Block &MBB, BlockIt MBBI) { in expandLogic() argument
204 buildMI(MBB, MBBI, Op) in expandLogic()
213 buildMI(MBB, MBBI, Op) in expandLogic()
239 bool AVRExpandPseudo::expandLogicImm(unsigned Op, Block &MBB, BlockIt MBBI) { in expandLogicImm() argument
253 buildMI(MBB, MBBI, Op) in expandLogicImm()
264 buildMI(MBB, MBBI, Op) in expandLogicImm()
278 bool AVRExpandPseudo::expand<AVR::ADDWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
279 return expandArith(AVR::ADDRdRr, AVR::ADCRdRr, MBB, MBBI); in expand()
283 bool AVRExpandPseudo::expand<AVR::ADCWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
284 return expandArith(AVR::ADCRdRr, AVR::ADCRdRr, MBB, MBBI); in expand()
288 bool AVRExpandPseudo::expand<AVR::SUBWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
289 return expandArith(AVR::SUBRdRr, AVR::SBCRdRr, MBB, MBBI); in expand()
293 bool AVRExpandPseudo::expand<AVR::SUBIWRdK>(Block &MBB, BlockIt MBBI) { in expand() argument
303 buildMI(MBB, MBBI, AVR::SUBIRdK) in expand()
308 buildMI(MBB, MBBI, AVR::SBCIRdK) in expand()
342 bool AVRExpandPseudo::expand<AVR::SBCWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
343 return expandArith(AVR::SBCRdRr, AVR::SBCRdRr, MBB, MBBI); in expand()
347 bool AVRExpandPseudo::expand<AVR::SBCIWRdK>(Block &MBB, BlockIt MBBI) { in expand() argument
362 buildMI(MBB, MBBI, OpLo) in expand()
371 buildMI(MBB, MBBI, OpHi) in expand()
387 bool AVRExpandPseudo::expand<AVR::ANDWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
388 return expandLogic(AVR::ANDRdRr, MBB, MBBI); in expand()
392 bool AVRExpandPseudo::expand<AVR::ANDIWRdK>(Block &MBB, BlockIt MBBI) { in expand() argument
393 return expandLogicImm(AVR::ANDIRdK, MBB, MBBI); in expand()
397 bool AVRExpandPseudo::expand<AVR::ORWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
398 return expandLogic(AVR::ORRdRr, MBB, MBBI); in expand()
402 bool AVRExpandPseudo::expand<AVR::ORIWRdK>(Block &MBB, BlockIt MBBI) { in expand() argument
403 return expandLogicImm(AVR::ORIRdK, MBB, MBBI); in expand()
407 bool AVRExpandPseudo::expand<AVR::EORWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
408 return expandLogic(AVR::EORRdRr, MBB, MBBI); in expand()
412 bool AVRExpandPseudo::expand<AVR::COMWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
424 buildMI(MBB, MBBI, OpLo) in expand()
432 buildMI(MBB, MBBI, OpHi) in expand()
444 bool AVRExpandPseudo::expand<AVR::NEGWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
455 buildMI(MBB, MBBI, AVR::NEGRd) in expand()
462 buildMI(MBB, MBBI, AVR::NEGRd) in expand()
468 buildMI(MBB, MBBI, AVR::SBCRdRr) in expand()
482 bool AVRExpandPseudo::expand<AVR::CPWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
496 buildMI(MBB, MBBI, OpLo) in expand()
500 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
515 bool AVRExpandPseudo::expand<AVR::CPCWRdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
528 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expand()
535 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
550 bool AVRExpandPseudo::expand<AVR::LDIWRdK>(Block &MBB, BlockIt MBBI) { in expand() argument
560 buildMI(MBB, MBBI, OpLo) in expand()
564 buildMI(MBB, MBBI, OpHi) in expand()
601 bool AVRExpandPseudo::expand<AVR::LDSWRdK>(Block &MBB, BlockIt MBBI) { in expand() argument
611 buildMI(MBB, MBBI, OpLo) in expand()
615 buildMI(MBB, MBBI, OpHi) in expand()
647 bool AVRExpandPseudo::expand<AVR::LDWRdPtr>(Block &MBB, BlockIt MBBI) { in expand() argument
666 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expand()
672 buildMI(MBB, MBBI, AVR::PUSHRr).addReg(TmpReg); in expand()
675 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
682 buildMI(MBB, MBBI, AVR::MOVRdRr, DstHiReg).addReg(TmpReg); in expand()
685 buildMI(MBB, MBBI, AVR::POPRd, DstLoReg); in expand()
696 bool AVRExpandPseudo::expand<AVR::LDWRdPtrPi>(Block &MBB, BlockIt MBBI) { in expand() argument
710 buildMI(MBB, MBBI, OpLo) in expand()
716 buildMI(MBB, MBBI, OpHi) in expand()
729 bool AVRExpandPseudo::expand<AVR::LDWRdPtrPd>(Block &MBB, BlockIt MBBI) { in expand() argument
743 buildMI(MBB, MBBI, OpHi) in expand()
749 buildMI(MBB, MBBI, OpLo) in expand()
762 bool AVRExpandPseudo::expand<AVR::LDDWRdPtrQ>(Block &MBB, BlockIt MBBI) { in expand() argument
786 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expand()
793 buildMI(MBB, MBBI, AVR::PUSHRr).addReg(TmpReg); in expand()
796 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
803 buildMI(MBB, MBBI, AVR::MOVRdRr, DstHiReg).addReg(TmpReg); in expand()
806 buildMI(MBB, MBBI, AVR::POPRd, DstLoReg); in expand()
816 bool AVRExpandPseudo::expandLPMWELPMW(Block &MBB, BlockIt MBBI, bool IsExt) { in expandLPMWELPMW() argument
829 const AVRSubtarget &STI = MBB.getParent()->getSubtarget<AVRSubtarget>(); in expandLPMWELPMW()
832 buildMI(MBB, MBBI, AVR::OUTARr).addImm(STI.getIORegRAMPZ()).addReg(Bank); in expandLPMWELPMW()
843 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expandLPMWELPMW()
849 buildMI(MBB, MBBI, AVR::PUSHRr).addReg(TmpReg); in expandLPMWELPMW()
852 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expandLPMWELPMW()
858 buildMI(MBB, MBBI, AVR::MOVRdRr, DstHiReg).addReg(TmpReg); in expandLPMWELPMW()
861 buildMI(MBB, MBBI, AVR::POPRd, DstLoReg); in expandLPMWELPMW()
872 bool AVRExpandPseudo::expand<AVR::LPMWRdZ>(Block &MBB, BlockIt MBBI) { in expand() argument
873 return expandLPMWELPMW(MBB, MBBI, false); in expand()
877 bool AVRExpandPseudo::expand<AVR::ELPMWRdZ>(Block &MBB, BlockIt MBBI) { in expand() argument
878 return expandLPMWELPMW(MBB, MBBI, true); in expand()
882 bool AVRExpandPseudo::expand<AVR::ELPMBRdZ>(Block &MBB, BlockIt MBBI) { in expand() argument
888 const AVRSubtarget &STI = MBB.getParent()->getSubtarget<AVRSubtarget>(); in expand()
891 buildMI(MBB, MBBI, AVR::OUTARr).addImm(STI.getIORegRAMPZ()).addReg(BankReg); in expand()
894 auto MILB = buildMI(MBB, MBBI, AVR::ELPMRdZ) in expand()
905 bool AVRExpandPseudo::expand<AVR::LPMWRdZPi>(Block &MBB, BlockIt MBBI) { in expand() argument
910 bool AVRExpandPseudo::expand<AVR::ELPMBRdZPi>(Block &MBB, BlockIt MBBI) { in expand() argument
915 bool AVRExpandPseudo::expand<AVR::ELPMWRdZPi>(Block &MBB, BlockIt MBBI) { in expand() argument
920 bool AVRExpandPseudo::expandAtomic(Block &MBB, BlockIt MBBI, Func f) { in expandAtomic() argument
922 const AVRSubtarget &STI = MBB.getParent()->getSubtarget<AVRSubtarget>(); in expandAtomic()
925 buildMI(MBB, MBBI, AVR::INRdA) in expandAtomic()
930 buildMI(MBB, MBBI, AVR::BCLRs).addImm(7); // CLI in expandAtomic()
935 buildMI(MBB, MBBI, AVR::OUTARr) in expandAtomic()
944 bool AVRExpandPseudo::expandAtomicBinaryOp(unsigned Opcode, Block &MBB, in expandAtomicBinaryOp() argument
946 return expandAtomic(MBB, MBBI, [&](MachineInstr &MI) { in expandAtomicBinaryOp()
951 *buildMI(MBB, MBBI, Opcode).add(Op1).add(Op2).getInstr(); in expandAtomicBinaryOp()
956 bool AVRExpandPseudo::expandAtomicBinaryOp(unsigned Opcode, Block &MBB, in expandAtomicBinaryOp() argument
958 return expandAtomicBinaryOp(Opcode, MBB, MBBI, [](MachineInstr &MI) {}); in expandAtomicBinaryOp()
962 MachineBasicBlock &MBB = *MI.getParent(); in scavengeGPR8() local
965 RS.enterBasicBlock(MBB); in scavengeGPR8()
969 TRI->getAllocatableSet(*MBB.getParent(), &AVR::GPR8RegClass); in scavengeGPR8()
987 bool AVRExpandPseudo::expand<AVR::AtomicLoad8>(Block &MBB, BlockIt MBBI) { in expand() argument
988 return expandAtomicBinaryOp(AVR::LDRdPtr, MBB, MBBI); in expand()
992 bool AVRExpandPseudo::expand<AVR::AtomicLoad16>(Block &MBB, BlockIt MBBI) { in expand() argument
993 return expandAtomicBinaryOp(AVR::LDWRdPtr, MBB, MBBI); in expand()
997 bool AVRExpandPseudo::expand<AVR::AtomicStore8>(Block &MBB, BlockIt MBBI) { in expand() argument
998 return expandAtomicBinaryOp(AVR::STPtrRr, MBB, MBBI); in expand()
1002 bool AVRExpandPseudo::expand<AVR::AtomicStore16>(Block &MBB, BlockIt MBBI) { in expand() argument
1003 return expandAtomicBinaryOp(AVR::STWPtrRr, MBB, MBBI); in expand()
1007 bool AVRExpandPseudo::expand<AVR::AtomicFence>(Block &MBB, BlockIt MBBI) { in expand() argument
1014 bool AVRExpandPseudo::expand<AVR::STSWKRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1025 auto MIBHI = buildMI(MBB, MBBI, OpHi); in expand()
1026 auto MIBLO = buildMI(MBB, MBBI, OpLo); in expand()
1060 bool AVRExpandPseudo::expand<AVR::STWPtrRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1072 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expand()
1076 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
1089 bool AVRExpandPseudo::expand<AVR::STWPtrPiRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1103 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expand()
1110 buildMI(MBB, MBBI, OpHi) in expand()
1124 bool AVRExpandPseudo::expand<AVR::STWPtrPdRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1138 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
1145 buildMI(MBB, MBBI, OpLo) in expand()
1159 bool AVRExpandPseudo::expand<AVR::STDWPtrQRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1172 buildMI(MBB, MBBI, AVR::PUSHWRr).addReg(DstReg); in expand()
1175 buildMI(MBB, MBBI, AVR::SUBIWRdK) in expand()
1180 buildMI(MBB, MBBI, AVR::STWPtrRr) in expand()
1185 buildMI(MBB, MBBI, AVR::POPWRd).addDef(DstReg, RegState::Define); in expand()
1193 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expand()
1198 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
1212 bool AVRExpandPseudo::expand<AVR::STDSPQRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1214 const MachineFunction &MF = *MBB.getParent(); in expand()
1231 bool AVRExpandPseudo::expand<AVR::STDWSPQRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1233 const MachineFunction &MF = *MBB.getParent(); in expand()
1250 bool AVRExpandPseudo::expand<AVR::INWRdA>(Block &MBB, BlockIt MBBI) { in expand() argument
1265 buildMI(MBB, MBBI, OpLo) in expand()
1270 buildMI(MBB, MBBI, OpHi) in expand()
1282 bool AVRExpandPseudo::expand<AVR::OUTWARr>(Block &MBB, BlockIt MBBI) { in expand() argument
1297 auto MIBHI = buildMI(MBB, MBBI, OpHi) in expand()
1301 auto MIBLO = buildMI(MBB, MBBI, OpLo) in expand()
1313 bool AVRExpandPseudo::expand<AVR::PUSHWRr>(Block &MBB, BlockIt MBBI) { in expand() argument
1324 buildMI(MBB, MBBI, OpLo) in expand()
1329 buildMI(MBB, MBBI, OpHi) in expand()
1338 bool AVRExpandPseudo::expand<AVR::POPWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1347 buildMI(MBB, MBBI, OpHi, DstHiReg).setMIFlags(Flags); // High in expand()
1348 buildMI(MBB, MBBI, OpLo, DstLoReg).setMIFlags(Flags); // Low in expand()
1355 bool AVRExpandPseudo::expand<AVR::ROLBRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1374 buildMI(MBB, MBBI, OpShift) in expand()
1380 auto MIB = buildMI(MBB, MBBI, OpCarry) in expand()
1393 bool AVRExpandPseudo::expand<AVR::RORBRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1408 buildMI(MBB, MBBI, AVR::BST).addReg(DstReg).addImm(0); in expand()
1411 buildMI(MBB, MBBI, AVR::RORRd, DstReg).addReg(DstReg); in expand()
1414 buildMI(MBB, MBBI, AVR::BLD, DstReg).addReg(DstReg).addImm(7); in expand()
1421 bool AVRExpandPseudo::expand<AVR::LSLWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1433 buildMI(MBB, MBBI, OpLo) in expand()
1439 buildMI(MBB, MBBI, OpHi) in expand()
1455 bool AVRExpandPseudo::expand<AVR::LSLWHiRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1466 buildMI(MBB, MBBI, AVR::ADDRdRr) in expand()
1478 bool AVRExpandPseudo::expandLSLW4Rd(Block &MBB, BlockIt MBBI) { in expandLSLW4Rd() argument
1489 buildMI(MBB, MBBI, AVR::SWAPRd) in expandLSLW4Rd()
1492 buildMI(MBB, MBBI, AVR::SWAPRd) in expandLSLW4Rd()
1498 buildMI(MBB, MBBI, AVR::ANDIRdK) in expandLSLW4Rd()
1507 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSLW4Rd()
1516 buildMI(MBB, MBBI, AVR::ANDIRdK) in expandLSLW4Rd()
1525 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSLW4Rd()
1536 bool AVRExpandPseudo::expandLSLW8Rd(Block &MBB, BlockIt MBBI) { in expandLSLW8Rd() argument
1546 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandLSLW8Rd()
1552 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSLW8Rd()
1563 bool AVRExpandPseudo::expandLSLW12Rd(Block &MBB, BlockIt MBBI) { in expandLSLW12Rd() argument
1573 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandLSLW12Rd()
1578 buildMI(MBB, MBBI, AVR::SWAPRd) in expandLSLW12Rd()
1584 buildMI(MBB, MBBI, AVR::ANDIRdK) in expandLSLW12Rd()
1593 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSLW12Rd()
1605 bool AVRExpandPseudo::expand<AVR::LSLWNRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1610 return expandLSLW4Rd(MBB, MBBI); in expand()
1612 return expandLSLW8Rd(MBB, MBBI); in expand()
1614 return expandLSLW12Rd(MBB, MBBI); in expand()
1622 bool AVRExpandPseudo::expand<AVR::LSRWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1634 buildMI(MBB, MBBI, OpHi) in expand()
1639 buildMI(MBB, MBBI, OpLo) in expand()
1654 bool AVRExpandPseudo::expand<AVR::LSRWLoRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1665 buildMI(MBB, MBBI, AVR::LSRRd) in expand()
1676 bool AVRExpandPseudo::expandLSRW4Rd(Block &MBB, BlockIt MBBI) { in expandLSRW4Rd() argument
1687 buildMI(MBB, MBBI, AVR::SWAPRd) in expandLSRW4Rd()
1690 buildMI(MBB, MBBI, AVR::SWAPRd) in expandLSRW4Rd()
1696 buildMI(MBB, MBBI, AVR::ANDIRdK) in expandLSRW4Rd()
1705 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSRW4Rd()
1714 buildMI(MBB, MBBI, AVR::ANDIRdK) in expandLSRW4Rd()
1723 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSRW4Rd()
1734 bool AVRExpandPseudo::expandLSRW8Rd(Block &MBB, BlockIt MBBI) { in expandLSRW8Rd() argument
1744 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandLSRW8Rd()
1750 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSRW8Rd()
1761 bool AVRExpandPseudo::expandLSRW12Rd(Block &MBB, BlockIt MBBI) { in expandLSRW12Rd() argument
1771 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandLSRW12Rd()
1776 buildMI(MBB, MBBI, AVR::SWAPRd) in expandLSRW12Rd()
1782 buildMI(MBB, MBBI, AVR::ANDIRdK) in expandLSRW12Rd()
1791 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSRW12Rd()
1803 bool AVRExpandPseudo::expand<AVR::LSRWNRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1808 return expandLSRW4Rd(MBB, MBBI); in expand()
1810 return expandLSRW8Rd(MBB, MBBI); in expand()
1812 return expandLSRW12Rd(MBB, MBBI); in expand()
1820 bool AVRExpandPseudo::expand<AVR::RORWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1826 bool AVRExpandPseudo::expand<AVR::ROLWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1832 bool AVRExpandPseudo::expand<AVR::ASRWRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1844 buildMI(MBB, MBBI, OpHi) in expand()
1849 buildMI(MBB, MBBI, OpLo) in expand()
1864 bool AVRExpandPseudo::expand<AVR::ASRWLoRd>(Block &MBB, BlockIt MBBI) { in expand() argument
1875 buildMI(MBB, MBBI, AVR::ASRRd) in expand()
1886 bool AVRExpandPseudo::expandASRW7Rd(Block &MBB, BlockIt MBBI) { in expandASRW7Rd() argument
1901 buildMI(MBB, MBBI, AVR::ADDRdRr) in expandASRW7Rd()
1907 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandASRW7Rd()
1912 buildMI(MBB, MBBI, AVR::ADCRdRr) in expandASRW7Rd()
1919 buildMI(MBB, MBBI, AVR::SBCRdRr) in expandASRW7Rd()
1933 bool AVRExpandPseudo::expandASRW8Rd(Block &MBB, BlockIt MBBI) { in expandASRW8Rd() argument
1943 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandASRW8Rd()
1948 buildMI(MBB, MBBI, AVR::ADDRdRr) in expandASRW8Rd()
1955 buildMI(MBB, MBBI, AVR::SBCRdRr) in expandASRW8Rd()
1968 bool AVRExpandPseudo::expandASRW14Rd(Block &MBB, BlockIt MBBI) { in expandASRW14Rd() argument
1984 buildMI(MBB, MBBI, AVR::ADDRdRr) in expandASRW14Rd()
1990 buildMI(MBB, MBBI, AVR::SBCRdRr) in expandASRW14Rd()
1996 buildMI(MBB, MBBI, AVR::ADDRdRr) in expandASRW14Rd()
2002 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandASRW14Rd()
2008 buildMI(MBB, MBBI, AVR::ADCRdRr) in expandASRW14Rd()
2022 bool AVRExpandPseudo::expandASRW15Rd(Block &MBB, BlockIt MBBI) { in expandASRW15Rd() argument
2035 buildMI(MBB, MBBI, AVR::ADDRdRr) in expandASRW15Rd()
2042 buildMI(MBB, MBBI, AVR::SBCRdRr) in expandASRW15Rd()
2052 buildMI(MBB, MBBI, AVR::MOVRdRr) in expandASRW15Rd()
2061 bool AVRExpandPseudo::expand<AVR::ASRWNRd>(Block &MBB, BlockIt MBBI) { in expand() argument
2066 return expandASRW7Rd(MBB, MBBI); in expand()
2068 return expandASRW8Rd(MBB, MBBI); in expand()
2070 return expandASRW14Rd(MBB, MBBI); in expand()
2072 return expandASRW15Rd(MBB, MBBI); in expand()
2079 bool AVRExpandPseudo::expandLSLB7Rd(Block &MBB, BlockIt MBBI) { in expandLSLB7Rd() argument
2090 buildMI(MBB, MBBI, AVR::RORRd) in expandLSLB7Rd()
2096 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSLB7Rd()
2102 buildMI(MBB, MBBI, AVR::RORRd) in expandLSLB7Rd()
2117 bool AVRExpandPseudo::expand<AVR::LSLBNRd>(Block &MBB, BlockIt MBBI) { in expand() argument
2122 return expandLSLB7Rd(MBB, MBBI); in expand()
2129 bool AVRExpandPseudo::expandLSRB7Rd(Block &MBB, BlockIt MBBI) { in expandLSRB7Rd() argument
2140 buildMI(MBB, MBBI, AVR::ADCRdRr) in expandLSRB7Rd()
2147 buildMI(MBB, MBBI, AVR::EORRdRr) in expandLSRB7Rd()
2153 buildMI(MBB, MBBI, AVR::ADCRdRr) in expandLSRB7Rd()
2169 bool AVRExpandPseudo::expand<AVR::LSRBNRd>(Block &MBB, BlockIt MBBI) { in expand() argument
2174 return expandLSRB7Rd(MBB, MBBI); in expand()
2181 bool AVRExpandPseudo::expandASRB6Rd(Block &MBB, BlockIt MBBI) { in expandASRB6Rd() argument
2192 buildMI(MBB, MBBI, AVR::BST) in expandASRB6Rd()
2198 buildMI(MBB, MBBI, AVR::ADDRdRr) // LSL Rd <==> ADD Rd, Rd in expandASRB6Rd()
2203 buildMI(MBB, MBBI, AVR::SBCRdRr) in expandASRB6Rd()
2208 buildMI(MBB, MBBI, AVR::BLD) in expandASRB6Rd()
2219 bool AVRExpandPseudo::expandASRB7Rd(Block &MBB, BlockIt MBBI) { in expandASRB7Rd() argument
2229 buildMI(MBB, MBBI, AVR::ADDRdRr) in expandASRB7Rd()
2235 buildMI(MBB, MBBI, AVR::SBCRdRr) in expandASRB7Rd()
2251 bool AVRExpandPseudo::expand<AVR::ASRBNRd>(Block &MBB, BlockIt MBBI) { in expand() argument
2256 return expandASRB6Rd(MBB, MBBI); in expand()
2258 return expandASRB7Rd(MBB, MBBI); in expand()
2265 template <> bool AVRExpandPseudo::expand<AVR::SEXT>(Block &MBB, BlockIt MBBI) { in expand() argument
2289 buildMI(MBB, MBBI, AVR::MOVRdRr) in expand()
2294 auto MOV = buildMI(MBB, MBBI, AVR::MOVRdRr) in expand()
2301 buildMI(MBB, MBBI, AVR::ADDRdRr) // LSL Rd <==> ADD Rd, Rr in expand()
2307 buildMI(MBB, MBBI, AVR::SBCRdRr) in expand()
2322 template <> bool AVRExpandPseudo::expand<AVR::ZEXT>(Block &MBB, BlockIt MBBI) { in expand() argument
2341 buildMI(MBB, MBBI, AVR::MOVRdRr) in expand()
2347 buildMI(MBB, MBBI, AVR::EORRdRr) in expand()
2360 bool AVRExpandPseudo::expand<AVR::SPREAD>(Block &MBB, BlockIt MBBI) { in expand() argument
2371 buildMI(MBB, MBBI, OpLo) in expand()
2377 buildMI(MBB, MBBI, OpHi) in expand()
2387 bool AVRExpandPseudo::expand<AVR::SPWRITE>(Block &MBB, BlockIt MBBI) { in expand() argument
2388 const AVRSubtarget &STI = MBB.getParent()->getSubtarget<AVRSubtarget>(); in expand()
2396 buildMI(MBB, MBBI, AVR::INRdA) in expand()
2401 buildMI(MBB, MBBI, AVR::BCLRs).addImm(0x07).setMIFlags(Flags); in expand()
2403 buildMI(MBB, MBBI, AVR::OUTARr) in expand()
2408 buildMI(MBB, MBBI, AVR::OUTARr) in expand()
2413 buildMI(MBB, MBBI, AVR::OUTARr) in expand()
2422 bool AVRExpandPseudo::expandMI(Block &MBB, BlockIt MBBI) { in expandMI() argument
2428 return expand<Op>(MBB, MI) in expandMI()