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() << ")";
772 MultiplyFactor = MultiplyFactor.trunc(W);
842 // trunc(trunc(x)) --> trunc(x)
846 // trunc(sext(x)) --> sext(x) if widening or trunc(x) if narrowing
850 // trunc(zext(x)) --> zext(x) if widening or trunc(x) if narrowing
854 // trunc(x1+x2+...+xN) --> trunc(x1)+trunc(x2)+...+trunc(xN) if we can
869 // trunc(x1*x2*...*xN) --> trunc(x1)*trunc(x2)*...*trunc(xN) if we can
927 // zext(trunc(x)) --> zext(x) or x or trunc(x)
1193 // sext(trunc(x)) --> sext(x) or x or trunc(x)
1541 // folded. eg., trunc(x) + m*trunc(n) --> trunc(x + trunc(m)*n)
1542 // if the contents of the resulting outer trunc fold to something simple.
1544 const SCEVTruncateExpr *Trunc = cast<SCEVTruncateExpr>(Ops[Idx]);
1545 Type *DstType = Trunc->getType();
1546 Type *SrcType = Trunc->getOperand()->getType();
3380 if (const SCEVTruncateExpr *Trunc = dyn_cast<SCEVTruncateExpr>(S)) {
3381 ConstantRange X = getUnsignedRange(Trunc->getOperand());
3382 return setUnsignedRange(Trunc,
3521 if (const SCEVTruncateExpr *Trunc = dyn_cast<SCEVTruncateExpr>(S)) {
3522 ConstantRange X = getSignedRange(Trunc->getOperand());
3523 return setSignedRange(Trunc,
3685 // use zext(trunc(x)) as the SCEV expression.
3773 APInt Trunc = CI->getValue().trunc(Z0TySize);
3774 if (Trunc.zext(getTypeSizeInBits(UTy)) == CI->getValue() &&
3775 Trunc.isSignBit())
3776 return getZeroExtendExpr(getAddExpr(Z0, getConstant(Trunc)),
3819 // For a two-shift sext-inreg, use sext(trunc(x)) as the SCEV expression.
3844 case Instruction::Trunc:
5424 return SE.getConstant(Result.trunc(BW));