Lines Matching refs:ICI

777 static Value *canonicalizeSaturatedSubtract(const ICmpInst *ICI,  in canonicalizeSaturatedSubtract()  argument
781 ICmpInst::Predicate Pred = ICI->getPredicate(); in canonicalizeSaturatedSubtract()
793 Value *A = ICI->getOperand(0); in canonicalizeSaturatedSubtract()
794 Value *B = ICI->getOperand(1); in canonicalizeSaturatedSubtract()
821 if (IsNegative && !TrueVal->hasOneUse() && !ICI->hasOneUse()) in canonicalizeSaturatedSubtract()
910 static Instruction *foldSelectCtlzToCttz(ICmpInst *ICI, Value *TrueVal, in foldSelectCtlzToCttz() argument
914 if (!ICI->isEquality() || !match(ICI->getOperand(1), m_Zero())) in foldSelectCtlzToCttz()
917 if (ICI->getPredicate() == ICmpInst::ICMP_NE) in foldSelectCtlzToCttz()
927 Value *X = ICI->getOperand(0); in foldSelectCtlzToCttz()
949 static Value *foldSelectCttzCtlz(ICmpInst *ICI, Value *TrueVal, Value *FalseVal, in foldSelectCttzCtlz() argument
951 ICmpInst::Predicate Pred = ICI->getPredicate(); in foldSelectCttzCtlz()
952 Value *CmpLHS = ICI->getOperand(0); in foldSelectCttzCtlz()
953 Value *CmpRHS = ICI->getOperand(1); in foldSelectCttzCtlz()
956 if (!ICI->isEquality() || !match(CmpRHS, m_Zero())) in foldSelectCttzCtlz()
1538 static Value *foldSelectInstWithICmpConst(SelectInst &SI, ICmpInst *ICI) { in foldSelectInstWithICmpConst() argument
1542 if (!match(ICI, m_ICmp(Pred, m_Value(V), m_APInt(CmpC)))) in foldSelectInstWithICmpConst()
1548 if (match(&SI, m_Select(m_Specific(ICI), m_APInt(C), m_BinOp(BO)))) in foldSelectInstWithICmpConst()
1549 CPred = ICI->getPredicate(); in foldSelectInstWithICmpConst()
1550 else if (match(&SI, m_Select(m_Specific(ICI), m_BinOp(BO), m_APInt(C)))) in foldSelectInstWithICmpConst()
1551 CPred = ICI->getInversePredicate(); in foldSelectInstWithICmpConst()
1570 ICmpInst *ICI) { in foldSelectInstWithICmp() argument
1571 if (Instruction *NewSel = foldSelectValueEquivalence(SI, *ICI)) in foldSelectInstWithICmp()
1574 if (Instruction *NewSPF = canonicalizeSPF(SI, *ICI, *this)) in foldSelectInstWithICmp()
1577 if (Value *V = foldSelectInstWithICmpConst(SI, ICI)) in foldSelectInstWithICmp()
1580 if (Value *V = canonicalizeClampLike(SI, *ICI, Builder)) in foldSelectInstWithICmp()
1584 tryToReuseConstantFromSelectInComparison(SI, *ICI, *this)) in foldSelectInstWithICmp()
1587 bool Changed = adjustMinMax(SI, *ICI); in foldSelectInstWithICmp()
1589 if (Value *V = foldSelectICmpAnd(SI, ICI, Builder)) in foldSelectInstWithICmp()
1595 ICmpInst::Predicate Pred = ICI->getPredicate(); in foldSelectInstWithICmp()
1596 Value *CmpLHS = ICI->getOperand(0); in foldSelectInstWithICmp()
1597 Value *CmpRHS = ICI->getOperand(1); in foldSelectInstWithICmp()
1616 ICI->hasOneUse()) { in foldSelectInstWithICmp()
1619 Value *IsNeg = Builder.CreateIsNeg(CmpLHS, ICI->getName()); in foldSelectInstWithICmp()
1677 foldSelectICmpAndAnd(SI.getType(), ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
1680 if (Instruction *V = foldSelectCtlzToCttz(ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
1683 if (Instruction *V = foldSelectZeroOrOnes(ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
1686 if (Value *V = foldSelectICmpAndOr(ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
1689 if (Value *V = foldSelectICmpLshrAshr(ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
1692 if (Value *V = foldSelectCttzCtlz(ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
1695 if (Value *V = canonicalizeSaturatedSubtract(ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
1698 if (Value *V = canonicalizeSaturatedAdd(ICI, TrueVal, FalseVal, Builder)) in foldSelectInstWithICmp()
2894 if (ICmpInst *ICI = dyn_cast<ICmpInst>(CondVal)) in visitSelectInst() local
2895 if (Instruction *Result = foldSelectInstWithICmp(SI, ICI)) in visitSelectInst()