[LLVMbugs] [Bug 19446] New: Loop vectorizer cannot generate runtime checks for uniform loads

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Apr 16 06:24:17 PDT 2014


            Bug ID: 19446
           Summary: Loop vectorizer cannot generate runtime checks for
                    uniform loads
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Loop Optimizer
          Assignee: unassignedbugs at nondot.org
          Reporter: hfinkel at anl.gov
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 12382
  --> http://llvm.org/bugs/attachment.cgi?id=12382&action=edit
test case showing uniform load

Currently, AccessAnalysis::canCheckPtrAtRT calls hasComputableBounds, and
hasComputableBounds has:

  const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(PtrScev);
  if (!AR)
    return false;
  return AR->isAffine();

so we don't generate runtime checks for uniform loads. For example, if the loop

  %12 = load double* %ref3, align 8, !tbaa !4
  %arrayidx = getelementptr inbounds [10000000 x double]* @c, i64 0, i64
  %13 = load double* %arrayidx, align 8, !tbaa !4
  %mul5 = fmul double %12, %13

where %ref3 is loop invariant, this loop will not vectorize because we won't
generate the necessary runtime check. I've attached a (simple) test case.

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/20140416/0cf038a1/attachment.html>

More information about the llvm-bugs mailing list