Lines Matching refs:Sub
906 if (TheNeg->getOpcode() == Instruction::Sub) { in NegateValue()
983 for (auto Op : {Instruction::Add, Instruction::Sub, Instruction::Mul, in shouldConvertOrWithNoCommonBitsToAdd()
1019 static bool ShouldBreakUpSubtract(Instruction *Sub) { in ShouldBreakUpSubtract() argument
1021 if (match(Sub, m_Neg(m_Value())) || match(Sub, m_FNeg(m_Value()))) in ShouldBreakUpSubtract()
1025 if (isa<UndefValue>(Sub->getOperand(1))) in ShouldBreakUpSubtract()
1030 Value *V0 = Sub->getOperand(0); in ShouldBreakUpSubtract()
1032 isReassociableOp(V0, Instruction::Sub, Instruction::FSub)) in ShouldBreakUpSubtract()
1034 Value *V1 = Sub->getOperand(1); in ShouldBreakUpSubtract()
1036 isReassociableOp(V1, Instruction::Sub, Instruction::FSub)) in ShouldBreakUpSubtract()
1038 Value *VB = Sub->user_back(); in ShouldBreakUpSubtract()
1039 if (Sub->hasOneUse() && in ShouldBreakUpSubtract()
1041 isReassociableOp(VB, Instruction::Sub, Instruction::FSub))) in ShouldBreakUpSubtract()
1049 static BinaryOperator *BreakUpSubtract(Instruction *Sub, in BreakUpSubtract() argument
1056 Value *NegVal = NegateValue(Sub->getOperand(1), Sub, ToRedo); in BreakUpSubtract()
1057 BinaryOperator *New = CreateAdd(Sub->getOperand(0), NegVal, "", Sub, Sub); in BreakUpSubtract()
1058 Sub->setOperand(0, Constant::getNullValue(Sub->getType())); // Drop use of op. in BreakUpSubtract()
1059 Sub->setOperand(1, Constant::getNullValue(Sub->getType())); // Drop use of op. in BreakUpSubtract()
1060 New->takeName(Sub); in BreakUpSubtract()
1063 Sub->replaceAllUsesWith(New); in BreakUpSubtract()
1064 New->setDebugLoc(Sub->getDebugLoc()); in BreakUpSubtract()
2228 if (I->getOpcode() == Instruction::Sub) { in OptimizeInst()
2301 cast<Instruction>(BO->user_back())->getOpcode() == Instruction::Sub) in OptimizeInst()