[PATCH] D28308: [SCEV] Model ashr(shl(x, n), m) as mul(x, 2^(n-m)) when n > m

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 11:43:23 PST 2017

efriedma added a comment.

Sanjoy, would you mind looking over this?  I'd like a second set of eyes on this.

Comment at: lib/Analysis/ScalarEvolution.cpp:5323
+          // When n > m, use sext(mul(trunc(x), 2^(n-m)))) as the SCEV
+          // expression.We already checked that LShAmt < BitWidth, so
+          // the multiplier, 1 << (LShAmt - AShrAmt), fits into TruncTy as

Comment at: lib/Analysis/ScalarEvolution.cpp:5327
+          APInt Mul = APInt::getOneBitSet(TruncToWidth, LShAmt - AShrAmt);
+          const SCEV *MulSCEV = getSCEV(ConstantInt::get(TruncTy, Mul));
+          return getSignExtendExpr(
"getSCEV(ConstantInt::get(TruncTy, Mul))" can be shortened to "getConstant(Mul)".



More information about the llvm-commits mailing list