Home | History | Annotate | Download | only in InstCombine

Lines Matching refs:Op0

890       Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1);
893 return getNewICmpValue(isSigned, Code, Op0, Op1, Builder);
1216 Value *Op0 = I.getOperand(0);
1219 if (Value *Op0NotVal = dyn_castNotVal(Op0))
1221 if (Op0->hasOneUse() && Op1->hasOneUse()) {
1233 if (match(Op0, m_OneUse(m_Xor(m_ZExt(m_Value(A)), m_ConstantInt(C1)))) &&
1252 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
1257 if (Value *V = SimplifyAndInst(Op0, Op1, DL, TLI, DT, AC))
1276 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) {
1359 if (match(Op0, m_Trunc(m_And(m_Value(X), m_ConstantInt(YC))))) {
1372 if (SelectInst *SI = dyn_cast<SelectInst>(Op0))
1375 if (isa<PHINode>(Op0))
1386 if (match(Op0, m_Or(m_Value(A), m_Value(B))) &&
1393 match(Op0, m_Not(m_And(m_Value(C), m_Value(D)))) &&
1399 Value *tmpOp0 = Op0;
1401 if (Op0->hasOneUse() &&
1402 match(Op0, m_Xor(m_Value(A), m_Value(B)))) {
1404 tmpOp1 = Op0;
1425 if (match(Op0, m_Or(m_Not(m_Specific(Op1)), m_Value(A))) ||
1426 match(Op0, m_Or(m_Value(A), m_Not(m_Specific(Op1)))))
1428 if (match(Op1, m_Or(m_Not(m_Specific(Op0)), m_Value(A))) ||
1429 match(Op1, m_Or(m_Value(A), m_Not(m_Specific(Op0)))))
1430 return BinaryOperator::CreateAnd(A, Op0);
1433 if (match(Op0, m_Xor(m_Value(A), m_Value(B))))
1436 return BinaryOperator::CreateAnd(Op0, Builder->CreateNot(C));
1439 if (match(Op0, m_Xor(m_Xor(m_Value(A), m_Value(C)), m_Value(B))))
1441 if (Op0->hasOneUse() || cast<BinaryOperator>(Op0)->hasOneUse())
1445 if (match(Op0, m_Or(m_Value(A), m_Value(B))) &&
1450 if (match(Op0, m_Xor(m_Not(m_Value(A)), m_Value(B))) &&
1456 ICmpInst *LHS = dyn_cast<ICmpInst>(Op0);
1473 if (RHS && match(Op0, m_OneUse(m_And(m_Value(X), m_Value(Y))))) {
1490 if (CastInst *Op0C = dyn_cast<CastInst>(Op0)) {
1543 std::swap(Op0, Op1);
1548 if (match(Op0, m_SExt(m_Value(X))) &&
1555 if (match(Op0, m_Not(m_SExt(m_Value(X)))) &&
1557 Value *Zero = Constant::getNullValue(Op0->getType());
1562 std::swap(Op0, Op1);
1883 Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1);
1886 return getNewICmpValue(isSigned, Code, Op0, Op1, Builder);
2233 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
2238 if (Value *V = SimplifyOrInst(Op0, Op1, DL, TLI, DT, AC))
2257 if (match(Op0, m_And(m_Value(X), m_ConstantInt(C1))) &&
2259 Op0->hasOneUse()) {
2261 Or->takeName(Op0);
2267 if (match(Op0, m_Xor(m_Value(X), m_ConstantInt(C1))) &&
2268 Op0->hasOneUse()) {
2270 Or->takeName(Op0);
2276 if (SelectInst *SI = dyn_cast<SelectInst>(Op0))
2280 if (isa<PHINode>(Op0))
2289 bool OrOfOrs = match(Op0, m_Or(m_Value(), m_Value())) ||
2292 bool OrOfShifts = match(Op0, m_LogicalShift(m_Value(), m_Value())) &&
2295 bool OrOfAnds = match(Op0, m_And(m_Value(), m_Value())) &&
2303 if (Op0->hasOneUse() &&
2304 match(Op0, m_Xor(m_Value(A), m_ConstantInt(C1))) &&
2307 NOr->takeName(Op0);
2314 MaskedValueIsZero(Op0, C1->getValue(), 0, &I)) {
2315 Value *NOr = Builder->CreateOr(A, Op0);
2316 NOr->takeName(Op0);
2321 if (match(Op0, m_And(m_Not(m_Value(A)), m_Value(B))) &&
2326 if (match(Op0, m_And(m_Value(A), m_Value(B))) &&
2331 if (match(Op0, m_And(m_Value(A), m_Not(m_Value(B)))) &&
2336 if (match(Op0, m_Xor(m_Value(A), m_Value(B))) &&
2342 if (match(Op0, m_And(m_Value(A), m_Value(C))) &&
2421 Instruction *Ret = FoldOrWithConstants(I, Op0, A, V1, D);
2433 Instruction *Ret = FoldXorWithConstants(I, Op0, A, V1, D);
2439 if (match(Op0, m_Xor(m_Value(A), m_Value(B))))
2442 return BinaryOperator::CreateOr(Op0, C);
2445 if (match(Op0, m_Xor(m_Xor(m_Value(A), m_Value(C)), m_Value(B))))
2447 if (Op0->hasOneUse() || cast<BinaryOperator>(Op0)->hasOneUse())
2451 if (match(Op0, m_And(m_Or(m_Specific(Op1), m_Value(C)), m_Value(A))))
2459 if (match(Op0, m_Xor(m_Value(), m_Value()))) {
2460 std::swap(Op0, Op1);
2468 if (Op0 == A || Op0 == B)
2471 if (match(Op0, m_And(m_Specific(A), m_Specific(B))) ||
2472 match(Op0, m_And(m_Specific(B), m_Specific(A))))
2475 if (Op1->hasOneUse() && match(A, m_Not(m_Specific(Op0)))) {
2477 return BinaryOperator::CreateOr(Not, Op0);
2479 if (Op1->hasOneUse() && match(B, m_Not(m_Specific(Op0)))) {
2481 return BinaryOperator::CreateOr(Not, Op0);
2489 if ((Op0 == B->getOperand(0) || Op0 == B->getOperand(1)) &&
2492 Value *NotOp = Op0 == B->getOperand(0) ? B->getOperand(1) :
2495 return BinaryOperator::CreateOr(Not, Op0);
2499 if (match(Op0, m_And(m_Value(A), m_Value(B))) &&
2504 if (match(Op0, m_Xor(m_Not(m_Value(A)), m_Value(B))) &&
2509 std::swap(Op0, Op1);
2512 ICmpInst *LHS = dyn_cast<ICmpInst>(Op0);
2529 if (RHS && match(Op0, m_OneUse(m_Or(m_Value(X), m_Value(Y))))) {
2546 if (CastInst *Op0C = dyn_cast<CastInst>(Op0)) {
2582 if (match(Op0, m_SExt(m_Value(A))) && A->getType()->isIntegerTy(1))
2585 return SelectInst::Create(A, ConstantInt::getSigned(I.getType(), -1), Op0);
2592 if (Op0->hasOneUse() && !isa<ConstantInt>(Op1) &&
2593 match(Op0, m_Or(m_Value(A), m_ConstantInt(C1)))) {
2595 Inner->takeName(Op0);
2604 if (Op0->hasOneUse() && Op1->hasOneUse() &&
2605 match(Op0, m_Select(m_Value(X), m_Value(A), m_Value(B))) &&
2618 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
2623 if (Value *V = SimplifyXorInst(Op0, Op1, DL, TLI, DT, AC))
2680 if (RHS->isAllOnesValue() && Op0->hasOneUse())
2682 if (CmpInst *CI = dyn_cast<CmpInst>(Op0))
2690 if (CastInst *Op0C = dyn_cast<CastInst>(Op0)) {
2704 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) {
2770 if (SelectInst *SI = dyn_cast<SelectInst>(Op0))
2773 if (isa<PHINode>(Op0))
2782 if (A == Op0) { // B^(B|A) == (A|B)^B
2785 std::swap(Op0, Op1);
2786 } else if (B == Op0) { // B^(A|B) == (A|B)^B
2788 std::swap(Op0, Op1);
2792 if (A == Op0) { // A^(A&B) -> A^(B&A)
2796 if (B == Op0) { // A^(B&A) -> (B&A)^A
2798 std::swap(Op0, Op1);
2803 BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0);
2889 if (match(Op0, m_And(m_Value(A), m_Not(m_Value(B)))) &&
2902 Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1);
2906 getNewICmpValue(isSigned, Code, Op0, Op1,
2912 if (CastInst *Op0C = dyn_cast<CastInst>(Op0)) {