[PATCH] D18202: Enable non-power-of-2 pragma unroll counts

Evgeny Stupachenko via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 16 15:48:55 PDT 2016

evstupac added inline comments.

Comment at: lib/Transforms/Utils/LoopUnrollRuntime.cpp:365-367
@@ +364,5 @@
+                                    ConstantInt::get(BECount->getType(),
+                                                     Count));
+    Value *ModValAdd = B.CreateAdd(ModValTmp,
+                                   ConstantInt::get(ModValTmp->getType(), 1));
+    // At that point (BECount % Count) + 1 could be equal to Count.
Yes. That is what I mean by select. I would prefer combiner to decide the correct replacement (maybe based on some architecture properties). The simplification of TripCount % Count to TripCount & (Count - 1) when Count is power-of-2 is pretty obvious and architecture independent. This one is more complicated: ((BECount % Count)  + 1) % Count.
So I'd let combiner do this if someone find a performance opportunity. 


More information about the llvm-commits mailing list