@@ -84,15 +84,14 @@ for.end: ; preds = %for.end.loopexit, %
8484; CHECK: We can vectorize this loop!
8585define i32 @redi (ptr noalias nocapture readonly %a , ptr noalias nocapture readonly %b , i32 %N ) {
8686entry:
87- %cmp5 = icmp eq i32 %N , 0
88- br i1 %cmp5 , label %for.end , label %for.body.preheader
87+ br label %for.body.preheader
8988
9089for.body.preheader: ; preds = %entry
9190 br label %for.body
9291
9392for.body: ; preds = %for.body.preheader, %for.body
9493 %i.07 = phi i32 [ %inc , %for.body ], [ 0 , %for.body.preheader ]
95- %Red.06 = phi i32 [ %add , %for.body ], [ undef , %for.body.preheader ]
94+ %Red.06 = phi i32 [ %add , %for.body ], [ 0 , %for.body.preheader ]
9695 %arrayidx = getelementptr inbounds i32 , ptr %a , i32 %i.07
9796 %0 = load i32 , ptr %arrayidx , align 4
9897 %arrayidx1 = getelementptr inbounds i32 , ptr %b , i32 %i.07
@@ -107,9 +106,8 @@ for.end.loopexit: ; preds = %for.body
107106 %add.lcssa = phi i32 [ %add , %for.body ]
108107 br label %for.end
109108
110- for.end: ; preds = %for.end.loopexit, %entry
111- %Red.0.lcssa = phi i32 [ undef , %entry ], [ %add.lcssa , %for.end.loopexit ]
112- ret i32 %Red.0.lcssa
109+ for.end: ; preds = %for.end.loopexit
110+ ret i32 %add.lcssa
113111}
114112
115113; Floating-point loops need fast-math to be vectorizeable
@@ -121,15 +119,14 @@ for.end: ; preds = %for.end.loopexit, %
121119; DARWIN: We can vectorize this loop!
122120define float @redf (ptr noalias nocapture readonly %a , ptr noalias nocapture readonly %b , i32 %N ) {
123121entry:
124- %cmp5 = icmp eq i32 %N , 0
125- br i1 %cmp5 , label %for.end , label %for.body.preheader
122+ br label %for.body.preheader
126123
127124for.body.preheader: ; preds = %entry
128125 br label %for.body
129126
130127for.body: ; preds = %for.body.preheader, %for.body
131128 %i.07 = phi i32 [ %inc , %for.body ], [ 0 , %for.body.preheader ]
132- %Red.06 = phi float [ %add , %for.body ], [ undef , %for.body.preheader ]
129+ %Red.06 = phi float [ %add , %for.body ], [ 0 .0e+ 00 , %for.body.preheader ]
133130 %arrayidx = getelementptr inbounds float , ptr %a , i32 %i.07
134131 %0 = load float , ptr %arrayidx , align 4
135132 %arrayidx1 = getelementptr inbounds float , ptr %b , i32 %i.07
@@ -144,9 +141,8 @@ for.end.loopexit: ; preds = %for.body
144141 %add.lcssa = phi float [ %add , %for.body ]
145142 br label %for.end
146143
147- for.end: ; preds = %for.end.loopexit, %entry
148- %Red.0.lcssa = phi float [ undef , %entry ], [ %add.lcssa , %for.end.loopexit ]
149- ret float %Red.0.lcssa
144+ for.end: ; preds = %for.end.loopexit
145+ ret float %add.lcssa
150146}
151147
152148; Make sure calls that turn into builtins are also covered
@@ -252,7 +248,7 @@ for.body.preheader: ; preds = %entry
252248
253249for.body: ; preds = %for.body.preheader, %for.body
254250 %i.07 = phi i32 [ %inc , %for.body ], [ 0 , %for.body.preheader ]
255- %Red.06 = phi i32 [ %add , %for.body ], [ undef , %for.body.preheader ]
251+ %Red.06 = phi i32 [ %add , %for.body ], [ 0 , %for.body.preheader ]
256252 %arrayidx = getelementptr inbounds i32 , ptr %a , i32 %i.07
257253 %0 = load i32 , ptr %arrayidx , align 4
258254 %arrayidx1 = getelementptr inbounds i32 , ptr %b , i32 %i.07
@@ -268,7 +264,7 @@ for.end.loopexit: ; preds = %for.body
268264 br label %for.end
269265
270266for.end: ; preds = %for.end.loopexit, %entry
271- %Red.0.lcssa = phi i32 [ undef , %entry ], [ %add.lcssa , %for.end.loopexit ]
267+ %Red.0.lcssa = phi i32 [ 0 , %entry ], [ %add.lcssa , %for.end.loopexit ]
272268 ret i32 %Red.0.lcssa
273269}
274270
@@ -277,15 +273,14 @@ for.end: ; preds = %for.end.loopexit, %
277273; CHECK: We can vectorize this loop!
278274define float @redf_fast (ptr noalias nocapture readonly %a , ptr noalias nocapture readonly %b , i32 %N ) {
279275entry:
280- %cmp5 = icmp eq i32 %N , 0
281- br i1 %cmp5 , label %for.end , label %for.body.preheader
276+ br label %for.body.preheader
282277
283278for.body.preheader: ; preds = %entry
284279 br label %for.body
285280
286281for.body: ; preds = %for.body.preheader, %for.body
287282 %i.07 = phi i32 [ %inc , %for.body ], [ 0 , %for.body.preheader ]
288- %Red.06 = phi float [ %add , %for.body ], [ undef , %for.body.preheader ]
283+ %Red.06 = phi float [ %add , %for.body ], [ 0 .0e+ 00 , %for.body.preheader ]
289284 %arrayidx = getelementptr inbounds float , ptr %a , i32 %i.07
290285 %0 = load float , ptr %arrayidx , align 4
291286 %arrayidx1 = getelementptr inbounds float , ptr %b , i32 %i.07
@@ -300,9 +295,8 @@ for.end.loopexit: ; preds = %for.body
300295 %add.lcssa = phi float [ %add , %for.body ]
301296 br label %for.end
302297
303- for.end: ; preds = %for.end.loopexit, %entry
304- %Red.0.lcssa = phi float [ undef , %entry ], [ %add.lcssa , %for.end.loopexit ]
305- ret float %Red.0.lcssa
298+ for.end: ; preds = %for.end.loopexit
299+ ret float %add.lcssa
306300}
307301
308302; Make sure calls that turn into builtins are also covered
0 commit comments