Lines Matching refs:Mul

443   const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(this);  in isNonConstantNegative()  local
444 if (!Mul) return false; in isNonConstantNegative()
447 const SCEVConstant *SC = dyn_cast<SCEVConstant>(Mul->getOperand(0)); in isNonConstantNegative()
2243 const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(Ops[i]); in CollectAddOperandsWithScales() local
2244 if (Mul && isa<SCEVConstant>(Mul->getOperand(0))) { in CollectAddOperandsWithScales()
2246 Scale * cast<SCEVConstant>(Mul->getOperand(0))->getAPInt(); in CollectAddOperandsWithScales()
2247 if (Mul->getNumOperands() == 2 && isa<SCEVAddExpr>(Mul->getOperand(1))) { in CollectAddOperandsWithScales()
2249 const SCEVAddExpr *Add = cast<SCEVAddExpr>(Mul->getOperand(1)); in CollectAddOperandsWithScales()
2257 SmallVector<const SCEV *, 4> MulOps(drop_begin(Mul->operands())); in CollectAddOperandsWithScales()
2300 case Instruction::Mul: in willNotOverflow()
2340 OBO->getOpcode() != Instruction::Mul) in getStrengthenedNoWrapFlagsFromBinOp()
2405 return Instruction::Mul; in StrengthenNoWrapFlags()
2528 const SCEV *Mul = getMulExpr(Scale, Ops[i], SCEV::FlagAnyWrap, Depth + 1); in getAddExpr() local
2530 return Mul; in getAddExpr()
2531 Ops[i] = Mul; in getAddExpr()
2550 if (const auto *Mul = dyn_cast<SCEVMulExpr>(Ops[Idx])) { in getAddExpr() local
2551 const auto *LastOp = Mul->getOperand(Mul->getNumOperands() - 1); in getAddExpr()
2645 const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(Ops[0]); in getAddExpr() local
2646 if (Mul && Mul->getNumOperands() == 2 && in getAddExpr()
2647 Mul->getOperand(0)->isAllOnesValue()) { in getAddExpr()
2650 if (matchURem(Mul->getOperand(1), X, Y) && X == Ops[1]) { in getAddExpr()
2738 const SCEVMulExpr *Mul = cast<SCEVMulExpr>(Ops[Idx]); in getAddExpr() local
2739 for (unsigned MulOp = 0, e = Mul->getNumOperands(); MulOp != e; ++MulOp) { in getAddExpr()
2740 const SCEV *MulOpSCEV = Mul->getOperand(MulOp); in getAddExpr()
2746 const SCEV *InnerMul = Mul->getOperand(MulOp == 0); in getAddExpr()
2747 if (Mul->getNumOperands() != 2) { in getAddExpr()
2750 SmallVector<const SCEV *, 4> MulOps(Mul->op_begin(), in getAddExpr()
2751 Mul->op_begin()+MulOp); in getAddExpr()
2752 MulOps.append(Mul->op_begin()+MulOp+1, Mul->op_end()); in getAddExpr()
2782 const SCEV *InnerMul1 = Mul->getOperand(MulOp == 0); in getAddExpr()
2783 if (Mul->getNumOperands() != 2) { in getAddExpr()
2784 SmallVector<const SCEV *, 4> MulOps(Mul->op_begin(), in getAddExpr()
2785 Mul->op_begin()+MulOp); in getAddExpr()
2786 MulOps.append(Mul->op_begin()+MulOp+1, Mul->op_end()); in getAddExpr()
3109 SCEVMulExpr *Mul = static_cast<SCEVMulExpr *>(S); in getMulExpr() local
3110 if (Mul->getNoWrapFlags(OrigFlags) != OrigFlags) in getMulExpr()
3111 Mul->setNoWrapFlags(ComputeFlags(Ops)); in getMulExpr()
3140 const SCEV *Mul = getMulExpr(Ops[0], AddOp, SCEV::FlagAnyWrap, in getMulExpr() local
3142 if (!isa<SCEVMulExpr>(Mul)) AnyFolded = true; in getMulExpr()
3143 NewOps.push_back(Mul); in getMulExpr()
3168 while (const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(Ops[Idx])) { in getMulExpr() local
3174 Ops.append(Mul->op_begin(), Mul->op_end()); in getMulExpr()
3526 const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(LHS); in getUDivExactExpr() local
3527 if (!Mul || !Mul->hasNoUnsignedWrap()) in getUDivExactExpr()
3533 if (const auto *LHSCst = dyn_cast<SCEVConstant>(Mul->getOperand(0))) { in getUDivExactExpr()
3535 SmallVector<const SCEV *, 2> Operands(drop_begin(Mul->operands())); in getUDivExactExpr()
3550 Operands.append(Mul->op_begin() + 1, Mul->op_end()); in getUDivExactExpr()
3553 Mul = dyn_cast<SCEVMulExpr>(LHS); in getUDivExactExpr()
3554 if (!Mul) in getUDivExactExpr()
3560 for (int i = 0, e = Mul->getNumOperands(); i != e; ++i) { in getUDivExactExpr()
3561 if (Mul->getOperand(i) == RHS) { in getUDivExactExpr()
3563 Operands.append(Mul->op_begin(), Mul->op_begin() + i); in getUDivExactExpr()
3564 Operands.append(Mul->op_begin() + i + 1, Mul->op_end()); in getUDivExactExpr()
5097 case Instruction::Mul: in MatchBinaryOp()
5147 if (BinOp == Instruction::Mul || !isOverflowIntrinsicNoWrap(WO, DT)) in MatchBinaryOp()
6447 if (const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(S)) { in getRangeRef() local
6448 ConstantRange X = getRangeRef(Mul->getOperand(0), SignHint); in getRangeRef()
6449 for (unsigned i = 1, e = Mul->getNumOperands(); i != e; ++i) in getRangeRef()
6450 X = X.multiply(getRangeRef(Mul->getOperand(i), SignHint)); in getRangeRef()
6451 return setRange(Mul, SignHint, in getRangeRef()
7281 case Instruction::Mul: { in getOperandsToCreate()
7291 if (!NewBO || NewBO->Opcode != Instruction::Mul) { in getOperandsToCreate()
7500 case Instruction::Mul: { in createSCEV()
7520 if (!NewBO || NewBO->Opcode != Instruction::Mul) { in createSCEV()
7741 APInt Mul = APInt::getOneBitSet(BitWidth - AShrAmt, in createSCEV() local
7745 getConstant(Mul)), OuterTy); in createSCEV()
14479 const auto *Mul = dyn_cast<SCEVMulExpr>(Add->getOperand(0)); in matchURem() local
14481 if (Mul == nullptr) in matchURem()
14495 if (Mul->getNumOperands() == 3 && isa<SCEVConstant>(Mul->getOperand(0))) in matchURem()
14496 return MatchURemWithDivisor(Mul->getOperand(1)) || in matchURem()
14497 MatchURemWithDivisor(Mul->getOperand(2)); in matchURem()
14500 if (Mul->getNumOperands() == 2) in matchURem()
14501 return MatchURemWithDivisor(Mul->getOperand(1)) || in matchURem()
14502 MatchURemWithDivisor(Mul->getOperand(0)) || in matchURem()
14503 MatchURemWithDivisor(getNegativeSCEV(Mul->getOperand(1))) || in matchURem()
14504 MatchURemWithDivisor(getNegativeSCEV(Mul->getOperand(0))); in matchURem()