Home | History | Annotate | Download | only in Analysis

Lines Matching defs:Trunc

144     const SCEVTruncateExpr *Trunc = cast<SCEVTruncateExpr>(this);
145 const SCEV *Op = Trunc->getOperand();
146 OS << "(trunc " << *Op->getType() << " " << *Op << " to "
147 << *Trunc->getType() << ")";
771 MultiplyFactor = MultiplyFactor.trunc(W);
841 // trunc(trunc(x)) --> trunc(x)
845 // trunc(sext(x)) --> sext(x) if widening or trunc(x) if narrowing
849 // trunc(zext(x)) --> zext(x) if widening or trunc(x) if narrowing
853 // trunc(x1+x2+...+xN) --> trunc(x1)+trunc(x2)+...+trunc(xN) if we can
868 // trunc(x1*x2*...*xN) --> trunc(x1)*trunc(x2)*...*trunc(xN) if we can
926 // zext(trunc(x)) --> zext(x) or x or trunc(x)
1191 // sext(trunc(x)) --> sext(x) or x or trunc(x)
1571 // folded. eg., trunc(x) + m*trunc(n) --> trunc(x + trunc(m)*n)
1572 // if the contents of the resulting outer trunc fold to something simple.
1574 const SCEVTruncateExpr *Trunc = cast<SCEVTruncateExpr>(Ops[Idx]);
1575 Type *DstType = Trunc->getType();
1576 Type *SrcType = Trunc->getOperand()->getType();
3475 if (const SCEVTruncateExpr *Trunc = dyn_cast<SCEVTruncateExpr>(S)) {
3476 ConstantRange X = getUnsignedRange(Trunc->getOperand());
3477 return setUnsignedRange(Trunc,
3616 if (const SCEVTruncateExpr *Trunc = dyn_cast<SCEVTruncateExpr>(S)) {
3617 ConstantRange X = getSignedRange(Trunc->getOperand());
3618 return setSignedRange(Trunc,
3780 // use zext(trunc(x)) as the SCEV expression.
3875 APInt Trunc = CI->getValue().trunc(Z0TySize);
3876 if (Trunc.zext(getTypeSizeInBits(UTy)) == CI->getValue() &&
3877 Trunc.isSignBit())
3878 return getZeroExtendExpr(getAddExpr(Z0, getConstant(Trunc)),
3921 // For a two-shift sext-inreg, use sext(trunc(x)) as the SCEV expression.
3946 case Instruction::Trunc:
5608 return SE.getConstant(Result.trunc(BW));