Lines Matching defs:III

3440     ImmInstrInfo III;
3453 if (!ConvertibleImmForm && !instrHasImmForm(Opc, IsVFReg, III, true))
3543 ImmInstrInfo III;
3547 III))
3589 if (III.ZeroIsSpecialOrig == III.ImmOpNo &&
3612 MI.getOperand(III.ImmOpNo)
3616 MI.getOperand(III.OpNoForForwarding)
3656 ImmInstrInfo &III) const {
3671 PPC::isVFRegister(MI.getOperand(0).getReg()), III, true))
3674 if (!III.IsSummingOperands)
3677 MachineOperand ImmOperand = MI.getOperand(III.ImmOpNo);
3678 MachineOperand RegOperand = MI.getOperand(III.OpNoForForwarding);
3775 ImmInstrInfo III;
3779 bool HasImmForm = instrHasImmForm(MI.getOpcode(), IsVFReg, III, PostRA);
3784 transformToImmFormFedByAdd(MI, III, ForwardingOperand, *DefMI,
3791 transformToImmFormFedByLI(MI, III, ForwardingOperand, *DefMI))
3940 ImmInstrInfo &III, bool PostRA) const {
3945 III.ImmOpNo = 2;
3946 III.OpNoForForwarding = 2;
3947 III.ImmWidth = 16;
3948 III.ImmMustBeMultipleOf = 1;
3949 III.TruncateImmTo = 0;
3950 III.IsSummingOperands = false;
3955 III.SignedImm = true;
3956 III.ZeroIsSpecialOrig = 0;
3957 III.ZeroIsSpecialNew = 1;
3958 III.IsCommutative = true;
3959 III.IsSummingOperands = true;
3960 III.ImmOpcode = Opc == PPC::ADD4 ? PPC::ADDI : PPC::ADDI8;
3964 III.SignedImm = true;
3965 III.ZeroIsSpecialOrig = 0;
3966 III.ZeroIsSpecialNew = 0;
3967 III.IsCommutative = true;
3968 III.IsSummingOperands = true;
3969 III.ImmOpcode = Opc == PPC::ADDC ? PPC::ADDIC : PPC::ADDIC8;
3972 III.SignedImm = true;
3973 III.ZeroIsSpecialOrig = 0;
3974 III.ZeroIsSpecialNew = 0;
3975 III.IsCommutative = true;
3976 III.IsSummingOperands = true;
3977 III.ImmOpcode = PPC::ADDIC_rec;
3981 III.SignedImm = true;
3982 III.ZeroIsSpecialOrig = 0;
3983 III.ZeroIsSpecialNew = 0;
3984 III.IsCommutative = false;
3985 III.ImmOpcode = Opc == PPC::SUBFC ? PPC::SUBFIC : PPC::SUBFIC8;
3989 III.SignedImm = true;
3990 III.ZeroIsSpecialOrig = 0;
3991 III.ZeroIsSpecialNew = 0;
3992 III.IsCommutative = false;
3993 III.ImmOpcode = Opc == PPC::CMPW ? PPC::CMPWI : PPC::CMPDI;
3997 III.SignedImm = false;
3998 III.ZeroIsSpecialOrig = 0;
3999 III.ZeroIsSpecialNew = 0;
4000 III.IsCommutative = false;
4001 III.ImmOpcode = Opc == PPC::CMPLW ? PPC::CMPLWI : PPC::CMPLDI;
4009 III.SignedImm = false;
4010 III.ZeroIsSpecialOrig = 0;
4011 III.ZeroIsSpecialNew = 0;
4012 III.IsCommutative = true;
4016 III.ImmOpcode = PPC::ANDI_rec;
4019 III.ImmOpcode = PPC::ANDI8_rec;
4021 case PPC::OR: III.ImmOpcode = PPC::ORI; break;
4022 case PPC::OR8: III.ImmOpcode = PPC::ORI8; break;
4023 case PPC::XOR: III.ImmOpcode = PPC::XORI; break;
4024 case PPC::XOR8: III.ImmOpcode = PPC::XORI8; break;
4041 III.SignedImm = false;
4042 III.ZeroIsSpecialOrig = 0;
4043 III.ZeroIsSpecialNew = 0;
4044 III.IsCommutative = false;
4049 III.ImmWidth = 16;
4052 III.TruncateImmTo = 5;
4054 III.TruncateImmTo = 6;
4057 case PPC::RLWNM: III.ImmOpcode = PPC::RLWINM; break;
4058 case PPC::RLWNM8: III.ImmOpcode = PPC::RLWINM8; break;
4060 III.ImmOpcode = PPC::RLWINM_rec;
4063 III.ImmOpcode = PPC::RLWINM8_rec;
4065 case PPC::SLW: III.ImmOpcode = PPC::RLWINM; break;
4066 case PPC::SLW8: III.ImmOpcode = PPC::RLWINM8; break;
4068 III.ImmOpcode = PPC::RLWINM_rec;
4071 III.ImmOpcode = PPC::RLWINM8_rec;
4073 case PPC::SRW: III.ImmOpcode = PPC::RLWINM; break;
4074 case PPC::SRW8: III.ImmOpcode = PPC::RLWINM8; break;
4076 III.ImmOpcode = PPC::RLWINM_rec;
4079 III.ImmOpcode = PPC::RLWINM8_rec;
4082 III.ImmWidth = 5;
4083 III.TruncateImmTo = 0;
4084 III.ImmOpcode = PPC::SRAWI;
4087 III.ImmWidth = 5;
4088 III.TruncateImmTo = 0;
4089 III.ImmOpcode = PPC::SRAWI_rec;
4103 III.SignedImm = false;
4104 III.ZeroIsSpecialOrig = 0;
4105 III.ZeroIsSpecialNew = 0;
4106 III.IsCommutative = false;
4111 III.ImmWidth = 16;
4114 III.TruncateImmTo = 6;
4116 III.TruncateImmTo = 7;
4119 case PPC::RLDCL: III.ImmOpcode = PPC::RLDICL; break;
4121 III.ImmOpcode = PPC::RLDICL_rec;
4123 case PPC::RLDCR: III.ImmOpcode = PPC::RLDICR; break;
4125 III.ImmOpcode = PPC::RLDICR_rec;
4127 case PPC::SLD: III.ImmOpcode = PPC::RLDICR; break;
4129 III.ImmOpcode = PPC::RLDICR_rec;
4131 case PPC::SRD: III.ImmOpcode = PPC::RLDICL; break;
4133 III.ImmOpcode = PPC::RLDICL_rec;
4136 III.ImmWidth = 6;
4137 III.TruncateImmTo = 0;
4138 III.ImmOpcode = PPC::SRADI;
4141 III.ImmWidth = 6;
4142 III.TruncateImmTo = 0;
4143 III.ImmOpcode = PPC::SRADI_rec;
4169 III.SignedImm = true;
4170 III.ZeroIsSpecialOrig = 1;
4171 III.ZeroIsSpecialNew = 2;
4172 III.IsCommutative = true;
4173 III.IsSummingOperands = true;
4174 III.ImmOpNo = 1;
4175 III.OpNoForForwarding = 2;
4178 case PPC::LBZX: III.ImmOpcode = PPC::LBZ; break;
4179 case PPC::LBZX8: III.ImmOpcode = PPC::LBZ8; break;
4180 case PPC::LHZX: III.ImmOpcode = PPC::LHZ; break;
4181 case PPC::LHZX8: III.ImmOpcode = PPC::LHZ8; break;
4182 case PPC::LHAX: III.ImmOpcode = PPC::LHA; break;
4183 case PPC::LHAX8: III.ImmOpcode = PPC::LHA8; break;
4184 case PPC::LWZX: III.ImmOpcode = PPC::LWZ; break;
4185 case PPC::LWZX8: III.ImmOpcode = PPC::LWZ8; break;
4187 III.ImmOpcode = PPC::LWA;
4188 III.ImmMustBeMultipleOf = 4;
4190 case PPC::LDX: III.ImmOpcode = PPC::LD; III.ImmMustBeMultipleOf = 4; break;
4191 case PPC::LFSX: III.ImmOpcode = PPC::LFS; break;
4192 case PPC::LFDX: III.ImmOpcode = PPC::LFD; break;
4193 case PPC::STBX: III.ImmOpcode = PPC::STB; break;
4194 case PPC::STBX8: III.ImmOpcode = PPC::STB8; break;
4195 case PPC::STHX: III.ImmOpcode = PPC::STH; break;
4196 case PPC::STHX8: III.ImmOpcode = PPC::STH8; break;
4197 case PPC::STWX: III.ImmOpcode = PPC::STW; break;
4198 case PPC::STWX8: III.ImmOpcode = PPC::STW8; break;
4200 III.ImmOpcode = PPC::STD;
4201 III.ImmMustBeMultipleOf = 4;
4203 case PPC::STFSX: III.ImmOpcode = PPC::STFS; break;
4204 case PPC::STFDX: III.ImmOpcode = PPC::STFD; break;
4227 III.SignedImm = true;
4228 III.ZeroIsSpecialOrig = 2;
4229 III.ZeroIsSpecialNew = 3;
4230 III.IsCommutative = false;
4231 III.IsSummingOperands = true;
4232 III.ImmOpNo = 2;
4233 III.OpNoForForwarding = 3;
4236 case PPC::LBZUX: III.ImmOpcode = PPC::LBZU; break;
4237 case PPC::LBZUX8: III.ImmOpcode = PPC::LBZU8; break;
4238 case PPC::LHZUX: III.ImmOpcode = PPC::LHZU; break;
4239 case PPC::LHZUX8: III.ImmOpcode = PPC::LHZU8; break;
4240 case PPC::LHAUX: III.ImmOpcode = PPC::LHAU; break;
4241 case PPC::LHAUX8: III.ImmOpcode = PPC::LHAU8; break;
4242 case PPC::LWZUX: III.ImmOpcode = PPC::LWZU; break;
4243 case PPC::LWZUX8: III.ImmOpcode = PPC::LWZU8; break;
4245 III.ImmOpcode = PPC::LDU;
4246 III.ImmMustBeMultipleOf = 4;
4248 case PPC::LFSUX: III.ImmOpcode = PPC::LFSU; break;
4249 case PPC::LFDUX: III.ImmOpcode = PPC::LFDU; break;
4250 case PPC::STBUX: III.ImmOpcode = PPC::STBU; break;
4251 case PPC::STBUX8: III.ImmOpcode = PPC::STBU8; break;
4252 case PPC::STHUX: III.ImmOpcode = PPC::STHU; break;
4253 case PPC::STHUX8: III.ImmOpcode = PPC::STHU8; break;
4254 case PPC::STWUX: III.ImmOpcode = PPC::STWU; break;
4255 case PPC::STWUX8: III.ImmOpcode = PPC::STWU8; break;
4257 III.ImmOpcode = PPC::STDU;
4258 III.ImmMustBeMultipleOf = 4;
4260 case PPC::STFSUX: III.ImmOpcode = PPC::STFSU; break;
4261 case PPC::STFDUX: III.ImmOpcode = PPC::STFDU; break;
4280 III.SignedImm = true;
4281 III.ZeroIsSpecialOrig = 1;
4282 III.ZeroIsSpecialNew = 2;
4283 III.IsCommutative = true;
4284 III.IsSummingOperands = true;
4285 III.ImmOpNo = 1;
4286 III.OpNoForForwarding = 2;
4287 III.ImmMustBeMultipleOf = 4;
4291 III.ImmOpcode = PPC::LXV;
4292 III.ImmMustBeMultipleOf = 16;
4297 III.ImmOpcode = PPC::LXSSP;
4299 III.ImmOpcode = PPC::LFS;
4300 III.ImmMustBeMultipleOf = 1;
4306 III.ImmOpcode = PPC::DFLOADf32;
4311 III.ImmOpcode = PPC::LXSD;
4313 III.ImmOpcode = PPC::LFD;
4314 III.ImmMustBeMultipleOf = 1;
4320 III.ImmOpcode = PPC::DFLOADf64;
4323 III.ImmOpcode = PPC::STXV;
4324 III.ImmMustBeMultipleOf = 16;
4329 III.ImmOpcode = PPC::STXSSP;
4331 III.ImmOpcode = PPC::STFS;
4332 III.ImmMustBeMultipleOf = 1;
4338 III.ImmOpcode = PPC::DFSTOREf32;
4343 III.ImmOpcode = PPC::STXSD;
4345 III.ImmOpcode = PPC::STFD;
4346 III.ImmMustBeMultipleOf = 1;
4352 III.ImmOpcode = PPC::DFSTOREf64;
4402 const ImmInstrInfo &III,
4412 if (!III.IsSummingOperands)
4416 if (!III.ZeroIsSpecialOrig)
4421 if (OpNoForForwarding != III.OpNoForForwarding)
4426 if (MI.getOperand(III.ZeroIsSpecialOrig).getReg() != PPC::ZERO &&
4427 MI.getOperand(III.ZeroIsSpecialOrig).getReg() != PPC::ZERO8)
4440 const ImmInstrInfo &III,
4511 const ImmInstrInfo &III,
4519 if (III.ImmMustBeMultipleOf > 4 ||
4520 III.TruncateImmTo || III.ImmWidth != 16)
4529 if (ImmMO.getGlobal()->getPointerAlignment(DL) < III.ImmMustBeMultipleOf)
4542 if (III.SignedImm && !ActualValue.isSignedIntN(III.ImmWidth))
4544 if (!III.SignedImm && !ActualValue.isIntN(III.ImmWidth))
4548 if (Imm % III.ImmMustBeMultipleOf)
4550 if (III.TruncateImmTo)
4551 Imm &= ((1 << III.TruncateImmTo) - 1);
4816 ImmInstrInfo III;
4821 if (!instrHasImmForm(XFormOpcode, IsVFReg, III, PostRA))
4824 if (!III.IsSummingOperands)
4827 if (OpNoForForwarding != III.OpNoForForwarding)
4830 MachineOperand ImmOperandMI = MI.getOperand(III.ImmOpNo);
4837 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO))
4846 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm, ImmBase))
4855 MI.getOperand(III.OpNoForForwarding).setReg(RegMO->getReg());
4856 MI.getOperand(III.ImmOpNo).setImm(Imm);
4868 MachineInstr &MI, const ImmInstrInfo &III, unsigned OpNoForForwarding,
4876 // Check if the MI meet the requirement described in the III.
4877 if (!isUseMIElgibleForForwarding(MI, III, OpNoForForwarding))
4881 // described in the III. If yes, set the ImmMO and RegMO accordingly.
4884 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO))
4889 // the requirement described in the III. If yes set the Imm.
4891 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm))
4913 MI.getOperand(III.OpNoForForwarding).ChangeToRegister(RegMO->getReg(),
4921 replaceInstrOperandWithImm(MI, III.ZeroIsSpecialOrig, Imm);
4937 for (unsigned i = MI.getNumOperands() - 1; i >= III.ZeroIsSpecialOrig; i--) {
4952 MI.setDesc(get(III.ImmOpcode));
4963 const ImmInstrInfo &III,
4977 if ((ConstantOpNo != III.OpNoForForwarding) && !III.IsCommutative)
4979 if (Imm % III.ImmMustBeMultipleOf)
4981 if (III.TruncateImmTo)
4982 Imm &= ((1 << III.TruncateImmTo) - 1);
4983 if (III.SignedImm) {
4985 if (!ActualValue.isSignedIntN(III.ImmWidth))
4988 uint64_t UnsignedMax = (1 << III.ImmWidth) - 1;
4996 if (PostRA && III.ZeroIsSpecialOrig != III.ZeroIsSpecialNew) {
4997 unsigned PosForOrigZero = III.ZeroIsSpecialOrig ? III.ZeroIsSpecialOrig :
4998 III.ZeroIsSpecialNew + 1;
5000 Register NewZeroReg = MI.getOperand(III.ZeroIsSpecialNew).getReg();
5004 ConstantOpNo != III.ZeroIsSpecialNew)
5027 MI.setDesc(get(III.ImmOpcode));
5028 if (ConstantOpNo == III.OpNoForForwarding) {
5058 replaceInstrOperandWithImm(MI, III.OpNoForForwarding, SH);
5067 replaceInstrOperandWithImm(MI, III.OpNoForForwarding, SH);
5076 else if (III.IsCommutative) {
5078 swapMIOperands(MI, ConstantOpNo, III.OpNoForForwarding);
5084 if (III.OpNoForForwarding != III.ImmOpNo)
5085 swapMIOperands(MI, III.OpNoForForwarding, III.ImmOpNo);
5090 if (!PostRA && III.ZeroIsSpecialOrig != III.ZeroIsSpecialNew) {
5091 if (III.ZeroIsSpecialNew) {
5092 // If operand at III.ZeroIsSpecialNew is physical reg(eg: ZERO/ZERO8), no
5094 Register RegToModify = MI.getOperand(III.ZeroIsSpecialNew).getReg();