Lines Matching defs:Op0

409   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
410 assert(Op0->getType() == Op1->getType());
417 return BinaryOperator::Create(I.getOpcode(), Op0, NewExt);
425 if (isa<Constant>(Op0))
431 if (Instruction *Res = FoldShiftByConstant(Op0, CUI, I))
442 if (match(Op0, m_Constant(C)) &&
463 if (match(Op0, m_APInt(AC)) && match(Op1, m_Add(m_Value(A), m_APInt(AddC))) &&
767 Instruction *InstCombinerImpl::FoldShiftByConstant(Value *Op0, Constant *C1,
774 if (match(Op0, m_BinOp(I.getOpcode(), m_ImmConstant(C2), m_Value(X)))) {
777 BinaryOperator *BO0 = cast<BinaryOperator>(Op0);
794 match(Op0, m_SDiv(m_Value(X), m_APInt(DivC))) && !DivC->isZero() &&
815 canEvaluateShifted(Op0, Op1C->getZExtValue(), IsLeftShift, *this, &I)) {
819 << *Op0 << "\n SH: " << I << "\n");
822 I, getShiftedValue(Op0, Op1C->getZExtValue(), IsLeftShift, *this, DL));
828 if (!Op0->hasOneUse())
831 if (auto *Op0BO = dyn_cast<BinaryOperator>(Op0)) {
860 if (match(Op0, m_Select(m_Value(Cond), m_OneUse(m_BinOp(TBO)),
877 if (match(Op0, m_Select(m_Value(Cond), m_Value(TrueVal),
1035 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
1046 if (match(Op0, m_OneUse(m_ZExt(m_Value(X))))) {
1054 if (match(Op0, m_Shr(m_Value(X), m_Specific(Op1)))) {
1060 if (match(Op0, m_Exact(m_Shr(m_Value(X), m_APInt(C1)))) &&
1070 cast<Instruction>(Op0)->getOpcode() == Instruction::LShr &&
1079 cast<BinaryOperator>(Op0)->getOpcode(), X, ShiftDiff);
1085 if (match(Op0, m_OneUse(m_Shr(m_Value(X), m_APInt(C1)))) &&
1095 cast<Instruction>(Op0)->getOpcode() == Instruction::LShr &&
1105 auto *OldShr = cast<BinaryOperator>(Op0);
1117 if (match(Op0, m_OneUse(m_Trunc(m_OneUse(m_BinOp(Shr))))) &&
1152 if (match(Op0, m_OneUse(m_BinOp(Op0BO))) &&
1198 if (match(Op0, m_OneUse(m_Sub(m_APInt(C1), m_Value(X))))) {
1211 if (match(Op0, m_OneUse(m_Shr(m_Value(X), m_Specific(Op1))))) {
1218 if (match(Op0, m_LShr(m_AllOnes(), m_Specific(Op1)))) {
1228 if (match(Op0, m_Mul(m_Value(X), m_ImmConstant(C2))))
1232 if (match(Op0, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) {
1238 if (match(Op0, m_One())) {
1267 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
1274 if (match(Op0, m_OneUse(m_Not(m_Value(X)))) &&
1281 match(Op0, m_OneUse(m_NUWSub(m_NUWShl(m_Value(X), m_Specific(Op1)),
1286 cast<OverflowingBinaryOperator>(Op0)->hasNoSignedWrap());
1291 if (match(Op0, m_Add(m_Value(X), m_Value(Y))) && match(Op1, m_One()) &&
1298 match(Op0, m_OneUse(m_NUWSub(m_Value(X),
1303 cast<OverflowingBinaryOperator>(Op0)->hasNoSignedWrap());
1322 if (match(Op0, m_OneUse(m_c_BinOp(m_NUWShl(m_Value(X), m_Specific(Op1)),
1324 BinaryOperator *Op0OB = cast<BinaryOperator>(Op0);
1326 if (auto *OBO = dyn_cast<OverflowingBinaryOperator>(Op0);
1334 } else if (auto *Disjoint = dyn_cast<PossiblyDisjointInst>(Op0)) {
1345 auto *II = dyn_cast<IntrinsicInst>(Op0);
1360 if (match(Op0, m_Shl(m_Value(X), m_APInt(C1))) && C1->ult(BitWidth)) {
1364 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) {
1370 if (Op0->hasOneUse()) {
1379 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) {
1386 if (Op0->hasOneUse()) {
1403 if (match(Op0,
1414 if (match(Op0, m_OneUse(m_ZExt(m_Value(X)))) &&
1423 if (match(Op0, m_SExt(m_Value(X)))) {
1433 Op0->hasOneUse()) {
1453 if (match(Op0, m_OneUse(m_c_Or(m_Neg(m_Value(X)), m_Deferred(X)))))
1457 if (match(Op0, m_OneUse(m_NSWSub(m_Value(X), m_Value(Y)))))
1462 if (match(Op0, m_OneUse(m_SRem(m_Value(X), m_SpecificInt(2))))) {
1469 if (match(Op0, m_OneUse(m_Trunc(m_Instruction(TruncSrc)))) &&
1492 if (match(Op0, m_NUWMul(m_Value(X), m_APInt(MulC)))) {
1502 if (Op0->hasOneUse()) {
1507 cast<OverflowingBinaryOperator>(Op0)->hasNoSignedWrap());
1515 if (Op0->hasOneUse()) {
1531 if (match(Op0, m_OneUse(m_NSWMul(m_Value(X), m_APInt(MulC))))) {
1543 if (match(Op0, m_OneUse(m_Intrinsic<Intrinsic::bswap>(
1565 if (ShAmtC == 1 && match(Op0, m_Add(m_Value(X), m_Value(Y))) &&
1569 (X->hasOneUse() || Y->hasOneUse() || Op0->hasOneUse())) {
1580 if (match(Op0, m_OneUse(m_Shl(m_Value(X), m_Specific(Op1))))) {
1587 if (match(Op0, m_Shl(m_AllOnes(), m_Specific(Op1)))) {
1678 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
1689 if (match(Op0, m_Shl(m_ZExt(m_Value(X)), m_Specific(Op1))) &&
1696 if (match(Op0, m_NSWShl(m_Value(X), m_APInt(ShOp1))) &&
1715 if (match(Op0, m_AShr(m_Value(X), m_APInt(ShOp1))) &&
1724 if (match(Op0, m_OneUse(m_SExt(m_Value(X)))) &&
1735 if (match(Op0, m_OneUse(m_c_Or(m_Neg(m_Value(X)), m_Deferred(X)))))
1740 if (match(Op0, m_OneUse(m_NSWSub(m_Value(X), m_Value(Y)))))
1745 if (match(Op0, m_OneUse(m_NSWMul(m_Value(X), m_APInt(MulC)))) &&
1755 cast<OverflowingBinaryOperator>(Op0)->hasNoUnsignedWrap());
1769 match(Op0, m_OneUse(m_Shl(m_Value(X),
1775 cast<Constant>(cast<Instruction>(Op0)->getOperand(1)));
1784 if (MaskedValueIsZero(Op0, APInt::getSignMask(BitWidth), 0, &I)) {
1785 Instruction *Lshr = BinaryOperator::CreateLShr(Op0, Op1);
1791 if (match(Op0, m_OneUse(m_Not(m_Value(X))))) {
1794 auto *NewAShr = Builder.CreateAShr(X, Op1, Op0->getName() + ".not");