@@ -108,6 +108,51 @@ for.end:
108108 ret void
109109}
110110
111+ define void @scalarize_phi_sub (ptr %n , ptr %inout ) {
112+ ;
113+ ; CHECK-LABEL: @scalarize_phi_sub(
114+ ; CHECK-NEXT: entry:
115+ ; CHECK-NEXT: [[T0:%.*]] = load volatile float, ptr [[INOUT:%.*]], align 4
116+ ; CHECK-NEXT: br label [[FOR_COND:%.*]]
117+ ; CHECK: for.cond:
118+ ; CHECK-NEXT: [[TMP0:%.*]] = phi float [ [[T0]], [[ENTRY:%.*]] ], [ [[TMP1:%.*]], [[FOR_BODY:%.*]] ]
119+ ; CHECK-NEXT: [[I_0:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[INC:%.*]], [[FOR_BODY]] ]
120+ ; CHECK-NEXT: [[T1:%.*]] = load i32, ptr [[N:%.*]], align 4
121+ ; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq i32 [[I_0]], [[T1]]
122+ ; CHECK-NEXT: br i1 [[CMP_NOT]], label [[FOR_END:%.*]], label [[FOR_BODY]]
123+ ; CHECK: for.body:
124+ ; CHECK-NEXT: store volatile float [[TMP0]], ptr [[INOUT]], align 4
125+ ; CHECK-NEXT: [[TMP1]] = fsub float 0.000000e+00, [[TMP0]]
126+ ; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[I_0]], 1
127+ ; CHECK-NEXT: br label [[FOR_COND]]
128+ ; CHECK: for.end:
129+ ; CHECK-NEXT: ret void
130+ ;
131+ entry:
132+ %t0 = load volatile float , ptr %inout , align 4
133+ %insert = insertelement <4 x float > undef , float %t0 , i32 0
134+ %splat = shufflevector <4 x float > %insert , <4 x float > undef , <4 x i32 > zeroinitializer
135+ %insert1 = insertelement <4 x float > undef , float 3 .0 , i32 0
136+ br label %for.cond
137+
138+ for.cond:
139+ %x.0 = phi <4 x float > [ %splat , %entry ], [ %sub , %for.body ]
140+ %i.0 = phi i32 [ 0 , %entry ], [ %inc , %for.body ]
141+ %t1 = load i32 , ptr %n , align 4
142+ %cmp = icmp ne i32 %i.0 , %t1
143+ br i1 %cmp , label %for.body , label %for.end
144+
145+ for.body:
146+ %t2 = extractelement <4 x float > %x.0 , i32 1
147+ store volatile float %t2 , ptr %inout , align 4
148+ %sub = fsub <4 x float > zeroinitializer , %x.0
149+ %inc = add nsw i32 %i.0 , 1
150+ br label %for.cond
151+
152+ for.end:
153+ ret void
154+ }
155+
111156define float @extract_element_binop_splat_constant_index (<4 x float > %x ) {
112157;
113158; CHECK-LABEL: @extract_element_binop_splat_constant_index(
0 commit comments