Lines Matching defs:FalseVal

511                                                 Value *FalseVal) {
515 Value *FalseVal,
518 if (!TVI || !TVI->hasOneUse() || isa<Constant>(FalseVal))
523 if ((SFO & 1) && FalseVal == TVI->getOperand(0))
525 else if ((SFO & 2) && FalseVal == TVI->getOperand(1))
555 !computeKnownFPClass(FalseVal, FMF, fcNan, &SI).isKnownNeverNaN())
564 BinaryOperator::Create(TVI->getOpcode(), FalseVal, NewSel);
569 if (Instruction *R = TryFoldSelectIntoOp(SI, TrueVal, FalseVal, false))
572 if (Instruction *R = TryFoldSelectIntoOp(SI, FalseVal, TrueVal, true))
673 Value *FalseVal,
691 // Canonicalize so that ashr is in FalseVal.
693 std::swap(TrueVal, FalseVal);
696 match(FalseVal, m_AShr(m_Specific(X), m_Specific(Y))) &&
698 const auto *Ashr = cast<Instruction>(FalseVal);
728 Value *FalseVal,
765 if (match(FalseVal, m_BinOp(m_Specific(TrueVal), m_Power2(C2)))) {
767 BinOp = cast<BinaryOperator>(FalseVal);
769 } else if (match(TrueVal, m_BinOp(m_Specific(FalseVal), m_Power2(C2)))) {
770 Y = FalseVal;
861 auto *FalseVal = SI.getFalseValue();
873 std::swap(TrueVal, FalseVal);
881 !match(FalseVal, m_c_Mul(m_Specific(X), m_Value(Y))) ||
882 !isa<Instruction>(FalseVal))
893 auto *FalseValI = cast<Instruction>(FalseVal);
905 const Value *FalseVal,
915 std::swap(TrueVal, FalseVal);
918 if (!match(FalseVal, m_Zero()))
1092 Value *FalseVal,
1099 std::swap(TrueVal, FalseVal);
1102 if (!match(FalseVal,
1134 static Value *foldSelectCttzCtlz(ICmpInst *ICI, Value *TrueVal, Value *FalseVal,
1144 Value *SelectArg = FalseVal;
1193 static Value *canonicalizeSPF(ICmpInst &Cmp, Value *TrueVal, Value *FalseVal,
1201 matchDecomposedSelectPattern(&Cmp, TrueVal, FalseVal, LHS, RHS).Flavor;
1292 Value *TrueVal = Sel.getTrueValue(), *FalseVal = Sel.getFalseValue();
1295 std::swap(TrueVal, FalseVal);
1349 auto *FalseInst = dyn_cast<Instruction>(FalseVal);
1362 if (simplifyWithOpReplaced(FalseVal, CmpLHS, CmpRHS, SQ,
1365 simplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, SQ,
1373 return replaceInstUsesWith(Sel, FalseVal);
1724 Value *FalseVal = SI.getFalseValue();
1729 std::swap(TrueVal, FalseVal);
1749 return match(CmpRHS, m_Zero()) && match(FalseVal, matchInner);
1752 return match(FalseVal, m_c_BinOp(OuterOpc, m_NotForbidPoison(matchInner),
1755 return match(FalseVal, m_c_BinOp(OuterOpc, matchInner,
1758 return match(FalseVal,
1771 return IC.replaceInstUsesWith(SI, FalseVal);
1777 return IC.replaceInstUsesWith(SI, FalseVal);
1789 return IC.replaceInstUsesWith(SI, FalseVal);
1795 return IC.replaceInstUsesWith(SI, FalseVal);
1807 return IC.replaceInstUsesWith(SI, FalseVal);
1813 return IC.replaceInstUsesWith(SI, FalseVal);
1846 Value *FalseVal = SI.getFalseValue();
1855 } else if (CmpLHS == FalseVal && Pred == ICmpInst::ICMP_NE) {
1870 !match(TrueVal, m_Constant()) && !match(FalseVal, m_Constant()) &&
1911 match(FalseVal, m_Xor(m_Specific(X), m_APInt(C))) && *Y == *C)
1914 else if (!TrueWhenUnset && FalseVal == X &&
1918 else if (TrueWhenUnset && FalseVal == X &&
1923 match(FalseVal, m_Xor(m_Specific(X), m_APInt(C))) && *Y == *C)
1932 foldSelectICmpAndAnd(SI.getType(), ICI, TrueVal, FalseVal, Builder))
1935 if (Value *V = foldSelectICmpAndZeroShl(ICI, TrueVal, FalseVal, Builder))
1938 if (Instruction *V = foldSelectCtlzToCttz(ICI, TrueVal, FalseVal, Builder))
1941 if (Instruction *V = foldSelectZeroOrOnes(ICI, TrueVal, FalseVal, Builder))
1944 if (Value *V = foldSelectICmpAndBinOp(ICI, TrueVal, FalseVal, Builder))
1947 if (Value *V = foldSelectICmpLshrAshr(ICI, TrueVal, FalseVal, Builder))
1950 if (Value *V = foldSelectCttzCtlz(ICI, TrueVal, FalseVal, *this))
1953 if (Value *V = canonicalizeSaturatedSubtract(ICI, TrueVal, FalseVal, Builder))
1956 if (Value *V = canonicalizeSaturatedAdd(ICI, TrueVal, FalseVal, Builder))
1959 if (Value *V = foldAbsDiff(ICI, TrueVal, FalseVal, Builder))
2027 Value *FalseVal = SI.getFalseValue();
2029 auto *FI = dyn_cast<Instruction>(FalseVal);
2102 Value *FalseVal = SI.getFalseValue();
2106 !match(FalseVal, m_ExtractValue<0>(m_Specific(II))))
2116 Value *TrueVal, *FalseVal, *Op;
2119 m_Value(TrueVal), m_Value(FalseVal))))
2139 IsMinMax(TrueVal, FalseVal))
2146 IsMinMax(FalseVal, TrueVal))
2152 IsMinMax(TrueVal, FalseVal))
2157 IsMinMax(FalseVal, TrueVal))
2162 IsMinMax(FalseVal, TrueVal))
2167 IsMinMax(TrueVal, FalseVal))
2723 Value *FalseVal = SI.getFalseValue();
2737 std::swap(TrueVal, FalseVal);
2753 FalseVal == RemRes)
2762 FalseVal == RemRes)
2774 Value *TrueVal = Sel.getTrueValue(), *FalseVal = Sel.getFalseValue();
2786 match(Cond, m_c_ICmp(Pred, m_Specific(TrueVal), m_Specific(FalseVal))) &&
2788 return Pred == ICmpInst::ICMP_EQ ? FalseVal : TrueVal;
3014 Value *FalseVal = nullptr;
3057 m_Value(OuterSel.FalseVal)));
3061 std::swap(OuterSel.TrueVal, OuterSel.FalseVal);
3069 Value *InnerSelVal = IsAndVariant ? OuterSel.FalseVal : OuterSel.TrueVal;
3080 m_Value(InnerSel.FalseVal))))
3085 std::swap(InnerSel.TrueVal, InnerSel.FalseVal);
3108 std::swap(InnerSel.TrueVal, InnerSel.FalseVal);
3114 AltCond, IsAndVariant ? OuterSel.TrueVal : InnerSel.FalseVal,
3115 IsAndVariant ? InnerSel.TrueVal : OuterSel.FalseVal);
3119 !IsAndVariant ? SelInner : InnerSel.FalseVal);
3125 Value *FalseVal = SI.getFalseValue();
3143 if (impliesPoison(FalseVal, CondVal)) {
3145 return BinaryOperator::CreateOr(CondVal, FalseVal);
3149 impliesPoison(FalseVal, B)) {
3152 SI, Builder.CreateLogicalOr(A, Builder.CreateOr(B, FalseVal)));
3156 if (auto *RHS = dyn_cast<FCmpInst>(FalseVal))
3163 match(FalseVal, m_LogicalAnd(m_Value(C), m_Value(D))) &&
3164 (CondVal->hasOneUse() || FalseVal->hasOneUse())) {
3166 bool FalseLogicAnd = isa<SelectInst>(FalseVal);
3190 if (match(FalseVal, m_Zero())) {
3243 return SelectInst::Create(NotCond, FalseVal, Zero);
3246 if (match(FalseVal, m_Specific(One))) {
3261 (CondVal->hasOneUse() || FalseVal->hasOneUse()) &&
3267 match(TrueVal, m_One()) && match(FalseVal, m_Specific(B)))
3271 match(TrueVal, m_Specific(B)) && match(FalseVal, m_Zero()))
3282 Value *OrV = Builder.CreateSelect(C, One, FalseVal);
3286 if (match(CondVal, m_OneUse(m_c_And(m_Value(C), m_Specific(FalseVal))))) {
3289 return SelectInst::Create(FalseVal, OrV, Zero);
3295 Value *AndV = Builder.CreateSelect(NotC, FalseVal, Zero);
3301 m_OneUse(m_c_And(m_Value(C), m_Not(m_Specific(FalseVal)))))) {
3303 return SelectInst::Create(FalseVal, One, AndV);
3306 if (match(FalseVal, m_Zero()) || match(TrueVal, m_One())) {
3308 bool IsAnd = match(FalseVal, m_Zero()) ? true : false;
3309 Value *Op1 = IsAnd ? TrueVal : FalseVal;
3328 match(FalseVal, m_Zero())) {
3334 match(FalseVal, m_Zero())) {
3343 match(FalseVal, m_LogicalAnd(m_Value(A), m_Value(B)))) {
3350 std::optional<bool> Res = isImpliedCondition(FalseVal, B, DL, false);
3362 if (match(FalseVal, m_c_LogicalAnd(m_Not(m_Value(C)), m_Value(B))) &&
3365 auto *SelFVal = dyn_cast<SelectInst>(FalseVal);
3379 match(FalseVal, m_c_LogicalAnd(m_Specific(C), m_Value(B)))) {
3381 auto *SelFVal = dyn_cast<SelectInst>(FalseVal);
3494 Value *FalseVal = SI.getFalseValue();
3503 std::swap(FalseVal, TrueVal);
3509 if (!match(FalseVal, m_One()) ||
3542 Value *FalseVal, Instruction &CtxI,
3587 Value *FalseVal = SI.getFalseValue();
3590 if (Value *V = simplifySelectInst(CondVal, TrueVal, FalseVal,
3611 if (Value *S = simplifyWithOpReplaced(FalseVal, CondVal,
3627 // Do not handle i1 TrueVal and FalseVal otherwise would result in
3632 if (match(TrueVal, m_One()) && match(FalseVal, m_Zero()))
3636 if (match(TrueVal, m_AllOnes()) && match(FalseVal, m_Zero()))
3640 if (match(TrueVal, m_Zero()) && match(FalseVal, m_One())) {
3646 if (match(TrueVal, m_Zero()) && match(FalseVal, m_AllOnes())) {
3658 if ((Cmp0 == TrueVal && Cmp1 == FalseVal) ||
3659 (Cmp0 == FalseVal && Cmp1 == TrueVal)) {
3672 Value *NewSel = Builder.CreateSelect(NewCond, FalseVal, TrueVal);
3697 MatchCmp0 = FalseVal;
3701 MatchCmp1 = FalseVal;
3748 auto *FI = dyn_cast<Instruction>(FalseVal);
3781 if (auto *NewGep = SelectGepWithBase(TrueGep, FalseVal, false))
3783 if (auto *FalseGep = dyn_cast<GetElementPtrInst>(FalseVal))
3789 if (Instruction *FoldI = foldSelectIntoOp(SI, TrueVal, FalseVal))
3847 canSelectOperandBeMappingIntoPredBlock(FalseVal, SI))
3863 if (TrueSI->getFalseValue() == FalseVal && TrueSI->hasOneUse()) {
3871 if (SelectInst *FalseSI = dyn_cast<SelectInst>(FalseVal)) {
3915 if (match(FalseVal, m_OneUse(m_BinOp(FalseBO))) && !FalseBO->isIntDivRem()) {
3955 return replaceInstUsesWith(SI, FalseVal);
3985 if (match(FalseVal, m_Zero()) &&
3992 MaskedInst->setArgOperand(3, FalseVal /* Zero */);
3998 (match(FalseVal, m_MaskedLoad(m_Value(), m_Value(), m_Value(Mask),
4000 match(FalseVal, m_MaskedGather(m_Value(), m_Value(), m_Value(Mask),
4012 auto *MaskedInst = cast<IntrinsicInst>(FalseVal);
4042 if (Value *V = simplifySelectInst(B, TrueVal, FalseVal,
4044 return SelectInst::Create(A, IsAnd ? V : TrueVal, IsAnd ? FalseVal : V);
4049 if (Value *V = canonicalizeSPF(*Cmp, TrueVal, FalseVal, *this))
4051 IsAnd ? FalseVal : V);
4081 if (CondVal->getType() == SI.getType() && isKnownInversion(FalseVal, TrueVal))
4082 return BinaryOperator::CreateXor(CondVal, FalseVal);
4087 (!isa<Constant>(TrueVal) || !isa<Constant>(FalseVal))) {
4104 if (!isa<Constant>(FalseVal) &&
4105 hasAffectedValue(FalseVal, CC.AffectedValues, /*Depth=*/0)) {
4106 KnownBits Known = llvm::computeKnownBits(FalseVal, /*Depth=*/0, Q);