[PATCH] [LSR] canonicalize Prod*(1<<C) to Prod<<C

David Majnemer david.majnemer at gmail.com
Mon Jun 15 11:56:05 PDT 2015


================
Comment at: lib/Analysis/ScalarEvolutionExpander.cpp:769-772
@@ -770,1 +768,6 @@
       if (isa<Constant>(Prod)) std::swap(Prod, W);
+      if (ConstantInt *ConstW = dyn_cast<ConstantInt>(W)) {
+        const APInt &RHS = ConstW->getValue();
+        // Canonicalize Prod*(1<<C) to Prod<<C.
+        if (RHS.isPowerOf2()) {
+          Prod = InsertBinop(Instruction::Shl, Prod,
----------------
majnemer wrote:
> You could write this most concisely as:
>   // Canonicalize Prod*(1<<C) to Prod<<C.
>   if (match(W, m_Power2()) {
>     ...
>   }
s/most/more

http://reviews.llvm.org/D10448

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the llvm-commits mailing list