Lines Matching defs:ICI

921 static Value *canonicalizeSaturatedSubtract(const ICmpInst *ICI,
925 ICmpInst::Predicate Pred = ICI->getPredicate();
926 Value *A = ICI->getOperand(0);
927 Value *B = ICI->getOperand(1);
977 if (IsNegative && !TrueVal->hasOneUse() && !ICI->hasOneUse())
1142 static Instruction *foldSelectCtlzToCttz(ICmpInst *ICI, Value *TrueVal,
1146 if (!ICI->isEquality() || !match(ICI->getOperand(1), m_Zero()))
1149 if (ICI->getPredicate() == ICmpInst::ICMP_NE)
1163 Value *X = ICI->getOperand(0);
1185 static Value *foldSelectCttzCtlz(ICmpInst *ICI, Value *TrueVal, Value *FalseVal,
1187 ICmpInst::Predicate Pred = ICI->getPredicate();
1188 Value *CmpLHS = ICI->getOperand(0);
1189 Value *CmpRHS = ICI->getOperand(1);
1192 if (!ICI->isEquality())
1748 static Value *foldSelectInstWithICmpConst(SelectInst &SI, ICmpInst *ICI,
1753 if (!match(ICI, m_ICmp(Pred, m_Value(V), m_APInt(CmpC))))
1777 if (match(&SI, m_Select(m_Specific(ICI), m_APInt(C), m_BinOp(BO))))
1778 CPred = ICI->getPredicate();
1779 else if (match(&SI, m_Select(m_Specific(ICI), m_BinOp(BO), m_APInt(C))))
1780 CPred = ICI->getInversePredicate();
1837 static Instruction *foldSelectICmpEq(SelectInst &SI, ICmpInst *ICI,
1839 ICmpInst::Predicate Pred = ICI->getPredicate();
1845 Value *CmpLHS = ICI->getOperand(0);
1846 Value *CmpRHS = ICI->getOperand(1);
1916 ICmpInst *ICI) {
1918 canonicalizeSPF(*ICI, SI.getTrueValue(), SI.getFalseValue(), *this))
1921 if (Value *V = foldSelectInstWithICmpConst(SI, ICI, Builder))
1924 if (Value *V = canonicalizeClampLike(SI, *ICI, Builder, *this))
1928 tryToReuseConstantFromSelectInComparison(SI, *ICI, *this))
1931 if (Value *V = foldSelectICmpAnd(SI, ICI, Builder))
1938 ICmpInst::Predicate Pred = ICI->getPredicate();
1939 Value *CmpLHS = ICI->getOperand(0);
1940 Value *CmpRHS = ICI->getOperand(1);
1942 if (Instruction *NewSel = foldSelectICmpEq(SI, ICI, *this))
1951 ICI->hasOneUse()) {
1954 Value *IsNeg = Builder.CreateIsNeg(CmpLHS, ICI->getName());
1962 foldSelectICmpAndAnd(SI.getType(), ICI, TrueVal, FalseVal, Builder))
1965 if (Value *V = foldSelectICmpAndZeroShl(ICI, TrueVal, FalseVal, Builder))
1968 if (Instruction *V = foldSelectCtlzToCttz(ICI, TrueVal, FalseVal, Builder))
1971 if (Instruction *V = foldSelectZeroOrOnes(ICI, TrueVal, FalseVal, Builder))
1974 if (Value *V = foldSelectICmpAndBinOp(ICI, TrueVal, FalseVal, Builder))
1977 if (Value *V = foldSelectICmpLshrAshr(ICI, TrueVal, FalseVal, Builder))
1980 if (Value *V = foldSelectCttzCtlz(ICI, TrueVal, FalseVal, *this))
1983 if (Value *V = canonicalizeSaturatedSubtract(ICI, TrueVal, FalseVal, Builder))
1986 if (Value *V = canonicalizeSaturatedAdd(ICI, TrueVal, FalseVal, Builder))
1989 if (Value *V = foldAbsDiff(ICI, TrueVal, FalseVal, Builder))
1992 if (Value *V = foldSelectWithConstOpToBinOp(ICI, TrueVal, FalseVal, Builder))
3918 if (ICmpInst *ICI = dyn_cast<ICmpInst>(CondVal))
3919 if (Instruction *Result = foldSelectInstWithICmp(SI, ICI))