
MainOp of the PHI vectorizable entries contains the proper order of incoming blocks, not the last instruction in the block.
33 lines
917 B
LLVM
33 lines
917 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -passes=slp-vectorizer -S < %s | FileCheck %s
|
|
|
|
define void @f(i16 %0) {
|
|
; CHECK-LABEL: @f(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: br label [[FOR_COND:%.*]]
|
|
; CHECK: for.cond:
|
|
; CHECK-NEXT: [[TMP1:%.*]] = phi i16 [ 0, [[FOR_END5:%.*]] ], [ [[TMP0:%.*]], [[ENTRY:%.*]] ]
|
|
; CHECK-NEXT: [[B_0:%.*]] = phi i16 [ 0, [[ENTRY]] ], [ [[INC:%.*]], [[FOR_END5]] ]
|
|
; CHECK-NEXT: [[INC]] = add i16 0, 0
|
|
; CHECK-NEXT: br label [[FOR_BODY2:%.*]]
|
|
; CHECK: for.body2:
|
|
; CHECK-NEXT: br label [[FOR_BODY2]]
|
|
; CHECK: for.end5:
|
|
; CHECK-NEXT: br label [[FOR_COND]]
|
|
;
|
|
entry:
|
|
br label %for.cond
|
|
|
|
for.cond:
|
|
%1 = phi i16 [ 0, %for.end5 ], [ %0, %entry ]
|
|
%b.0 = phi i16 [ 0, %entry ], [ %inc, %for.end5 ]
|
|
%inc = add i16 0, 0
|
|
br label %for.body2
|
|
|
|
for.body2:
|
|
br label %for.body2
|
|
|
|
for.end5:
|
|
br label %for.cond
|
|
}
|