Lines Matching refs:sext
158 const SCEVSignExtendExpr *SExt = cast<SCEVSignExtendExpr>(this);
159 const SCEV *Op = SExt->getOperand();
160 OS << "(sext " << *Op->getType() << " " << *Op << " to "
161 << *SExt->getType() << ")";
845 // trunc(sext(x)) --> sext(x) if widening or trunc(x) if narrowing
1082 // such: {sext(Step + Start),+,Step} => {(Step + sext(Start),+,Step} As a
1083 // result, the expression "Step + sext(PreIncAR)" is congruent with
1084 // "sext(PostIncAR)"
1170 // sext(sext(x)) --> sext(x)
1174 // sext(zext(x)) --> zext(x)
1191 // sext(trunc(x)) --> sext(x) or x or trunc(x)
1204 // sext(C1 + (C2 * x)) --> C1 + sext(C2 * x) if C1 < C2
1314 // sext{C1,+,C2} --> C1 + sext{0,+,C2} if C1 < C2
1368 // Next try a sext cast. If the cast is folded, use it.
1369 const SCEV *SExt = getSignExtendExpr(Op, Ty);
1370 if (!isa<SCEVSignExtendExpr>(SExt))
1371 return SExt;
1381 // If the expression is obviously signed, use the sext cast value.
1383 return SExt;
3469 if (const SCEVSignExtendExpr *SExt = dyn_cast<SCEVSignExtendExpr>(S)) {
3470 ConstantRange X = getUnsignedRange(SExt->getOperand());
3471 return setUnsignedRange(SExt,
3610 if (const SCEVSignExtendExpr *SExt = dyn_cast<SCEVSignExtendExpr>(S)) {
3611 ConstantRange X = getSignedRange(SExt->getOperand());
3612 return setSignedRange(SExt,
3921 // For a two-shift sext-inreg, use sext(trunc(x)) as the SCEV expression.
3952 case Instruction::SExt:
6994 B = B.sext(ABW);
6996 A = A.sext(BBW);
7008 B = B.sext(ABW);
7010 A = A.sext(BBW);