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