[llvm-bugs] [Bug 31426] New: Loop vectorizer always choose Interleave pattern vs Gather and does not vectorize at the end.

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Dec 19 01:37:54 PST 2016


https://llvm.org/bugs/show_bug.cgi?id=31426

            Bug ID: 31426
           Summary: Loop vectorizer always choose Interleave pattern vs
                    Gather and does not vectorize at the end.
           Product: libraries
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Loop Optimizer
          Assignee: unassignedbugs at nondot.org
          Reporter: elena.demikhovsky at intel.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Loop vectorizer cost model for "load" works incorrectly in some cases when the
"load" belongs to an interleave group. If interleaving cost is very high, the
loop is not vectorized. But some targets allows "gather", that makes loop
vectorization profitable. This is the case:
 for (i=0; i<N; ++i) 
   B[i] = A[i*5]

Stride 5 is higher than maxInterleaveFactor supported by Target, and "Gather"
should be taken in this case. But the cost model does not check gathers at all.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20161219/fc897e28/attachment.html>


More information about the llvm-bugs mailing list