Lines Matching refs:III

3378     ImmInstrInfo III;  in getForwardingDefMI()  local
3391 if (!ConvertibleImmForm && !instrHasImmForm(Opc, IsVFReg, III, true)) in getForwardingDefMI()
3480 ImmInstrInfo III; in foldFrameOffset() local
3484 III)) in foldFrameOffset()
3526 if (III.ZeroIsSpecialOrig == III.ImmOpNo && in foldFrameOffset()
3549 MI.getOperand(III.ImmOpNo) in foldFrameOffset()
3553 MI.getOperand(III.OpNoForForwarding) in foldFrameOffset()
3593 ImmInstrInfo &III) const { in isImmInstrEligibleForFolding()
3608 PPC::isVFRegister(MI.getOperand(0).getReg()), III, true)) in isImmInstrEligibleForFolding()
3611 if (!III.IsSummingOperands) in isImmInstrEligibleForFolding()
3614 MachineOperand ImmOperand = MI.getOperand(III.ImmOpNo); in isImmInstrEligibleForFolding()
3615 MachineOperand RegOperand = MI.getOperand(III.OpNoForForwarding); in isImmInstrEligibleForFolding()
3712 ImmInstrInfo III; in convertToImmediateForm() local
3716 bool HasImmForm = instrHasImmForm(MI.getOpcode(), IsVFReg, III, PostRA); in convertToImmediateForm()
3721 transformToImmFormFedByAdd(MI, III, ForwardingOperand, *DefMI, in convertToImmediateForm()
3728 transformToImmFormFedByLI(MI, III, ForwardingOperand, *DefMI)) in convertToImmediateForm()
3877 ImmInstrInfo &III, bool PostRA) const { in instrHasImmForm() argument
3882 III.ImmOpNo = 2; in instrHasImmForm()
3883 III.OpNoForForwarding = 2; in instrHasImmForm()
3884 III.ImmWidth = 16; in instrHasImmForm()
3885 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
3886 III.TruncateImmTo = 0; in instrHasImmForm()
3887 III.IsSummingOperands = false; in instrHasImmForm()
3892 III.SignedImm = true; in instrHasImmForm()
3893 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3894 III.ZeroIsSpecialNew = 1; in instrHasImmForm()
3895 III.IsCommutative = true; in instrHasImmForm()
3896 III.IsSummingOperands = true; in instrHasImmForm()
3897 III.ImmOpcode = Opc == PPC::ADD4 ? PPC::ADDI : PPC::ADDI8; in instrHasImmForm()
3901 III.SignedImm = true; in instrHasImmForm()
3902 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3903 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3904 III.IsCommutative = true; in instrHasImmForm()
3905 III.IsSummingOperands = true; in instrHasImmForm()
3906 III.ImmOpcode = Opc == PPC::ADDC ? PPC::ADDIC : PPC::ADDIC8; in instrHasImmForm()
3909 III.SignedImm = true; in instrHasImmForm()
3910 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3911 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3912 III.IsCommutative = true; in instrHasImmForm()
3913 III.IsSummingOperands = true; in instrHasImmForm()
3914 III.ImmOpcode = PPC::ADDIC_rec; in instrHasImmForm()
3918 III.SignedImm = true; in instrHasImmForm()
3919 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3920 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3921 III.IsCommutative = false; in instrHasImmForm()
3922 III.ImmOpcode = Opc == PPC::SUBFC ? PPC::SUBFIC : PPC::SUBFIC8; in instrHasImmForm()
3926 III.SignedImm = true; in instrHasImmForm()
3927 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3928 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3929 III.IsCommutative = false; in instrHasImmForm()
3930 III.ImmOpcode = Opc == PPC::CMPW ? PPC::CMPWI : PPC::CMPDI; in instrHasImmForm()
3934 III.SignedImm = false; in instrHasImmForm()
3935 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3936 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3937 III.IsCommutative = false; in instrHasImmForm()
3938 III.ImmOpcode = Opc == PPC::CMPLW ? PPC::CMPLWI : PPC::CMPLDI; in instrHasImmForm()
3946 III.SignedImm = false; in instrHasImmForm()
3947 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3948 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3949 III.IsCommutative = true; in instrHasImmForm()
3953 III.ImmOpcode = PPC::ANDI_rec; in instrHasImmForm()
3956 III.ImmOpcode = PPC::ANDI8_rec; in instrHasImmForm()
3958 case PPC::OR: III.ImmOpcode = PPC::ORI; break; in instrHasImmForm()
3959 case PPC::OR8: III.ImmOpcode = PPC::ORI8; break; in instrHasImmForm()
3960 case PPC::XOR: III.ImmOpcode = PPC::XORI; break; in instrHasImmForm()
3961 case PPC::XOR8: III.ImmOpcode = PPC::XORI8; break; in instrHasImmForm()
3978 III.SignedImm = false; in instrHasImmForm()
3979 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
3980 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
3981 III.IsCommutative = false; in instrHasImmForm()
3986 III.ImmWidth = 16; in instrHasImmForm()
3989 III.TruncateImmTo = 5; in instrHasImmForm()
3991 III.TruncateImmTo = 6; in instrHasImmForm()
3994 case PPC::RLWNM: III.ImmOpcode = PPC::RLWINM; break; in instrHasImmForm()
3995 case PPC::RLWNM8: III.ImmOpcode = PPC::RLWINM8; break; in instrHasImmForm()
3997 III.ImmOpcode = PPC::RLWINM_rec; in instrHasImmForm()
4000 III.ImmOpcode = PPC::RLWINM8_rec; in instrHasImmForm()
4002 case PPC::SLW: III.ImmOpcode = PPC::RLWINM; break; in instrHasImmForm()
4003 case PPC::SLW8: III.ImmOpcode = PPC::RLWINM8; break; in instrHasImmForm()
4005 III.ImmOpcode = PPC::RLWINM_rec; in instrHasImmForm()
4008 III.ImmOpcode = PPC::RLWINM8_rec; in instrHasImmForm()
4010 case PPC::SRW: III.ImmOpcode = PPC::RLWINM; break; in instrHasImmForm()
4011 case PPC::SRW8: III.ImmOpcode = PPC::RLWINM8; break; in instrHasImmForm()
4013 III.ImmOpcode = PPC::RLWINM_rec; in instrHasImmForm()
4016 III.ImmOpcode = PPC::RLWINM8_rec; in instrHasImmForm()
4019 III.ImmWidth = 5; in instrHasImmForm()
4020 III.TruncateImmTo = 0; in instrHasImmForm()
4021 III.ImmOpcode = PPC::SRAWI; in instrHasImmForm()
4024 III.ImmWidth = 5; in instrHasImmForm()
4025 III.TruncateImmTo = 0; in instrHasImmForm()
4026 III.ImmOpcode = PPC::SRAWI_rec; in instrHasImmForm()
4040 III.SignedImm = false; in instrHasImmForm()
4041 III.ZeroIsSpecialOrig = 0; in instrHasImmForm()
4042 III.ZeroIsSpecialNew = 0; in instrHasImmForm()
4043 III.IsCommutative = false; in instrHasImmForm()
4048 III.ImmWidth = 16; in instrHasImmForm()
4051 III.TruncateImmTo = 6; in instrHasImmForm()
4053 III.TruncateImmTo = 7; in instrHasImmForm()
4056 case PPC::RLDCL: III.ImmOpcode = PPC::RLDICL; break; in instrHasImmForm()
4058 III.ImmOpcode = PPC::RLDICL_rec; in instrHasImmForm()
4060 case PPC::RLDCR: III.ImmOpcode = PPC::RLDICR; break; in instrHasImmForm()
4062 III.ImmOpcode = PPC::RLDICR_rec; in instrHasImmForm()
4064 case PPC::SLD: III.ImmOpcode = PPC::RLDICR; break; in instrHasImmForm()
4066 III.ImmOpcode = PPC::RLDICR_rec; in instrHasImmForm()
4068 case PPC::SRD: III.ImmOpcode = PPC::RLDICL; break; in instrHasImmForm()
4070 III.ImmOpcode = PPC::RLDICL_rec; in instrHasImmForm()
4073 III.ImmWidth = 6; in instrHasImmForm()
4074 III.TruncateImmTo = 0; in instrHasImmForm()
4075 III.ImmOpcode = PPC::SRADI; in instrHasImmForm()
4078 III.ImmWidth = 6; in instrHasImmForm()
4079 III.TruncateImmTo = 0; in instrHasImmForm()
4080 III.ImmOpcode = PPC::SRADI_rec; in instrHasImmForm()
4106 III.SignedImm = true; in instrHasImmForm()
4107 III.ZeroIsSpecialOrig = 1; in instrHasImmForm()
4108 III.ZeroIsSpecialNew = 2; in instrHasImmForm()
4109 III.IsCommutative = true; in instrHasImmForm()
4110 III.IsSummingOperands = true; in instrHasImmForm()
4111 III.ImmOpNo = 1; in instrHasImmForm()
4112 III.OpNoForForwarding = 2; in instrHasImmForm()
4115 case PPC::LBZX: III.ImmOpcode = PPC::LBZ; break; in instrHasImmForm()
4116 case PPC::LBZX8: III.ImmOpcode = PPC::LBZ8; break; in instrHasImmForm()
4117 case PPC::LHZX: III.ImmOpcode = PPC::LHZ; break; in instrHasImmForm()
4118 case PPC::LHZX8: III.ImmOpcode = PPC::LHZ8; break; in instrHasImmForm()
4119 case PPC::LHAX: III.ImmOpcode = PPC::LHA; break; in instrHasImmForm()
4120 case PPC::LHAX8: III.ImmOpcode = PPC::LHA8; break; in instrHasImmForm()
4121 case PPC::LWZX: III.ImmOpcode = PPC::LWZ; break; in instrHasImmForm()
4122 case PPC::LWZX8: III.ImmOpcode = PPC::LWZ8; break; in instrHasImmForm()
4124 III.ImmOpcode = PPC::LWA; in instrHasImmForm()
4125 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4127 case PPC::LDX: III.ImmOpcode = PPC::LD; III.ImmMustBeMultipleOf = 4; break; in instrHasImmForm()
4128 case PPC::LFSX: III.ImmOpcode = PPC::LFS; break; in instrHasImmForm()
4129 case PPC::LFDX: III.ImmOpcode = PPC::LFD; break; in instrHasImmForm()
4130 case PPC::STBX: III.ImmOpcode = PPC::STB; break; in instrHasImmForm()
4131 case PPC::STBX8: III.ImmOpcode = PPC::STB8; break; in instrHasImmForm()
4132 case PPC::STHX: III.ImmOpcode = PPC::STH; break; in instrHasImmForm()
4133 case PPC::STHX8: III.ImmOpcode = PPC::STH8; break; in instrHasImmForm()
4134 case PPC::STWX: III.ImmOpcode = PPC::STW; break; in instrHasImmForm()
4135 case PPC::STWX8: III.ImmOpcode = PPC::STW8; break; in instrHasImmForm()
4137 III.ImmOpcode = PPC::STD; in instrHasImmForm()
4138 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4140 case PPC::STFSX: III.ImmOpcode = PPC::STFS; break; in instrHasImmForm()
4141 case PPC::STFDX: III.ImmOpcode = PPC::STFD; break; in instrHasImmForm()
4164 III.SignedImm = true; in instrHasImmForm()
4165 III.ZeroIsSpecialOrig = 2; in instrHasImmForm()
4166 III.ZeroIsSpecialNew = 3; in instrHasImmForm()
4167 III.IsCommutative = false; in instrHasImmForm()
4168 III.IsSummingOperands = true; in instrHasImmForm()
4169 III.ImmOpNo = 2; in instrHasImmForm()
4170 III.OpNoForForwarding = 3; in instrHasImmForm()
4173 case PPC::LBZUX: III.ImmOpcode = PPC::LBZU; break; in instrHasImmForm()
4174 case PPC::LBZUX8: III.ImmOpcode = PPC::LBZU8; break; in instrHasImmForm()
4175 case PPC::LHZUX: III.ImmOpcode = PPC::LHZU; break; in instrHasImmForm()
4176 case PPC::LHZUX8: III.ImmOpcode = PPC::LHZU8; break; in instrHasImmForm()
4177 case PPC::LHAUX: III.ImmOpcode = PPC::LHAU; break; in instrHasImmForm()
4178 case PPC::LHAUX8: III.ImmOpcode = PPC::LHAU8; break; in instrHasImmForm()
4179 case PPC::LWZUX: III.ImmOpcode = PPC::LWZU; break; in instrHasImmForm()
4180 case PPC::LWZUX8: III.ImmOpcode = PPC::LWZU8; break; in instrHasImmForm()
4182 III.ImmOpcode = PPC::LDU; in instrHasImmForm()
4183 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4185 case PPC::LFSUX: III.ImmOpcode = PPC::LFSU; break; in instrHasImmForm()
4186 case PPC::LFDUX: III.ImmOpcode = PPC::LFDU; break; in instrHasImmForm()
4187 case PPC::STBUX: III.ImmOpcode = PPC::STBU; break; in instrHasImmForm()
4188 case PPC::STBUX8: III.ImmOpcode = PPC::STBU8; break; in instrHasImmForm()
4189 case PPC::STHUX: III.ImmOpcode = PPC::STHU; break; in instrHasImmForm()
4190 case PPC::STHUX8: III.ImmOpcode = PPC::STHU8; break; in instrHasImmForm()
4191 case PPC::STWUX: III.ImmOpcode = PPC::STWU; break; in instrHasImmForm()
4192 case PPC::STWUX8: III.ImmOpcode = PPC::STWU8; break; in instrHasImmForm()
4194 III.ImmOpcode = PPC::STDU; in instrHasImmForm()
4195 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4197 case PPC::STFSUX: III.ImmOpcode = PPC::STFSU; break; in instrHasImmForm()
4198 case PPC::STFDUX: III.ImmOpcode = PPC::STFDU; break; in instrHasImmForm()
4217 III.SignedImm = true; in instrHasImmForm()
4218 III.ZeroIsSpecialOrig = 1; in instrHasImmForm()
4219 III.ZeroIsSpecialNew = 2; in instrHasImmForm()
4220 III.IsCommutative = true; in instrHasImmForm()
4221 III.IsSummingOperands = true; in instrHasImmForm()
4222 III.ImmOpNo = 1; in instrHasImmForm()
4223 III.OpNoForForwarding = 2; in instrHasImmForm()
4224 III.ImmMustBeMultipleOf = 4; in instrHasImmForm()
4228 III.ImmOpcode = PPC::LXV; in instrHasImmForm()
4229 III.ImmMustBeMultipleOf = 16; in instrHasImmForm()
4234 III.ImmOpcode = PPC::LXSSP; in instrHasImmForm()
4236 III.ImmOpcode = PPC::LFS; in instrHasImmForm()
4237 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4243 III.ImmOpcode = PPC::DFLOADf32; in instrHasImmForm()
4248 III.ImmOpcode = PPC::LXSD; in instrHasImmForm()
4250 III.ImmOpcode = PPC::LFD; in instrHasImmForm()
4251 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4257 III.ImmOpcode = PPC::DFLOADf64; in instrHasImmForm()
4260 III.ImmOpcode = PPC::STXV; in instrHasImmForm()
4261 III.ImmMustBeMultipleOf = 16; in instrHasImmForm()
4266 III.ImmOpcode = PPC::STXSSP; in instrHasImmForm()
4268 III.ImmOpcode = PPC::STFS; in instrHasImmForm()
4269 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4275 III.ImmOpcode = PPC::DFSTOREf32; in instrHasImmForm()
4280 III.ImmOpcode = PPC::STXSD; in instrHasImmForm()
4282 III.ImmOpcode = PPC::STFD; in instrHasImmForm()
4283 III.ImmMustBeMultipleOf = 1; in instrHasImmForm()
4289 III.ImmOpcode = PPC::DFSTOREf64; in instrHasImmForm()
4339 const ImmInstrInfo &III, in isUseMIElgibleForForwarding() argument
4349 if (!III.IsSummingOperands) in isUseMIElgibleForForwarding()
4353 if (!III.ZeroIsSpecialOrig) in isUseMIElgibleForForwarding()
4358 if (OpNoForForwarding != III.OpNoForForwarding) in isUseMIElgibleForForwarding()
4363 if (MI.getOperand(III.ZeroIsSpecialOrig).getReg() != PPC::ZERO && in isUseMIElgibleForForwarding()
4364 MI.getOperand(III.ZeroIsSpecialOrig).getReg() != PPC::ZERO8) in isUseMIElgibleForForwarding()
4377 const ImmInstrInfo &III, in isDefMIElgibleForForwarding() argument
4442 const ImmInstrInfo &III, in isImmElgibleForForwarding() argument
4450 if (III.ImmMustBeMultipleOf > 4 || in isImmElgibleForForwarding()
4451 III.TruncateImmTo || III.ImmWidth != 16) in isImmElgibleForForwarding()
4460 if (ImmMO.getGlobal()->getPointerAlignment(DL) < III.ImmMustBeMultipleOf) in isImmElgibleForForwarding()
4473 if (III.SignedImm && !ActualValue.isSignedIntN(III.ImmWidth)) in isImmElgibleForForwarding()
4475 if (!III.SignedImm && !ActualValue.isIntN(III.ImmWidth)) in isImmElgibleForForwarding()
4479 if (Imm % III.ImmMustBeMultipleOf) in isImmElgibleForForwarding()
4481 if (III.TruncateImmTo) in isImmElgibleForForwarding()
4482 Imm &= ((1 << III.TruncateImmTo) - 1); in isImmElgibleForForwarding()
4747 ImmInstrInfo III; in transformToNewImmFormFedByAdd() local
4752 if (!instrHasImmForm(XFormOpcode, IsVFReg, III, PostRA)) in transformToNewImmFormFedByAdd()
4755 if (!III.IsSummingOperands) in transformToNewImmFormFedByAdd()
4758 if (OpNoForForwarding != III.OpNoForForwarding) in transformToNewImmFormFedByAdd()
4761 MachineOperand ImmOperandMI = MI.getOperand(III.ImmOpNo); in transformToNewImmFormFedByAdd()
4768 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO)) in transformToNewImmFormFedByAdd()
4777 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm, ImmBase)) in transformToNewImmFormFedByAdd()
4786 MI.getOperand(III.OpNoForForwarding).setReg(RegMO->getReg()); in transformToNewImmFormFedByAdd()
4787 MI.getOperand(III.ImmOpNo).setImm(Imm); in transformToNewImmFormFedByAdd()
4799 MachineInstr &MI, const ImmInstrInfo &III, unsigned OpNoForForwarding, in transformToImmFormFedByAdd() argument
4808 if (!isUseMIElgibleForForwarding(MI, III, OpNoForForwarding)) in transformToImmFormFedByAdd()
4815 if (!isDefMIElgibleForForwarding(DefMI, III, ImmMO, RegMO)) in transformToImmFormFedByAdd()
4822 if (!isImmElgibleForForwarding(*ImmMO, DefMI, III, Imm)) in transformToImmFormFedByAdd()
4844 MI.getOperand(III.OpNoForForwarding).ChangeToRegister(RegMO->getReg(), in transformToImmFormFedByAdd()
4852 replaceInstrOperandWithImm(MI, III.ZeroIsSpecialOrig, Imm); in transformToImmFormFedByAdd()
4868 for (unsigned i = MI.getNumOperands() - 1; i >= III.ZeroIsSpecialOrig; i--) { in transformToImmFormFedByAdd()
4883 MI.setDesc(get(III.ImmOpcode)); in transformToImmFormFedByAdd()
4894 const ImmInstrInfo &III, in transformToImmFormFedByLI() argument
4908 if ((ConstantOpNo != III.OpNoForForwarding) && !III.IsCommutative) in transformToImmFormFedByLI()
4910 if (Imm % III.ImmMustBeMultipleOf) in transformToImmFormFedByLI()
4912 if (III.TruncateImmTo) in transformToImmFormFedByLI()
4913 Imm &= ((1 << III.TruncateImmTo) - 1); in transformToImmFormFedByLI()
4914 if (III.SignedImm) { in transformToImmFormFedByLI()
4916 if (!ActualValue.isSignedIntN(III.ImmWidth)) in transformToImmFormFedByLI()
4919 uint64_t UnsignedMax = (1 << III.ImmWidth) - 1; in transformToImmFormFedByLI()
4927 if (PostRA && III.ZeroIsSpecialOrig != III.ZeroIsSpecialNew) { in transformToImmFormFedByLI()
4928 unsigned PosForOrigZero = III.ZeroIsSpecialOrig ? III.ZeroIsSpecialOrig : in transformToImmFormFedByLI()
4929 III.ZeroIsSpecialNew + 1; in transformToImmFormFedByLI()
4931 Register NewZeroReg = MI.getOperand(III.ZeroIsSpecialNew).getReg(); in transformToImmFormFedByLI()
4935 ConstantOpNo != III.ZeroIsSpecialNew) in transformToImmFormFedByLI()
4958 MI.setDesc(get(III.ImmOpcode)); in transformToImmFormFedByLI()
4959 if (ConstantOpNo == III.OpNoForForwarding) { in transformToImmFormFedByLI()
4989 replaceInstrOperandWithImm(MI, III.OpNoForForwarding, SH); in transformToImmFormFedByLI()
4998 replaceInstrOperandWithImm(MI, III.OpNoForForwarding, SH); in transformToImmFormFedByLI()
5007 else if (III.IsCommutative) { in transformToImmFormFedByLI()
5009 swapMIOperands(MI, ConstantOpNo, III.OpNoForForwarding); in transformToImmFormFedByLI()
5015 if (III.OpNoForForwarding != III.ImmOpNo) in transformToImmFormFedByLI()
5016 swapMIOperands(MI, III.OpNoForForwarding, III.ImmOpNo); in transformToImmFormFedByLI()
5021 if (!PostRA && III.ZeroIsSpecialOrig != III.ZeroIsSpecialNew) { in transformToImmFormFedByLI()
5022 if (III.ZeroIsSpecialNew) { in transformToImmFormFedByLI()
5025 Register RegToModify = MI.getOperand(III.ZeroIsSpecialNew).getReg(); in transformToImmFormFedByLI()