; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt %s -passes='function(scalarizer)' -S -o - | FileCheck %s ; This input caused the scalarizer to insert non-PHI nodes ; in between PHI nodes (%1 and %2). define <3 x float> @func(i32 %inval) { ; CHECK-LABEL: @func( ; CHECK-NEXT: .entry: ; CHECK-NEXT: br label [[TMP0:%.*]] ; CHECK: 0: ; CHECK-NEXT: [[DOTI01:%.*]] = phi float [ 0.000000e+00, [[DOTENTRY:%.*]] ], [ [[DOTI01]], [[TMP3:%.*]] ] ; CHECK-NEXT: [[DOTI12:%.*]] = phi float [ 0.000000e+00, [[DOTENTRY]] ], [ [[DOTI12]], [[TMP3]] ] ; CHECK-NEXT: [[DOTI23:%.*]] = phi float [ 0.000000e+00, [[DOTENTRY]] ], [ [[DOTI23]], [[TMP3]] ] ; CHECK-NEXT: [[TMP1:%.*]] = phi float [ 1.000000e+00, [[DOTENTRY]] ], [ 2.000000e+00, [[TMP3]] ] ; CHECK-NEXT: [[DOTUPTO0:%.*]] = insertelement <3 x float> poison, float [[DOTI01]], i64 0 ; CHECK-NEXT: [[DOTUPTO1:%.*]] = insertelement <3 x float> [[DOTUPTO0]], float [[DOTI12]], i64 1 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <3 x float> [[DOTUPTO1]], float [[DOTI23]], i64 2 ; CHECK-NEXT: br label [[TMP3]] ; CHECK: 3: ; CHECK-NEXT: [[COND:%.*]] = icmp eq i32 [[INVAL:%.*]], 0 ; CHECK-NEXT: br i1 [[COND]], label [[TMP0]], label [[EXIT:%.*]] ; CHECK: exit: ; CHECK-NEXT: ret <3 x float> [[TMP2]] ; .entry: br label %0 0: ; preds = %3, %.entry %1 = phi <3 x float> [ , %.entry], [ %1, %3 ] %2 = phi float [ 1.0, %.entry], [ 2.0, %3 ] br label %3 3: ; preds = %0 %cond = icmp eq i32 %inval, 0 br i1 %cond, label %0, label %exit exit: ret <3 x float> %1 }