reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
 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))