Home | History | Annotate | Download | only in Scalar

Lines Matching refs:BinaryOperator

169     void ReassociateExpression(BinaryOperator *I);
170 void RewriteExprTree(BinaryOperator *I, SmallVectorImpl<ValueEntry> &Ops);
171 Value *OptimizeExpression(BinaryOperator *I,
183 Value *OptimizeMul(BinaryOperator *I, SmallVectorImpl<ValueEntry> &Ops);
227 static BinaryOperator *isReassociableOp(Value *V, unsigned Opcode) {
232 return cast<BinaryOperator>(V);
236 static BinaryOperator *isReassociableOp(Value *V, unsigned Opcode1,
243 return cast<BinaryOperator>(V);
292 if (!BinaryOperator::isNot(I) && !BinaryOperator::isNeg(I) &&
293 !BinaryOperator::isFNeg(I))
303 assert(isa<BinaryOperator>(I) && "Expected binary operator.");
315 cast<BinaryOperator>(I)->swapOperands();
318 static BinaryOperator *CreateAdd(Value *S1, Value *S2, const Twine &Name,
321 return BinaryOperator::CreateAdd(S1, S2, Name, InsertBefore);
323 BinaryOperator *Res =
324 BinaryOperator::CreateFAdd(S1, S2, Name, InsertBefore);
330 static BinaryOperator *CreateMul(Value *S1, Value *S2, const Twine &Name,
333 return BinaryOperator::CreateMul(S1, S2, Name, InsertBefore);
335 BinaryOperator *Res =
336 BinaryOperator::CreateFMul(S1, S2, Name, InsertBefore);
342 static BinaryOperator *CreateNeg(Value *S1, const Twine &Name,
345 return BinaryOperator::CreateNeg(S1, Name, InsertBefore);
347 BinaryOperator *Res = BinaryOperator::CreateFNeg(S1, Name, InsertBefore);
354 static BinaryOperator *LowerNegateToMultiply(Instruction *Neg) {
359 BinaryOperator *Res = CreateMul(Neg->getOperand(1), NegOne, "", Neg, Neg);
534 static bool LinearizeExprTree(BinaryOperator *I,
552 SmallVector<std::pair<BinaryOperator*, APInt>, 8> Worklist; // (Op, Weight)
579 std::pair<BinaryOperator*, APInt> P = Worklist.pop_back_val();
590 if (BinaryOperator *BO = isReassociableOp(Op, Opcode)) {
629 if (BinaryOperator *BO = isReassociableOp(Op, Opcode)) {
660 if (BinaryOperator *BO = dyn_cast<BinaryOperator>(Op))
661 if ((Opcode == Instruction::Mul && BinaryOperator::isNeg(BO)) ||
662 (Opcode == Instruction::FMul && BinaryOperator::isFNeg(BO))) {
712 void Reassociate::RewriteExprTree(BinaryOperator *I,
727 SmallVector<BinaryOperator*, 8> NodesToRewrite;
729 BinaryOperator *Op = I;
748 BinaryOperator *ExpressionChanged = nullptr;
777 BinaryOperator *BO = isReassociableOp(OldLHS, Opcode);
783 BinaryOperator *BO = isReassociableOp(OldRHS, Opcode);
808 BinaryOperator *BO = isReassociableOp(Op->getOperand(1), Opcode);
822 BinaryOperator *BO = isReassociableOp(Op->getOperand(0), Opcode);
835 BinaryOperator *NewOp;
838 NewOp = BinaryOperator::Create(Instruction::BinaryOps(Opcode),
872 ExpressionChanged = cast<BinaryOperator>(*ExpressionChanged->user_begin());
906 if (BinaryOperator *I =
933 if (!BinaryOperator::isNeg(U) && !BinaryOperator::isFNeg(U))
940 BinaryOperator *TheNeg = cast<BinaryOperator>(U);
970 BinaryOperator *NewNeg = CreateNeg(V, V->getName() + ".neg", BI, BI);
978 if (BinaryOperator::isNeg(Sub) || BinaryOperator::isFNeg(Sub))
1006 static BinaryOperator *
1015 BinaryOperator *New = CreateAdd(Sub->getOperand(0), NegVal, "", Sub, Sub);
1030 static BinaryOperator *ConvertShiftToMul(Instruction *Shl) {
1034 BinaryOperator *Mul =
1035 BinaryOperator::CreateMul(Shl->getOperand(0), MulCst, "", Shl);
1046 bool NSW = cast<BinaryOperator>(Shl)->hasNoSignedWrap();
1047 bool NUW = cast<BinaryOperator>(Shl)->hasNoUnsignedWrap();
1097 BinaryOperator *BO = isReassociableOp(V, Instruction::Mul, Instruction::FMul);
1173 BinaryOperator *BO = isReassociableOp(V, Instruction::Mul, Instruction::FMul);
1194 if (BinaryOperator::isNot(Ops[i].Op)) { // Cannot occur for ^.
1195 Value *X = BinaryOperator::getNotArgument(Ops[i].Op);
1243 I = BinaryOperator::CreateAnd(Opnd, ConstantInt::get(Ctx, ConstOpnd),
1528 if (!BinaryOperator::isNeg(TheOp) && !BinaryOperator::isFNeg(TheOp) &&
1529 !BinaryOperator::isNot(TheOp))
1533 if (BinaryOperator::isNeg(TheOp) || BinaryOperator::isFNeg(TheOp))
1534 X = BinaryOperator::getNegArgument(TheOp);
1535 else if (BinaryOperator::isNot(TheOp))
1536 X = BinaryOperator::getNotArgument(TheOp);
1544 (BinaryOperator::isNeg(TheOp) || BinaryOperator::isFNeg(TheOp)))
1548 if (Ops.size() == 2 && BinaryOperator::isNot(TheOp))
1562 if (BinaryOperator::isNot(TheOp)) {
1581 BinaryOperator *BOp =
1646 ? BinaryOperator::CreateAdd(MaxOccVal, MaxOccVal)
1647 : BinaryOperator::CreateFAdd(MaxOccVal, MaxOccVal);
1652 BinaryOperator *BOp =
1846 Value *Reassociate::OptimizeMul(BinaryOperator *I,
1870 Value *Reassociate::OptimizeExpression(BinaryOperator *I,
1982 if (!isa<BinaryOperator>(User) || !User->hasNUsesOrMore(1))
2002 cast<BinaryOperator>(User)->swapOperands();
2006 BinaryOperator *NI;
2011 NI = BinaryOperator::CreateFSub(Op0, Op1);
2015 NI = BinaryOperator::CreateFAdd(Op0, Op1);
2033 if (!isa<BinaryOperator>(I))
2085 } else if (BinaryOperator::isNeg(I)) {
2095 if (BinaryOperator *Tmp = dyn_cast<BinaryOperator>(U))
2109 } else if (BinaryOperator::isFNeg(I)) {
2119 if (BinaryOperator *Tmp = dyn_cast<BinaryOperator>(U))
2131 BinaryOperator *BO = cast<BinaryOperator>(I);
2157 void Reassociate::ReassociateExpression(BinaryOperator *I) {