Lines Matching defs:Mul
145 static Value *foldMulShl1(BinaryOperator &Mul, bool CommuteOperands,
147 Value *X = Mul.getOperand(0), *Y = Mul.getOperand(1);
151 const bool HasNSW = Mul.hasNoSignedWrap();
152 const bool HasNUW = Mul.hasNoUnsignedWrap();
158 return Builder.CreateShl(X, Z, Mul.getName(), HasNUW, PropagateNSW);
173 return Builder.CreateAdd(Shl, FrX, Mul.getName(), HasNUW, PropagateNSW);
186 return Builder.CreateSub(Shl, FrX, Mul.getName());
237 BinaryOperator *Mul = cast<BinaryOperator>(I.getOperand(0));
239 if (HasNUW && Mul->hasNoUnsignedWrap())
241 if (HasNSW && Mul->hasNoSignedWrap() && Shl->isNotMinSignedValue())
1097 auto *Mul = cast<OverflowingBinaryOperator>(Op0);
1099 bool HasNUW = Mul->hasNoUnsignedWrap() && Shl->hasNoUnsignedWrap();
1100 bool HasNSW = Mul->hasNoSignedWrap() && Shl->hasNoSignedWrap();
1220 auto *Mul = BinaryOperator::Create(Instruction::Mul, X,
1223 Mul->setHasNoUnsignedWrap(!IsSigned && OBO->hasNoUnsignedWrap());
1224 Mul->setHasNoSignedWrap(OBO->hasNoSignedWrap());
1225 return Mul;
1246 auto *Mul = BinaryOperator::Create(Instruction::Mul, X,
1249 Mul->setHasNoUnsignedWrap(!IsSigned && OBO->hasNoUnsignedWrap());
1250 Mul->setHasNoSignedWrap(OBO->hasNoSignedWrap());
1251 return Mul;
1346 auto *Mul = cast<OverflowingBinaryOperator>(InnerDiv->getOperand(0));
1348 if (!IsSigned && Mul->hasNoUnsignedWrap())
1350 else if (IsSigned && Mul->hasNoSignedWrap())
1979 if (Instruction *Mul = foldFDivPowDivisor(I, Builder))
1980 return Mul;
1982 if (Instruction *Mul = foldFDivSqrtDivisor(I, Builder))
1983 return Mul;