Lines Matching defs:ImmMO

4437 // Check if the DefMI is the add inst and set the ImmMO and RegMO
4441 MachineOperand *&ImmMO,
4456 ImmMO = &DefMI.getOperand(2);
4465 return isAnImmediateOperand(*ImmMO);
4509 bool PPCInstrInfo::isImmElgibleForForwarding(const MachineOperand &ImmMO,
4514 assert(isAnImmediateOperand(ImmMO) && "ImmMO is NOT an immediate");
4527 if (ImmMO.isGlobal()) {
4528 const DataLayout &DL = ImmMO.getGlobal()->getDataLayout();
4529 if (ImmMO.getGlobal()->getPointerAlignment(DL) < III.ImmMustBeMultipleOf)
4536 if (ImmMO.isImm()) {
4541 APInt ActualValue(64, ImmMO.getImm() + BaseImm, true);
4546 Imm = SignExtend64<16>(ImmMO.getImm() + BaseImm);
4556 // This ImmMO is forwarded if it meets the requriement describle
4835 MachineOperand *ImmMO = nullptr;
4837 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO))
4839 assert(ImmMO && RegMO && "Imm and Reg operand must have been set");
4846 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm, ImmBase))
4870 // RegMO ImmMO
4881 // described in the III. If yes, set the ImmMO and RegMO accordingly.
4882 MachineOperand *ImmMO = nullptr;
4884 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO))
4886 assert(ImmMO && RegMO && "Imm and Reg operand must have been set");
4888 // As we get the Imm operand now, we need to check if the ImmMO meet
4891 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm))
4918 if (ImmMO->isImm()) {
4919 // If the ImmMO is Imm, change the operand that has ZERO to that Imm
4926 // register with ImmMO.
4928 // For some reason, we miss to set the flag for the ImmMO if it is CPI.
4930 ImmMO->setTargetFlags(PPCII::MO_TOC_LO);
4934 // ImmMO, we need to remove ZERO operand and all the operands behind it,
4935 // and, add the ImmMO, then, move back all the operands behind ZERO.
4945 MI.addOperand(*ImmMO);