Lines Matching defs:InnerShift
534 /// that have constant shift amounts: OuterShift (InnerShift X, C1), C2.
536 Instruction *InnerShift,
538 assert(InnerShift->isLogicalShift() && "Unexpected instruction type");
542 if (!match(InnerShift->getOperand(1), m_APInt(InnerShiftConst)))
548 bool IsInnerShl = InnerShift->getOpcode() == Instruction::Shl;
564 unsigned TypeWidth = InnerShift->getType()->getScalarSizeInBits();
570 if (IC.MaskedValueIsZero(InnerShift->getOperand(0), Mask, 0, CxtI))
639 /// Fold OuterShift (InnerShift X, C1), C2.
641 static Value *foldShiftedShift(BinaryOperator *InnerShift, unsigned OuterShAmt,
644 bool IsInnerShl = InnerShift->getOpcode() == Instruction::Shl;
645 Type *ShType = InnerShift->getType();
650 match(InnerShift->getOperand(1), m_APInt(C1));
655 InnerShift->setOperand(1, ConstantInt::get(ShType, ShAmt));
657 InnerShift->setHasNoUnsignedWrap(false);
658 InnerShift->setHasNoSignedWrap(false);
660 InnerShift->setIsExact(false);
662 return InnerShift;
683 Value *And = Builder.CreateAnd(InnerShift->getOperand(0),
686 AndI->moveBefore(InnerShift->getIterator());
687 AndI->takeName(InnerShift);