Home | History | Annotate | Download | only in Analysis

Lines Matching defs:Mul

296   const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(this);
297 if (!Mul) return false;
300 const SCEVConstant *SC = dyn_cast<SCEVConstant>(Mul->getOperand(0));
1406 const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(Ops[i]);
1407 if (Mul && isa<SCEVConstant>(Mul->getOperand(0))) {
1409 Scale * cast<SCEVConstant>(Mul->getOperand(0))->getValue()->getValue();
1410 if (Mul->getNumOperands() == 2 && isa<SCEVAddExpr>(Mul->getOperand(1))) {
1412 const SCEVAddExpr *Add = cast<SCEVAddExpr>(Mul->getOperand(1));
1420 SmallVector<const SCEV *, 4> MulOps(Mul->op_begin()+1, Mul->op_end());
1528 const SCEV *Mul = getMulExpr(Scale, Ops[i]);
1530 return Mul;
1531 Ops[i] = Mul;
1658 const SCEVMulExpr *Mul = cast<SCEVMulExpr>(Ops[Idx]);
1659 for (unsigned MulOp = 0, e = Mul->getNumOperands(); MulOp != e; ++MulOp) {
1660 const SCEV *MulOpSCEV = Mul->getOperand(MulOp);
1666 const SCEV *InnerMul = Mul->getOperand(MulOp == 0);
1667 if (Mul->getNumOperands() != 2) {
1670 SmallVector<const SCEV *, 4> MulOps(Mul->op_begin(),
1671 Mul->op_begin()+MulOp);
1672 MulOps.append(Mul->op_begin()+MulOp+1, Mul->op_end());
1701 const SCEV *InnerMul1 = Mul->getOperand(MulOp == 0);
1702 if (Mul->getNumOperands() != 2) {
1703 SmallVector<const SCEV *, 4> MulOps(Mul->op_begin(),
1704 Mul->op_begin()+MulOp);
1705 MulOps.append(Mul->op_begin()+MulOp+1, Mul->op_end());
1868 assert(!Ops.empty() && "Cannot get empty mul!");
1927 // If we have a mul by -1 of an add, try distributing the -1 among the
1935 const SCEV *Mul = getMulExpr(Ops[0], *I);
1936 if (!isa<SCEVMulExpr>(Mul)) AnyFolded = true;
1937 NewOps.push_back(Mul);
1964 // If there are mul operands inline them all into this expression.
1967 while (const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(Ops[Idx])) {
1968 // If we have an mul, expand the mul operands onto the end of the operands
1971 Ops.append(Mul->op_begin(), Mul->op_end());
1975 // If we deleted at least one mul, we added operands to the end of the list,
1990 // Scan all of the other operands to this mul and add them to the vector if
2012 // outer mul and the inner addrec are guaranteed to have no overflow.
2104 // Okay, it looks like we really DO need an mul expr. Check to see if we
3341 if (const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(S)) {
3342 ConstantRange X = getUnsignedRange(Mul->getOperand(0));
3343 for (unsigned i = 1, e = Mul->getNumOperands(); i != e; ++i)
3344 X = X.multiply(getUnsignedRange(Mul->getOperand(i)));
3345 return setUnsignedRange(Mul, ConservativeResult.intersectWith(X));
3482 if (const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(S)) {
3483 ConstantRange X = getSignedRange(Mul->getOperand(0));
3484 for (unsigned i = 1, e = Mul->getNumOperands(); i != e; ++i)
3485 X = X.multiply(getSignedRange(Mul->getOperand(i)));
3486 return setSignedRange(Mul, ConservativeResult.intersectWith(X));
3664 case Instruction::Mul: {
3669 Op->getValueID() == Instruction::Mul + Value::InstructionVal;
4030 if (const SCEVMulExpr *Mul = dyn_cast<SCEVMulExpr>(TCMul))
4031 TCMul = Mul->getOperand(0);