Lines Matching defs:FalseVal
524 Value *FalseVal) {
528 Value *FalseVal,
531 if (!TVI || !TVI->hasOneUse() || isa<Constant>(FalseVal))
536 if ((SFO & 1) && FalseVal == TVI->getOperand(0))
538 else if ((SFO & 2) && FalseVal == TVI->getOperand(1))
565 !computeKnownFPClass(FalseVal, FMF, fcNan, &SI).isKnownNeverNaN())
574 BinaryOperator::Create(TVI->getOpcode(), FalseVal, NewSel);
587 if (Instruction *R = TryFoldSelectIntoOp(SI, TrueVal, FalseVal, false))
590 if (Instruction *R = TryFoldSelectIntoOp(SI, FalseVal, TrueVal, true))
691 Value *FalseVal,
709 // Canonicalize so that ashr is in FalseVal.
711 std::swap(TrueVal, FalseVal);
714 match(FalseVal, m_AShr(m_Specific(X), m_Specific(Y))) &&
716 const auto *Ashr = cast<Instruction>(FalseVal);
746 Value *FalseVal,
784 if (match(FalseVal, m_BinOp(m_Specific(TrueVal), m_Power2(C2)))) {
786 BinOp = cast<BinaryOperator>(FalseVal);
788 } else if (match(TrueVal, m_BinOp(m_Specific(FalseVal), m_Power2(C2)))) {
789 Y = FalseVal;
880 auto *FalseVal = SI.getFalseValue();
892 std::swap(TrueVal, FalseVal);
900 !match(FalseVal, m_c_Mul(m_Specific(X), m_Value(Y))) ||
901 !isa<Instruction>(FalseVal))
912 auto *FalseValI = cast<Instruction>(FalseVal);
923 const Value *FalseVal,
933 std::swap(TrueVal, FalseVal);
936 if (!match(FalseVal, m_Zero()))
1143 Value *FalseVal,
1150 std::swap(TrueVal, FalseVal);
1153 if (!match(FalseVal,
1185 static Value *foldSelectCttzCtlz(ICmpInst *ICI, Value *TrueVal, Value *FalseVal,
1195 Value *SelectArg = FalseVal;
1248 static Value *canonicalizeSPF(ICmpInst &Cmp, Value *TrueVal, Value *FalseVal,
1256 matchDecomposedSelectPattern(&Cmp, TrueVal, FalseVal, LHS, RHS).Flavor;
1333 Value *TrueVal = Sel.getTrueValue(), *FalseVal = Sel.getFalseValue();
1336 std::swap(TrueVal, FalseVal);
1391 auto *FalseInst = dyn_cast<Instruction>(FalseVal);
1404 if (simplifyWithOpReplaced(FalseVal, CmpLHS, CmpRHS, SQ,
1407 simplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, SQ,
1415 return replaceInstUsesWith(Sel, FalseVal);
1801 Value *FalseVal) {
1810 if (!match(FalseVal, m_c_ICmp(Pred, m_Specific(CmpLHS), m_Value(B))))
1844 Value *FalseVal = SI.getFalseValue();
1849 std::swap(TrueVal, FalseVal);
1852 foldSelectWithExtremeEqCond(CmpLHS, CmpRHS, TrueVal, FalseVal))
1861 Value *FalseVal,
1875 std::swap(FalseVal, TrueVal);
1879 if (!match(TrueVal, m_BinOp(BOp)) || !match(FalseVal, m_Constant(C3)))
1937 Value *FalseVal = SI.getFalseValue();
1950 !match(TrueVal, m_Constant()) && !match(FalseVal, m_Constant()) &&
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))
2025 Value *FalseVal = SI.getFalseValue();
2027 auto *FI = dyn_cast<Instruction>(FalseVal);
2100 Value *FalseVal = SI.getFalseValue();
2104 !match(FalseVal, m_ExtractValue<0>(m_Specific(II))))
2114 Value *TrueVal, *FalseVal, *Op;
2117 m_Value(TrueVal), m_Value(FalseVal))))
2137 IsMinMax(TrueVal, FalseVal))
2144 IsMinMax(FalseVal, TrueVal))
2150 IsMinMax(TrueVal, FalseVal))
2155 IsMinMax(FalseVal, TrueVal))
2160 IsMinMax(FalseVal, TrueVal))
2165 IsMinMax(TrueVal, FalseVal))
2721 Value *FalseVal = SI.getFalseValue();
2735 std::swap(TrueVal, FalseVal);
2751 FalseVal == RemRes)
2760 FalseVal == RemRes)
2772 Value *TrueVal = Sel.getTrueValue(), *FalseVal = Sel.getFalseValue();
2784 match(Cond, m_c_ICmp(Pred, m_Specific(TrueVal), m_Specific(FalseVal))) &&
2786 return Pred == ICmpInst::ICMP_EQ ? FalseVal : TrueVal;
3012 Value *FalseVal = nullptr;
3055 m_Value(OuterSel.FalseVal)));
3059 std::swap(OuterSel.TrueVal, OuterSel.FalseVal);
3067 Value *InnerSelVal = IsAndVariant ? OuterSel.FalseVal : OuterSel.TrueVal;
3078 m_Value(InnerSel.FalseVal))))
3083 std::swap(InnerSel.TrueVal, InnerSel.FalseVal);
3106 std::swap(InnerSel.TrueVal, InnerSel.FalseVal);
3112 AltCond, IsAndVariant ? OuterSel.TrueVal : InnerSel.FalseVal,
3113 IsAndVariant ? InnerSel.TrueVal : OuterSel.FalseVal);
3117 !IsAndVariant ? SelInner : InnerSel.FalseVal);
3156 Value *FalseVal = SI.getFalseValue();
3174 if (impliesPoisonOrCond(FalseVal, CondVal, /*Expected=*/false)) {
3176 return BinaryOperator::CreateOr(CondVal, FalseVal);
3180 impliesPoisonOrCond(FalseVal, B, /*Expected=*/false)) {
3183 SI, Builder.CreateLogicalOr(A, Builder.CreateOr(B, FalseVal)));
3188 match(FalseVal, m_LogicalAnd(m_Value(C), m_Value(D))) &&
3189 (CondVal->hasOneUse() || FalseVal->hasOneUse())) {
3191 bool FalseLogicAnd = isa<SelectInst>(FalseVal);
3215 if (match(FalseVal, m_Zero())) {
3262 return SelectInst::Create(NotCond, FalseVal, Zero);
3265 if (match(FalseVal, m_Specific(One))) {
3280 (CondVal->hasOneUse() || FalseVal->hasOneUse()) &&
3286 match(TrueVal, m_One()) && match(FalseVal, m_Specific(B)))
3290 match(TrueVal, m_Specific(B)) && match(FalseVal, m_Zero()))
3301 Value *OrV = Builder.CreateSelect(C, One, FalseVal);
3305 if (match(CondVal, m_OneUse(m_c_And(m_Value(C), m_Specific(FalseVal))))) {
3308 return SelectInst::Create(FalseVal, OrV, Zero);
3314 Value *AndV = Builder.CreateSelect(NotC, FalseVal, Zero);
3320 m_OneUse(m_c_And(m_Value(C), m_Not(m_Specific(FalseVal)))))) {
3322 return SelectInst::Create(FalseVal, One, AndV);
3325 if (match(FalseVal, m_Zero()) || match(TrueVal, m_One())) {
3327 bool IsAnd = match(FalseVal, m_Zero()) ? true : false;
3328 Value *Op1 = IsAnd ? TrueVal : FalseVal;
3345 match(FalseVal, m_Zero())) {
3351 match(FalseVal, m_Zero())) {
3360 match(FalseVal, m_LogicalAnd(m_Value(A), m_Value(B)))) {
3367 std::optional<bool> Res = isImpliedCondition(FalseVal, B, DL, false);
3379 if (match(FalseVal, m_c_LogicalAnd(m_Not(m_Value(C)), m_Value(B))) &&
3382 auto *SelFVal = dyn_cast<SelectInst>(FalseVal);
3396 match(FalseVal, m_c_LogicalAnd(m_Specific(C), m_Value(B)))) {
3398 auto *SelFVal = dyn_cast<SelectInst>(FalseVal);
3512 Value *FalseVal = SI.getFalseValue();
3521 std::swap(FalseVal, TrueVal);
3527 if (!match(FalseVal, m_One()) ||
3646 Value *FalseVal, Instruction &CtxI,
3753 Value *FalseVal = SI.getFalseValue();
3756 if (Value *V = simplifySelectInst(CondVal, TrueVal, FalseVal,
3777 if (Value *S = simplifyWithOpReplaced(FalseVal, CondVal,
3784 replaceInInstruction(FalseVal, CondVal,
3799 // Do not handle i1 TrueVal and FalseVal otherwise would result in
3804 if (match(TrueVal, m_One()) && match(FalseVal, m_Zero()))
3808 if (match(TrueVal, m_AllOnes()) && match(FalseVal, m_Zero()))
3812 if (match(TrueVal, m_Zero()) && match(FalseVal, m_One())) {
3818 if (match(TrueVal, m_Zero()) && match(FalseVal, m_AllOnes())) {
3830 if ((Cmp0 == TrueVal && Cmp1 == FalseVal) ||
3831 (Cmp0 == FalseVal && Cmp1 == TrueVal)) {
3843 Builder.CreateSelectFMF(NewCond, FalseVal, TrueVal, FCmp);
3868 MatchCmp0 = FalseVal;
3872 MatchCmp1 = FalseVal;
3933 auto *FI = dyn_cast<Instruction>(FalseVal);
3966 if (auto *NewGep = SelectGepWithBase(TrueGep, FalseVal, false))
3968 if (auto *FalseGep = dyn_cast<GetElementPtrInst>(FalseVal))
3974 if (Instruction *FoldI = foldSelectIntoOp(SI, TrueVal, FalseVal))
4041 if (TrueSI->getFalseValue() == FalseVal && TrueSI->hasOneUse()) {
4049 if (SelectInst *FalseSI = dyn_cast<SelectInst>(FalseVal)) {
4093 if (match(FalseVal, m_OneUse(m_BinOp(FalseBO))) && !FalseBO->isIntDivRem()) {
4133 return replaceInstUsesWith(SI, FalseVal);
4166 if (match(FalseVal, m_Zero()) &&
4173 MaskedInst->setArgOperand(3, FalseVal /* Zero */);
4179 (match(FalseVal, m_MaskedLoad(m_Value(), m_Value(), m_Value(Mask),
4181 match(FalseVal, m_MaskedGather(m_Value(), m_Value(), m_Value(Mask),
4193 auto *MaskedInst = cast<IntrinsicInst>(FalseVal);
4229 if (Value *V = simplifySelectInst(B, TrueVal, FalseVal,
4231 return SelectInst::Create(A, IsAnd ? V : TrueVal, IsAnd ? FalseVal : V);
4236 if (Value *V = canonicalizeSPF(*Cmp, TrueVal, FalseVal, *this))
4238 IsAnd ? FalseVal : V);
4268 if (CondVal->getType() == SI.getType() && isKnownInversion(FalseVal, TrueVal))
4269 return BinaryOperator::CreateXor(CondVal, FalseVal);
4274 (!isa<Constant>(TrueVal) || !isa<Constant>(FalseVal))) {
4291 if (!isa<Constant>(FalseVal) &&
4292 hasAffectedValue(FalseVal, CC.AffectedValues, /*Depth=*/0)) {
4293 KnownBits Known = llvm::computeKnownBits(FalseVal, /*Depth=*/0, Q);
4309 if (FalseVal == Trunc)
4310 return replaceOperand(SI, 2, ConstantInt::get(FalseVal->getType(), 0));
4316 if (FalseVal == Trunc)
4317 return replaceOperand(SI, 2, ConstantInt::get(FalseVal->getType(), 0));