[PATCH] R600/SI: Allow partial unrolling and increase thresholds.

Matt Arsenault Matthew.Arsenault at amd.com
Wed Jul 23 12:08:31 PDT 2014


Doubling the base unroll threshold is a conservative increase, and might want to be increased more later.

http://reviews.llvm.org/D4644

Files:
  lib/Target/R600/AMDGPUTargetTransformInfo.cpp

Index: lib/Target/R600/AMDGPUTargetTransformInfo.cpp
===================================================================
--- lib/Target/R600/AMDGPUTargetTransformInfo.cpp
+++ lib/Target/R600/AMDGPUTargetTransformInfo.cpp
@@ -101,6 +101,12 @@
 
 void AMDGPUTTI::getUnrollingPreferences(Loop *L,
                                         UnrollingPreferences &UP) const {
+  UP.Threshold = 300; // Twice the default.
+  UP.Count = UINT_MAX;
+  UP.Partial = true;
+
+  // TODO: Do we want runtime unrolling?
+
   for (const BasicBlock *BB : L->getBlocks()) {
     for (const Instruction &I : *BB) {
       const GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(&I);
@@ -120,7 +126,7 @@
         //
         // Don't use the maximum allowed value here as it will make some
         // programs way too big.
-        UP.Threshold = 500;
+        UP.Threshold = 800;
       }
     }
   }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4644.11816.patch
Type: text/x-patch
Size: 885 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140723/32421aa1/attachment.bin>


More information about the llvm-commits mailing list