reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/InstCombine/InstCombineShifts.cpp
 1000     if (match(Op0, m_Shl(m_Value(X), m_APInt(ShOp1))) && ShOp1->ult(BitWidth)) {
 1006           auto *NewLShr = BinaryOperator::CreateLShr(X, ShiftDiff);
 1011         Value *NewLShr = Builder.CreateLShr(X, ShiftDiff, "", I.isExact());
 1020           auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff);
 1025         Value *NewShl = Builder.CreateShl(X, ShiftDiff);
 1032       return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, Mask));
 1035     if (match(Op0, m_OneUse(m_ZExt(m_Value(X)))) &&
 1036         (!Ty->isIntegerTy() || shouldChangeType(Ty, X->getType()))) {
 1037       assert(ShAmt < X->getType()->getScalarSizeInBits() &&
 1040       Value *NewLShr = Builder.CreateLShr(X, ShAmt);
 1044     if (match(Op0, m_SExt(m_Value(X))) &&
 1045         (!Ty->isIntegerTy() || shouldChangeType(Ty, X->getType()))) {
 1047       unsigned SrcTyBitWidth = X->getType()->getScalarSizeInBits();
 1051           return new ZExtInst(X, Ty);
 1055           Value *NewLShr = Builder.CreateLShr(X, SrcTyBitWidth - 1);
 1064         Value *AShr = Builder.CreateAShr(X, NewShAmt);
 1069     if (match(Op0, m_LShr(m_Value(X), m_APInt(ShOp1)))) {
 1074         return BinaryOperator::CreateLShr(X, ConstantInt::get(Ty, AmtSum));