Lines Matching defs:InnerShift
518 /// that have constant shift amounts: OuterShift (InnerShift X, C1), C2.
520 Instruction *InnerShift,
522 assert(InnerShift->isLogicalShift() && "Unexpected instruction type");
526 if (!match(InnerShift->getOperand(1), m_APInt(InnerShiftConst)))
532 bool IsInnerShl = InnerShift->getOpcode() == Instruction::Shl;
548 unsigned TypeWidth = InnerShift->getType()->getScalarSizeInBits();
554 if (IC.MaskedValueIsZero(InnerShift->getOperand(0), Mask, 0, CxtI))
623 /// Fold OuterShift (InnerShift X, C1), C2.
625 static Value *foldShiftedShift(BinaryOperator *InnerShift, unsigned OuterShAmt,
628 bool IsInnerShl = InnerShift->getOpcode() == Instruction::Shl;
629 Type *ShType = InnerShift->getType();
634 match(InnerShift->getOperand(1), m_APInt(C1));
639 InnerShift->setOperand(1, ConstantInt::get(ShType, ShAmt));
641 InnerShift->setHasNoUnsignedWrap(false);
642 InnerShift->setHasNoSignedWrap(false);
644 InnerShift->setIsExact(false);
646 return InnerShift;
667 Value *And = Builder.CreateAnd(InnerShift->getOperand(0),
670 AndI->moveBefore(InnerShift);
671 AndI->takeName(InnerShift);