Lines Matching full:iii
3435 ImmInstrInfo III; in getForwardingDefMI() local
3448 if (!ConvertibleImmForm && !instrHasImmForm(Opc, IsVFReg, III, true)) in getForwardingDefMI()
3538 ImmInstrInfo III; in foldFrameOffset() local
3542 III)) in foldFrameOffset()
3584 if (III.ZeroIsSpecialOrig == III.ImmOpNo && in foldFrameOffset()
3607 MI.getOperand(III.ImmOpNo) in foldFrameOffset()
3611 MI.getOperand(III.OpNoForForwarding) in foldFrameOffset()
3651 ImmInstrInfo &III) const { in isImmInstrEligibleForFolding()
3666 PPC::isVFRegister(MI.getOperand(0).getReg()), III, true)) in isImmInstrEligibleForFolding()
3669 if (!III.IsSummingOperands) in isImmInstrEligibleForFolding()
3672 MachineOperand ImmOperand = MI.getOperand(III.ImmOpNo); in isImmInstrEligibleForFolding()
3673 MachineOperand RegOperand = MI.getOperand(III.OpNoForForwarding); in isImmInstrEligibleForFolding()
3770 ImmInstrInfo III; in convertToImmediateForm() local
3774 bool HasImmForm = instrHasImmForm(MI.getOpcode(), IsVFReg, III, PostRA); in convertToImmediateForm()
3779 transformToImmFormFedByAdd(MI, III, ForwardingOperand, *DefMI, in convertToImmediateForm()
3786 transformToImmFormFedByLI(MI, III, ForwardingOperand, *DefMI)) in convertToImmediateForm()
3935 ImmInstrInfo &III, bool PostRA) const { in instrHasImmForm() argument
3940 III.ImmOpNo = 2; in instrHasImmForm()
3941 III.OpNoForForwarding = 2; in instrHasImmForm()
3942 III.ImmWidth = 16; in instrHasImmForm()
3943 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
3944 III.TruncateImmTo = 0; in instrHasImmForm()
3945 III.IsSummingOperands = false; in instrHasImmForm()
3950 III.SignedImm = true; in instrHasImmForm()
3951 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3952 III.ZeroIsSpecialNew = 1; in instrHasImmForm()
3953 III.IsCommutative = true; in instrHasImmForm()
3954 III.IsSummingOperands = true; in instrHasImmForm()
3955 III.ImmOpcode = Opc == PPC::ADD4 ? PPC::ADDI : PPC::ADDI8; in instrHasImmForm()
3959 III.SignedImm = true; in instrHasImmForm()
3960 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3961 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3962 III.IsCommutative = true; in instrHasImmForm()
3963 III.IsSummingOperands = true; in instrHasImmForm()
3964 III.ImmOpcode = Opc == PPC::ADDC ? PPC::ADDIC : PPC::ADDIC8; in instrHasImmForm()
3967 III.SignedImm = true; in instrHasImmForm()
3968 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3969 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3970 III.IsCommutative = true; in instrHasImmForm()
3971 III.IsSummingOperands = true; in instrHasImmForm()
3972 III.ImmOpcode = PPC::ADDIC_rec; in instrHasImmForm()
3976 III.SignedImm = true; in instrHasImmForm()
3977 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3978 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3979 III.IsCommutative = false; in instrHasImmForm()
3980 III.ImmOpcode = Opc == PPC::SUBFC ? PPC::SUBFIC : PPC::SUBFIC8; in instrHasImmForm()
3984 III.SignedImm = true; in instrHasImmForm()
3985 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3986 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3987 III.IsCommutative = false; in instrHasImmForm()
3988 III.ImmOpcode = Opc == PPC::CMPW ? PPC::CMPWI : PPC::CMPDI; in instrHasImmForm()
3992 III.SignedImm = false; in instrHasImmForm()
3993 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3994 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3995 III.IsCommutative = false; in instrHasImmForm()
3996 III.ImmOpcode = Opc == PPC::CMPLW ? PPC::CMPLWI : PPC::CMPLDI; in instrHasImmForm()
4004 III.SignedImm = false; in instrHasImmForm()
4005 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
4006 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
4007 III.IsCommutative = true; in instrHasImmForm()
4011 III.ImmOpcode = PPC::ANDI_rec; in instrHasImmForm()
4014 III.ImmOpcode = PPC::ANDI8_rec; in instrHasImmForm()
4016 case PPC::OR: III.ImmOpcode = PPC::ORI; break; in instrHasImmForm()
4017 case PPC::OR8: III.ImmOpcode = PPC::ORI8; break; in instrHasImmForm()
4018 case PPC::XOR: III.ImmOpcode = PPC::XORI; break; in instrHasImmForm()
4019 case PPC::XOR8: III.ImmOpcode = PPC::XORI8; break; in instrHasImmForm()
4036 III.SignedImm = false; in instrHasImmForm()
4037 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
4038 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
4039 III.IsCommutative = false; in instrHasImmForm()
4044 III.ImmWidth = 16; in instrHasImmForm()
4047 III.TruncateImmTo = 5; in instrHasImmForm()
4049 III.TruncateImmTo = 6; in instrHasImmForm()
4052 case PPC::RLWNM: III.ImmOpcode = PPC::RLWINM; break; in instrHasImmForm()
4053 case PPC::RLWNM8: III.ImmOpcode = PPC::RLWINM8; break; in instrHasImmForm()
4055 III.ImmOpcode = PPC::RLWINM_rec; in instrHasImmForm()
4058 III.ImmOpcode = PPC::RLWINM8_rec; in instrHasImmForm()
4060 case PPC::SLW: III.ImmOpcode = PPC::RLWINM; break; in instrHasImmForm()
4061 case PPC::SLW8: III.ImmOpcode = PPC::RLWINM8; break; in instrHasImmForm()
4063 III.ImmOpcode = PPC::RLWINM_rec; in instrHasImmForm()
4066 III.ImmOpcode = PPC::RLWINM8_rec; in instrHasImmForm()
4068 case PPC::SRW: III.ImmOpcode = PPC::RLWINM; break; in instrHasImmForm()
4069 case PPC::SRW8: III.ImmOpcode = PPC::RLWINM8; break; in instrHasImmForm()
4071 III.ImmOpcode = PPC::RLWINM_rec; in instrHasImmForm()
4074 III.ImmOpcode = PPC::RLWINM8_rec; in instrHasImmForm()
4077 III.ImmWidth = 5; in instrHasImmForm()
4078 III.TruncateImmTo = 0; in instrHasImmForm()
4079 III.ImmOpcode = PPC::SRAWI; in instrHasImmForm()
4082 III.ImmWidth = 5; in instrHasImmForm()
4083 III.TruncateImmTo = 0; in instrHasImmForm()
4084 III.ImmOpcode = PPC::SRAWI_rec; in instrHasImmForm()
4098 III.SignedImm = false; in instrHasImmForm()
4099 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
4100 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
4101 III.IsCommutative = false; in instrHasImmForm()
4106 III.ImmWidth = 16; in instrHasImmForm()
4109 III.TruncateImmTo = 6; in instrHasImmForm()
4111 III.TruncateImmTo = 7; in instrHasImmForm()
4114 case PPC::RLDCL: III.ImmOpcode = PPC::RLDICL; break; in instrHasImmForm()
4116 III.ImmOpcode = PPC::RLDICL_rec; in instrHasImmForm()
4118 case PPC::RLDCR: III.ImmOpcode = PPC::RLDICR; break; in instrHasImmForm()
4120 III.ImmOpcode = PPC::RLDICR_rec; in instrHasImmForm()
4122 case PPC::SLD: III.ImmOpcode = PPC::RLDICR; break; in instrHasImmForm()
4124 III.ImmOpcode = PPC::RLDICR_rec; in instrHasImmForm()
4126 case PPC::SRD: III.ImmOpcode = PPC::RLDICL; break; in instrHasImmForm()
4128 III.ImmOpcode = PPC::RLDICL_rec; in instrHasImmForm()
4131 III.ImmWidth = 6; in instrHasImmForm()
4132 III.TruncateImmTo = 0; in instrHasImmForm()
4133 III.ImmOpcode = PPC::SRADI; in instrHasImmForm()
4136 III.ImmWidth = 6; in instrHasImmForm()
4137 III.TruncateImmTo = 0; in instrHasImmForm()
4138 III.ImmOpcode = PPC::SRADI_rec; in instrHasImmForm()
4164 III.SignedImm = true; in instrHasImmForm()
4165 III.ZeroIsSpecialOrig = 1; in instrHasImmForm()
4166 III.ZeroIsSpecialNew = 2; in instrHasImmForm()
4167 III.IsCommutative = true; in instrHasImmForm()
4168 III.IsSummingOperands = true; in instrHasImmForm()
4169 III.ImmOpNo = 1; in instrHasImmForm()
4170 III.OpNoForForwarding = 2; in instrHasImmForm()
4173 case PPC::LBZX: III.ImmOpcode = PPC::LBZ; break; in instrHasImmForm()
4174 case PPC::LBZX8: III.ImmOpcode = PPC::LBZ8; break; in instrHasImmForm()
4175 case PPC::LHZX: III.ImmOpcode = PPC::LHZ; break; in instrHasImmForm()
4176 case PPC::LHZX8: III.ImmOpcode = PPC::LHZ8; break; in instrHasImmForm()
4177 case PPC::LHAX: III.ImmOpcode = PPC::LHA; break; in instrHasImmForm()
4178 case PPC::LHAX8: III.ImmOpcode = PPC::LHA8; break; in instrHasImmForm()
4179 case PPC::LWZX: III.ImmOpcode = PPC::LWZ; break; in instrHasImmForm()
4180 case PPC::LWZX8: III.ImmOpcode = PPC::LWZ8; break; in instrHasImmForm()
4182 III.ImmOpcode = PPC::LWA; in instrHasImmForm()
4183 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4185 case PPC::LDX: III.ImmOpcode = PPC::LD; III.ImmMustBeMultipleOf = 4; break; in instrHasImmForm()
4186 case PPC::LFSX: III.ImmOpcode = PPC::LFS; break; in instrHasImmForm()
4187 case PPC::LFDX: III.ImmOpcode = PPC::LFD; break; in instrHasImmForm()
4188 case PPC::STBX: III.ImmOpcode = PPC::STB; break; in instrHasImmForm()
4189 case PPC::STBX8: III.ImmOpcode = PPC::STB8; break; in instrHasImmForm()
4190 case PPC::STHX: III.ImmOpcode = PPC::STH; break; in instrHasImmForm()
4191 case PPC::STHX8: III.ImmOpcode = PPC::STH8; break; in instrHasImmForm()
4192 case PPC::STWX: III.ImmOpcode = PPC::STW; break; in instrHasImmForm()
4193 case PPC::STWX8: III.ImmOpcode = PPC::STW8; break; in instrHasImmForm()
4195 III.ImmOpcode = PPC::STD; in instrHasImmForm()
4196 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4198 case PPC::STFSX: III.ImmOpcode = PPC::STFS; break; in instrHasImmForm()
4199 case PPC::STFDX: III.ImmOpcode = PPC::STFD; break; in instrHasImmForm()
4222 III.SignedImm = true; in instrHasImmForm()
4223 III.ZeroIsSpecialOrig = 2; in instrHasImmForm()
4224 III.ZeroIsSpecialNew = 3; in instrHasImmForm()
4225 III.IsCommutative = false; in instrHasImmForm()
4226 III.IsSummingOperands = true; in instrHasImmForm()
4227 III.ImmOpNo = 2; in instrHasImmForm()
4228 III.OpNoForForwarding = 3; in instrHasImmForm()
4231 case PPC::LBZUX: III.ImmOpcode = PPC::LBZU; break; in instrHasImmForm()
4232 case PPC::LBZUX8: III.ImmOpcode = PPC::LBZU8; break; in instrHasImmForm()
4233 case PPC::LHZUX: III.ImmOpcode = PPC::LHZU; break; in instrHasImmForm()
4234 case PPC::LHZUX8: III.ImmOpcode = PPC::LHZU8; break; in instrHasImmForm()
4235 case PPC::LHAUX: III.ImmOpcode = PPC::LHAU; break; in instrHasImmForm()
4236 case PPC::LHAUX8: III.ImmOpcode = PPC::LHAU8; break; in instrHasImmForm()
4237 case PPC::LWZUX: III.ImmOpcode = PPC::LWZU; break; in instrHasImmForm()
4238 case PPC::LWZUX8: III.ImmOpcode = PPC::LWZU8; break; in instrHasImmForm()
4240 III.ImmOpcode = PPC::LDU; in instrHasImmForm()
4241 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4243 case PPC::LFSUX: III.ImmOpcode = PPC::LFSU; break; in instrHasImmForm()
4244 case PPC::LFDUX: III.ImmOpcode = PPC::LFDU; break; in instrHasImmForm()
4245 case PPC::STBUX: III.ImmOpcode = PPC::STBU; break; in instrHasImmForm()
4246 case PPC::STBUX8: III.ImmOpcode = PPC::STBU8; break; in instrHasImmForm()
4247 case PPC::STHUX: III.ImmOpcode = PPC::STHU; break; in instrHasImmForm()
4248 case PPC::STHUX8: III.ImmOpcode = PPC::STHU8; break; in instrHasImmForm()
4249 case PPC::STWUX: III.ImmOpcode = PPC::STWU; break; in instrHasImmForm()
4250 case PPC::STWUX8: III.ImmOpcode = PPC::STWU8; break; in instrHasImmForm()
4252 III.ImmOpcode = PPC::STDU; in instrHasImmForm()
4253 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4255 case PPC::STFSUX: III.ImmOpcode = PPC::STFSU; break; in instrHasImmForm()
4256 case PPC::STFDUX: III.ImmOpcode = PPC::STFDU; break; in instrHasImmForm()
4275 III.SignedImm = true; in instrHasImmForm()
4276 III.ZeroIsSpecialOrig = 1; in instrHasImmForm()
4277 III.ZeroIsSpecialNew = 2; in instrHasImmForm()
4278 III.IsCommutative = true; in instrHasImmForm()
4279 III.IsSummingOperands = true; in instrHasImmForm()
4280 III.ImmOpNo = 1; in instrHasImmForm()
4281 III.OpNoForForwarding = 2; in instrHasImmForm()
4282 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4286 III.ImmOpcode = PPC::LXV; in instrHasImmForm()
4287 III.ImmMustBeMultipleOf = 16; in instrHasImmForm()
4292 III.ImmOpcode = PPC::LXSSP; in instrHasImmForm()
4294 III.ImmOpcode = PPC::LFS; in instrHasImmForm()
4295 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4301 III.ImmOpcode = PPC::DFLOADf32; in instrHasImmForm()
4306 III.ImmOpcode = PPC::LXSD; in instrHasImmForm()
4308 III.ImmOpcode = PPC::LFD; in instrHasImmForm()
4309 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4315 III.ImmOpcode = PPC::DFLOADf64; in instrHasImmForm()
4318 III.ImmOpcode = PPC::STXV; in instrHasImmForm()
4319 III.ImmMustBeMultipleOf = 16; in instrHasImmForm()
4324 III.ImmOpcode = PPC::STXSSP; in instrHasImmForm()
4326 III.ImmOpcode = PPC::STFS; in instrHasImmForm()
4327 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4333 III.ImmOpcode = PPC::DFSTOREf32; in instrHasImmForm()
4338 III.ImmOpcode = PPC::STXSD; in instrHasImmForm()
4340 III.ImmOpcode = PPC::STFD; in instrHasImmForm()
4341 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4347 III.ImmOpcode = PPC::DFSTOREf64; in instrHasImmForm()
4397 const ImmInstrInfo &III, in isUseMIElgibleForForwarding() argument
4407 if (!III.IsSummingOperands) in isUseMIElgibleForForwarding()
4411 if (!III.ZeroIsSpecialOrig) in isUseMIElgibleForForwarding()
4416 if (OpNoForForwarding != III.OpNoForForwarding) in isUseMIElgibleForForwarding()
4421 if (MI.getOperand(III.ZeroIsSpecialOrig).getReg() != PPC::ZERO && in isUseMIElgibleForForwarding()
4422 MI.getOperand(III.ZeroIsSpecialOrig).getReg() != PPC::ZERO8) in isUseMIElgibleForForwarding()
4435 const ImmInstrInfo &III, in isDefMIElgibleForForwarding() argument
4506 const ImmInstrInfo &III, in isImmElgibleForForwarding() argument
4514 if (III.ImmMustBeMultipleOf > 4 || in isImmElgibleForForwarding()
4515 III.TruncateImmTo || III.ImmWidth != 16) in isImmElgibleForForwarding()
4524 if (ImmMO.getGlobal()->getPointerAlignment(DL) < III.ImmMustBeMultipleOf) in isImmElgibleForForwarding()
4537 if (III.SignedImm && !ActualValue.isSignedIntN(III.ImmWidth)) in isImmElgibleForForwarding()
4539 if (!III.SignedImm && !ActualValue.isIntN(III.ImmWidth)) in isImmElgibleForForwarding()
4543 if (Imm % III.ImmMustBeMultipleOf) in isImmElgibleForForwarding()
4545 if (III.TruncateImmTo) in isImmElgibleForForwarding()
4546 Imm &= ((1 << III.TruncateImmTo) - 1); in isImmElgibleForForwarding()
4811 ImmInstrInfo III; in transformToNewImmFormFedByAdd() local
4816 if (!instrHasImmForm(XFormOpcode, IsVFReg, III, PostRA)) in transformToNewImmFormFedByAdd()
4819 if (!III.IsSummingOperands) in transformToNewImmFormFedByAdd()
4822 if (OpNoForForwarding != III.OpNoForForwarding) in transformToNewImmFormFedByAdd()
4825 MachineOperand ImmOperandMI = MI.getOperand(III.ImmOpNo); in transformToNewImmFormFedByAdd()
4832 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO)) in transformToNewImmFormFedByAdd()
4841 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm, ImmBase)) in transformToNewImmFormFedByAdd()
4850 MI.getOperand(III.OpNoForForwarding).setReg(RegMO->getReg()); in transformToNewImmFormFedByAdd()
4851 MI.getOperand(III.ImmOpNo).setImm(Imm); in transformToNewImmFormFedByAdd()
4863 MachineInstr &MI, const ImmInstrInfo &III, unsigned OpNoForForwarding, in transformToImmFormFedByAdd() argument
4871 // Check if the MI meet the requirement described in the III. in transformToImmFormFedByAdd()
4872 if (!isUseMIElgibleForForwarding(MI, III, OpNoForForwarding)) in transformToImmFormFedByAdd()
4876 // described in the III. If yes, set the ImmMO and RegMO accordingly. in transformToImmFormFedByAdd()
4879 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO)) in transformToImmFormFedByAdd()
4884 // the requirement described in the III. If yes set the Imm. in transformToImmFormFedByAdd()
4886 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm)) in transformToImmFormFedByAdd()
4908 MI.getOperand(III.OpNoForForwarding).ChangeToRegister(RegMO->getReg(), in transformToImmFormFedByAdd()
4916 replaceInstrOperandWithImm(MI, III.ZeroIsSpecialOrig, Imm); in transformToImmFormFedByAdd()
4932 for (unsigned i = MI.getNumOperands() - 1; i >= III.ZeroIsSpecialOrig; i--) { in transformToImmFormFedByAdd()
4947 MI.setDesc(get(III.ImmOpcode)); in transformToImmFormFedByAdd()
4958 const ImmInstrInfo &III, in transformToImmFormFedByLI() argument
4972 if ((ConstantOpNo != III.OpNoForForwarding) && !III.IsCommutative) in transformToImmFormFedByLI()
4974 if (Imm % III.ImmMustBeMultipleOf) in transformToImmFormFedByLI()
4976 if (III.TruncateImmTo) in transformToImmFormFedByLI()
4977 Imm &= ((1 << III.TruncateImmTo) - 1); in transformToImmFormFedByLI()
4978 if (III.SignedImm) { in transformToImmFormFedByLI()
4980 if (!ActualValue.isSignedIntN(III.ImmWidth)) in transformToImmFormFedByLI()
4983 uint64_t UnsignedMax = (1 << III.ImmWidth) - 1; in transformToImmFormFedByLI()
4991 if (PostRA && III.ZeroIsSpecialOrig != III.ZeroIsSpecialNew) { in transformToImmFormFedByLI()
4992 unsigned PosForOrigZero = III.ZeroIsSpecialOrig ? III.ZeroIsSpecialOrig : in transformToImmFormFedByLI()
4993 III.ZeroIsSpecialNew + 1; in transformToImmFormFedByLI()
4995 Register NewZeroReg = MI.getOperand(III.ZeroIsSpecialNew).getReg(); in transformToImmFormFedByLI()
4999 ConstantOpNo != III.ZeroIsSpecialNew) in transformToImmFormFedByLI()
5022 MI.setDesc(get(III.ImmOpcode)); in transformToImmFormFedByLI()
5023 if (ConstantOpNo == III.OpNoForForwarding) { in transformToImmFormFedByLI()
5053 replaceInstrOperandWithImm(MI, III.OpNoForForwarding, SH); in transformToImmFormFedByLI()
5062 replaceInstrOperandWithImm(MI, III.OpNoForForwarding, SH); in transformToImmFormFedByLI()
5071 else if (III.IsCommutative) { in transformToImmFormFedByLI()
5073 swapMIOperands(MI, ConstantOpNo, III.OpNoForForwarding); in transformToImmFormFedByLI()
5079 if (III.OpNoForForwarding != III.ImmOpNo) in transformToImmFormFedByLI()
5080 swapMIOperands(MI, III.OpNoForForwarding, III.ImmOpNo); in transformToImmFormFedByLI()
5085 if (!PostRA && III.ZeroIsSpecialOrig != III.ZeroIsSpecialNew) { in transformToImmFormFedByLI()
5086 if (III.ZeroIsSpecialNew) { in transformToImmFormFedByLI()
5087 // If operand at III.ZeroIsSpecialNew is physical reg(eg: ZERO/ZERO8), no in transformToImmFormFedByLI()
5089 Register RegToModify = MI.getOperand(III.ZeroIsSpecialNew).getReg(); in transformToImmFormFedByLI()