reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
2449 if (Value *V = SimplifyOrInst(I.getOperand(0), I.getOperand(1), 2449 if (Value *V = SimplifyOrInst(I.getOperand(0), I.getOperand(1), 2450 SQ.getWithInstruction(&I))) 2451 return replaceInstUsesWith(I, V); 2453 if (SimplifyAssociativeOrCommutative(I)) 2454 return &I; 2456 if (Instruction *X = foldVectorBinop(I)) 2461 if (SimplifyDemandedInstructionBits(I)) 2462 return &I; 2465 if (Instruction *Xor = foldOrToXor(I, Builder)) 2469 if (Value *V = SimplifyUsingDistributiveLaws(I)) 2470 return replaceInstUsesWith(I, V); 2472 if (Value *V = SimplifyBSwap(I, Builder)) 2473 return replaceInstUsesWith(I, V); 2475 if (Instruction *FoldedLogic = foldBinOpIntoSelectOrPhi(I)) 2478 if (Instruction *BSwap = matchBSwap(I)) 2481 if (Instruction *Rotate = matchRotate(I)) 2486 if (match(&I, m_c_Or(m_OneUse(m_Xor(m_Value(X), m_APInt(CV))), m_Value(Y))) && 2487 !CV->isAllOnesValue() && MaskedValueIsZero(Y, *CV, 0, &I)) { 2491 return BinaryOperator::CreateXor(Or, ConstantInt::get(I.getType(), *CV)); 2495 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); 2495 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); 2508 MaskedValueIsZero(V2, ~C1->getValue(), 0, &I)) || // (V|N) 2510 MaskedValueIsZero(V1, ~C1->getValue(), 0, &I)))) // (N|V) 2516 MaskedValueIsZero(V2, ~C2->getValue(), 0, &I)) || // (V|N) 2518 MaskedValueIsZero(V1, ~C2->getValue(), 0, &I)))) // (N|V) 2560 return replaceInstUsesWith(I, V); 2562 return replaceInstUsesWith(I, V); 2564 return replaceInstUsesWith(I, V); 2566 return replaceInstUsesWith(I, V); 2568 return replaceInstUsesWith(I, V); 2570 return replaceInstUsesWith(I, V); 2572 return replaceInstUsesWith(I, V); 2574 return replaceInstUsesWith(I, V); 2592 if (Instruction *DeMorgan = matchDeMorgansLaws(I, Builder)) 2643 if (Value *Res = foldOrOfICmps(LHS, RHS, I)) 2644 return replaceInstUsesWith(I, Res); 2651 if (Value *Res = foldOrOfICmps(LHS, Cmp, I)) 2652 return replaceInstUsesWith(I, Builder.CreateOr(Res, Y)); 2654 if (Value *Res = foldOrOfICmps(LHS, Cmp, I)) 2655 return replaceInstUsesWith(I, Builder.CreateOr(Res, X)); 2659 if (Value *Res = foldOrOfICmps(Cmp, RHS, I)) 2660 return replaceInstUsesWith(I, Builder.CreateOr(Res, Y)); 2662 if (Value *Res = foldOrOfICmps(Cmp, RHS, I)) 2663 return replaceInstUsesWith(I, Builder.CreateOr(Res, X)); 2667 if (FCmpInst *LHS = dyn_cast<FCmpInst>(I.getOperand(0))) 2668 if (FCmpInst *RHS = dyn_cast<FCmpInst>(I.getOperand(1))) 2670 return replaceInstUsesWith(I, Res); 2672 if (Instruction *FoldedFCmps = reassociateFCmps(I, Builder)) 2675 if (Instruction *CastedOr = foldCastedBitwiseLogic(I)) 2681 return SelectInst::Create(A, ConstantInt::getSigned(I.getType(), -1), Op1); 2684 return SelectInst::Create(A, ConstantInt::getSigned(I.getType(), -1), Op0); 2717 Type *Ty = I.getType(); 2718 if (match(&I, m_c_Or(m_OneUse(m_AShr(m_NSWSub(m_Value(Y), m_Value(X)), 2729 canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(I))