blob: 4e6a3452da53b415dfa81a5cc352c71059d4ca28 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=i686-pc-windows-msvc -mcpu=pentium4 | FileCheck %s
define i32 @test() {
; CHECK-LABEL: define i32 @test(
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[BBL:.*]]:
; CHECK-NEXT: br label %[[BBL1:.*]]
; CHECK: [[BBL1]]:
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 0, %[[BBL]] ]
; CHECK-NEXT: [[PHI2:%.*]] = phi i32 [ 0, %[[BBL]] ]
; CHECK-NEXT: [[PHI3:%.*]] = phi i32 [ 0, %[[BBL]] ]
; CHECK-NEXT: [[PHI4:%.*]] = phi i32 [ 0, %[[BBL]] ]
; CHECK-NEXT: [[PHI5:%.*]] = phi i32 [ 0, %[[BBL]] ]
; CHECK-NEXT: [[PHI6:%.*]] = phi i32 [ 0, %[[BBL]] ]
; CHECK-NEXT: br i1 false, label %[[BBL9:.*]], label %[[BBL7:.*]]
; CHECK: [[BBL7]]:
; CHECK-NEXT: [[CALL:%.*]] = tail call i32 @llvm.smin.i32(i32 0, i32 0)
; CHECK-NEXT: [[CALL8:%.*]] = tail call i32 @llvm.smax.i32(i32 0, i32 0)
; CHECK-NEXT: br i1 false, label %[[BBL12:.*]], label %[[BBL13:.*]]
; CHECK: [[BBL9]]:
; CHECK-NEXT: br label %[[BBL13]]
; CHECK: [[BBL12]]:
; CHECK-NEXT: br label %[[BBL13]]
; CHECK: [[BBL13]]:
; CHECK-NEXT: [[PHI14:%.*]] = phi i32 [ 0, %[[BBL9]] ], [ [[PHI]], %[[BBL12]] ], [ 0, %[[BBL7]] ]
; CHECK-NEXT: [[PHI15:%.*]] = phi i32 [ 0, %[[BBL9]] ], [ [[PHI2]], %[[BBL12]] ], [ 0, %[[BBL7]] ]
; CHECK-NEXT: [[PHI16:%.*]] = phi i32 [ 0, %[[BBL9]] ], [ [[CALL8]], %[[BBL12]] ], [ 0, %[[BBL7]] ]
; CHECK-NEXT: [[PHI17:%.*]] = phi i32 [ 0, %[[BBL9]] ], [ [[CALL]], %[[BBL12]] ], [ 0, %[[BBL7]] ]
; CHECK-NEXT: [[PHI18:%.*]] = phi i32 [ [[PHI3]], %[[BBL9]] ], [ [[PHI3]], %[[BBL12]] ], [ 0, %[[BBL7]] ]
; CHECK-NEXT: [[PHI19:%.*]] = phi i32 [ [[PHI4]], %[[BBL9]] ], [ [[PHI4]], %[[BBL12]] ], [ 0, %[[BBL7]] ]
; CHECK-NEXT: [[PHI20:%.*]] = phi i32 [ 0, %[[BBL9]] ], [ [[PHI5]], %[[BBL12]] ], [ 0, %[[BBL7]] ]
; CHECK-NEXT: [[PHI21:%.*]] = phi i32 [ 0, %[[BBL9]] ], [ [[PHI6]], %[[BBL12]] ], [ [[PHI6]], %[[BBL7]] ]
; CHECK-NEXT: ret i32 [[PHI21]]
;
bbl:
br label %bbl1
bbl1: ; preds = %bbl
%phi = phi i32 [ 0, %bbl ]
%phi2 = phi i32 [ 0, %bbl ]
%phi3 = phi i32 [ 0, %bbl ]
%phi4 = phi i32 [ 0, %bbl ]
%phi5 = phi i32 [ 0, %bbl ]
%phi6 = phi i32 [ 0, %bbl ]
br i1 false, label %bbl9, label %bbl7
bbl7: ; preds = %bbl1
%call = tail call i32 @llvm.smin.i32(i32 0, i32 0)
%call8 = tail call i32 @llvm.smax.i32(i32 0, i32 0)
br i1 false, label %bbl12, label %bbl13
bbl9: ; preds = %bbl1
%call10 = tail call i32 @llvm.smin.i32(i32 0, i32 0)
%call11 = tail call i32 @llvm.smax.i32(i32 0, i32 0)
br label %bbl13
bbl12: ; preds = %bbl7
br label %bbl13
bbl13: ; preds = %bbl12, %bbl9, %bbl7
%phi14 = phi i32 [ %call11, %bbl9 ], [ %phi, %bbl12 ], [ 0, %bbl7 ]
%phi15 = phi i32 [ %call10, %bbl9 ], [ %phi2, %bbl12 ], [ 0, %bbl7 ]
%phi16 = phi i32 [ 0, %bbl9 ], [ %call8, %bbl12 ], [ 0, %bbl7 ]
%phi17 = phi i32 [ 0, %bbl9 ], [ %call, %bbl12 ], [ 0, %bbl7 ]
%phi18 = phi i32 [ %phi3, %bbl9 ], [ %phi3, %bbl12 ], [ 0, %bbl7 ]
%phi19 = phi i32 [ %phi4, %bbl9 ], [ %phi4, %bbl12 ], [ 0, %bbl7 ]
%phi20 = phi i32 [ %call11, %bbl9 ], [ %phi5, %bbl12 ], [ 0, %bbl7 ]
%phi21 = phi i32 [ 0, %bbl9 ], [ %phi6, %bbl12 ], [ %phi6, %bbl7 ]
ret i32 %phi21
}
declare i32 @llvm.smax.i32(i32, i32)
declare i32 @llvm.smin.i32(i32, i32)