Lines Matching refs:InnerShift
508 /// that have constant shift amounts: OuterShift (InnerShift X, C1), C2.
510 Instruction *InnerShift,
512 assert(InnerShift->isLogicalShift() && "Unexpected instruction type");
516 if (!match(InnerShift->getOperand(1), m_APInt(InnerShiftConst)))
522 bool IsInnerShl = InnerShift->getOpcode() == Instruction::Shl;
538 unsigned TypeWidth = InnerShift->getType()->getScalarSizeInBits();
544 if (IC.MaskedValueIsZero(InnerShift->getOperand(0), Mask, 0, CxtI))
613 /// Fold OuterShift (InnerShift X, C1), C2.
615 static Value *foldShiftedShift(BinaryOperator *InnerShift, unsigned OuterShAmt,
618 bool IsInnerShl = InnerShift->getOpcode() == Instruction::Shl;
619 Type *ShType = InnerShift->getType();
624 match(InnerShift->getOperand(1), m_APInt(C1));
629 InnerShift->setOperand(1, ConstantInt::get(ShType, ShAmt));
631 InnerShift->setHasNoUnsignedWrap(false);
632 InnerShift->setHasNoSignedWrap(false);
634 InnerShift->setIsExact(false);
636 return InnerShift;
657 Value *And = Builder.CreateAnd(InnerShift->getOperand(0),
660 AndI->moveBefore(InnerShift);
661 AndI->takeName(InnerShift);