[llvm-bugs] [Bug 45823] New: Missing vectorization of loop due to load late in the loop
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Wed May  6 23:21:28 PDT 2020
    
    
  
https://bugs.llvm.org/show_bug.cgi?id=45823
            Bug ID: 45823
           Summary: Missing vectorization of loop due to load late in the
                    loop
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Loop Optimizer
          Assignee: unassignedbugs at nondot.org
          Reporter: mikael.holmen at ericsson.com
                CC: llvm-bugs at lists.llvm.org
Created attachment 23456
  --> https://bugs.llvm.org/attachment.cgi?id=23456&action=edit
bbi-39227-lv.ll
Reproduce with
 opt -loop-vectorize -S -o - bbi-39227-lv.ll -debug
Result:
 LV: Not vectorizing: Found an unidentified PHI   %h.15 = phi i32 [ %h.11,
%inner.cond.preheader ], [ %h.1, %inner.body ]
The inner loop body looks like:
inner.body:                                       ; preds =
%inner.cond.preheader, %inner.body
  %h.15 = phi i32 [ %h.11, %inner.cond.preheader ], [ %h.1, %inner.body ]
  %h.pn4 = phi i32* [ %h, %inner.cond.preheader ], [ %hp.1, %inner.body ]
  %j.03 = phi i16 [ 0, %inner.cond.preheader ], [ %j.1, %inner.body ]
  %real.02 = phi i32 [ 0, %inner.cond.preheader ], [ %sub, %inner.body ]
  %hp.1 = getelementptr inbounds i32, i32* %h.pn4, i64 1
; The loop can get vectorized if the load is placed here...
  %h.1 = load i32, i32* %hp.1, align 1
  %0 = shl i32 %h.15, 16
  %conv7 = ashr exact i32 %0, 16
  %add = sub i32 %real.02, %h.15
  %sub = add i32 %add, %conv7
  %j.1 = add nuw nsw i16 %j.03, 1
; ... but not when it's here.
;  %h.1 = load i32, i32* %hp.1, align 1
  %cmp3 = icmp ult i16 %j.03, 99
  br i1 %cmp3, label %inner.body, label %inner.end
If we  move the load
   %h.1 = load i32, i32* %hp.1, align 1
earlier in the loop so it's placed directly after the definition of %hp.1, we
instead get:
 LV: We can vectorize this loop!
This PR is the result of the following discussion on llvm-dev:
 https://lists.llvm.org/pipermail/llvm-dev/2020-May/141404.html
-- 
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/20200507/497a8f98/attachment.html>
    
    
More information about the llvm-bugs
mailing list