Lines Matching refs:FalseVal

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