@@ -151,18 +151,16 @@ exit:
151151 ret void
152152}
153153
154- define void @test_exit_branch_cost (ptr %dst , ptr %x.ptr , ptr %y.ptr , ptr %dst.1 , i1 %c.4 , ptr %src , ptr %dst.3 , i1 %c.3 , ptr %dst.2 ) {
154+ define void @test_exit_branch_cost (ptr %dst , ptr noalias %x.ptr , ptr noalias %y.ptr , ptr %dst.1 , i1 %c.4 , ptr %src , ptr %dst.3 , i1 %c.3 , ptr %dst.2 ) {
155155; CHECK-LABEL: define void @test_exit_branch_cost(
156- ; CHECK-SAME: ptr [[DST:%.*]], ptr [[X_PTR:%.*]], ptr [[Y_PTR:%.*]], ptr [[DST_1:%.*]], i1 [[C_4:%.*]], ptr [[SRC:%.*]], ptr [[DST_3:%.*]], i1 [[C_3:%.*]], ptr [[DST_2:%.*]]) {
156+ ; CHECK-SAME: ptr [[DST:%.*]], ptr noalias [[X_PTR:%.*]], ptr noalias [[Y_PTR:%.*]], ptr [[DST_1:%.*]], i1 [[C_4:%.*]], ptr [[SRC:%.*]], ptr [[DST_3:%.*]], i1 [[C_3:%.*]], ptr [[DST_2:%.*]]) {
157157; CHECK-NEXT: [[ENTRY:.*]]:
158158; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
159159; CHECK: [[VECTOR_MEMCHECK]]:
160160; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr [[DST_1]], i64 8
161161; CHECK-NEXT: [[SCEVGEP1:%.*]] = getelementptr i8, ptr [[DST_3]], i64 8
162162; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr [[DST_2]], i64 8
163163; CHECK-NEXT: [[SCEVGEP3:%.*]] = getelementptr i8, ptr [[DST]], i64 8
164- ; CHECK-NEXT: [[SCEVGEP6:%.*]] = getelementptr i8, ptr [[X_PTR]], i64 520
165- ; CHECK-NEXT: [[SCEVGEP5:%.*]] = getelementptr i8, ptr [[Y_PTR]], i64 260
166164; CHECK-NEXT: [[SCEVGEP4:%.*]] = getelementptr i8, ptr [[SRC]], i64 8
167165; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[DST_1]], [[SCEVGEP1]]
168166; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[DST_3]], [[SCEVGEP]]
@@ -174,15 +172,7 @@ define void @test_exit_branch_cost(ptr %dst, ptr %x.ptr, ptr %y.ptr, ptr %dst.1,
174172; CHECK-NEXT: [[BOUND08:%.*]] = icmp ult ptr [[DST_1]], [[SCEVGEP3]]
175173; CHECK-NEXT: [[BOUND19:%.*]] = icmp ult ptr [[DST]], [[SCEVGEP]]
176174; CHECK-NEXT: [[FOUND_CONFLICT10:%.*]] = and i1 [[BOUND08]], [[BOUND19]]
177- ; CHECK-NEXT: [[CONFLICT_RDX11:%.*]] = or i1 [[CONFLICT_RDX]], [[FOUND_CONFLICT10]]
178- ; CHECK-NEXT: [[BOUND014:%.*]] = icmp ult ptr [[DST_1]], [[SCEVGEP6]]
179- ; CHECK-NEXT: [[BOUND115:%.*]] = icmp ult ptr [[X_PTR]], [[SCEVGEP]]
180- ; CHECK-NEXT: [[FOUND_CONFLICT16:%.*]] = and i1 [[BOUND014]], [[BOUND115]]
181- ; CHECK-NEXT: [[CONFLICT_RDX17:%.*]] = or i1 [[CONFLICT_RDX11]], [[FOUND_CONFLICT16]]
182- ; CHECK-NEXT: [[BOUND018:%.*]] = icmp ult ptr [[DST_1]], [[SCEVGEP5]]
183- ; CHECK-NEXT: [[BOUND119:%.*]] = icmp ult ptr [[Y_PTR]], [[SCEVGEP]]
184- ; CHECK-NEXT: [[FOUND_CONFLICT20:%.*]] = and i1 [[BOUND018]], [[BOUND119]]
185- ; CHECK-NEXT: [[CONFLICT_RDX21:%.*]] = or i1 [[CONFLICT_RDX17]], [[FOUND_CONFLICT20]]
175+ ; CHECK-NEXT: [[CONFLICT_RDX21:%.*]] = or i1 [[CONFLICT_RDX]], [[FOUND_CONFLICT10]]
186176; CHECK-NEXT: [[BOUND012:%.*]] = icmp ult ptr [[DST_1]], [[SCEVGEP4]]
187177; CHECK-NEXT: [[BOUND113:%.*]] = icmp ult ptr [[SRC]], [[SCEVGEP]]
188178; CHECK-NEXT: [[FOUND_CONFLICT14:%.*]] = and i1 [[BOUND012]], [[BOUND113]]
@@ -194,42 +184,18 @@ define void @test_exit_branch_cost(ptr %dst, ptr %x.ptr, ptr %y.ptr, ptr %dst.1,
194184; CHECK-NEXT: [[BOUND020:%.*]] = icmp ult ptr [[DST_3]], [[SCEVGEP3]]
195185; CHECK-NEXT: [[BOUND121:%.*]] = icmp ult ptr [[DST]], [[SCEVGEP1]]
196186; CHECK-NEXT: [[FOUND_CONFLICT22:%.*]] = and i1 [[BOUND020]], [[BOUND121]]
197- ; CHECK-NEXT: [[CONFLICT_RDX23:%.*]] = or i1 [[CONFLICT_RDX19]], [[FOUND_CONFLICT22]]
198- ; CHECK-NEXT: [[BOUND034:%.*]] = icmp ult ptr [[DST_3]], [[SCEVGEP6]]
199- ; CHECK-NEXT: [[BOUND135:%.*]] = icmp ult ptr [[X_PTR]], [[SCEVGEP1]]
200- ; CHECK-NEXT: [[FOUND_CONFLICT36:%.*]] = and i1 [[BOUND034]], [[BOUND135]]
201- ; CHECK-NEXT: [[CONFLICT_RDX37:%.*]] = or i1 [[CONFLICT_RDX23]], [[FOUND_CONFLICT36]]
202- ; CHECK-NEXT: [[BOUND038:%.*]] = icmp ult ptr [[DST_3]], [[SCEVGEP5]]
203- ; CHECK-NEXT: [[BOUND139:%.*]] = icmp ult ptr [[Y_PTR]], [[SCEVGEP1]]
204- ; CHECK-NEXT: [[FOUND_CONFLICT40:%.*]] = and i1 [[BOUND038]], [[BOUND139]]
205- ; CHECK-NEXT: [[CONFLICT_RDX41:%.*]] = or i1 [[CONFLICT_RDX37]], [[FOUND_CONFLICT40]]
187+ ; CHECK-NEXT: [[CONFLICT_RDX41:%.*]] = or i1 [[CONFLICT_RDX19]], [[FOUND_CONFLICT22]]
206188; CHECK-NEXT: [[BOUND024:%.*]] = icmp ult ptr [[DST_3]], [[SCEVGEP4]]
207189; CHECK-NEXT: [[BOUND125:%.*]] = icmp ult ptr [[SRC]], [[SCEVGEP1]]
208190; CHECK-NEXT: [[FOUND_CONFLICT26:%.*]] = and i1 [[BOUND024]], [[BOUND125]]
209191; CHECK-NEXT: [[CONFLICT_RDX27:%.*]] = or i1 [[CONFLICT_RDX41]], [[FOUND_CONFLICT26]]
210192; CHECK-NEXT: [[BOUND028:%.*]] = icmp ult ptr [[DST_2]], [[SCEVGEP3]]
211193; CHECK-NEXT: [[BOUND129:%.*]] = icmp ult ptr [[DST]], [[SCEVGEP2]]
212194; CHECK-NEXT: [[FOUND_CONFLICT30:%.*]] = and i1 [[BOUND028]], [[BOUND129]]
213- ; CHECK-NEXT: [[CONFLICT_RDX31:%.*]] = or i1 [[CONFLICT_RDX27]], [[FOUND_CONFLICT30]]
214- ; CHECK-NEXT: [[BOUND050:%.*]] = icmp ult ptr [[DST_2]], [[SCEVGEP6]]
215- ; CHECK-NEXT: [[BOUND151:%.*]] = icmp ult ptr [[X_PTR]], [[SCEVGEP2]]
216- ; CHECK-NEXT: [[FOUND_CONFLICT52:%.*]] = and i1 [[BOUND050]], [[BOUND151]]
217- ; CHECK-NEXT: [[CONFLICT_RDX53:%.*]] = or i1 [[CONFLICT_RDX31]], [[FOUND_CONFLICT52]]
218- ; CHECK-NEXT: [[BOUND054:%.*]] = icmp ult ptr [[DST_2]], [[SCEVGEP5]]
219- ; CHECK-NEXT: [[BOUND155:%.*]] = icmp ult ptr [[Y_PTR]], [[SCEVGEP2]]
220- ; CHECK-NEXT: [[FOUND_CONFLICT56:%.*]] = and i1 [[BOUND054]], [[BOUND155]]
221- ; CHECK-NEXT: [[CONFLICT_RDX57:%.*]] = or i1 [[CONFLICT_RDX53]], [[FOUND_CONFLICT56]]
195+ ; CHECK-NEXT: [[CONFLICT_RDX65:%.*]] = or i1 [[CONFLICT_RDX27]], [[FOUND_CONFLICT30]]
222196; CHECK-NEXT: [[BOUND032:%.*]] = icmp ult ptr [[DST_2]], [[SCEVGEP4]]
223197; CHECK-NEXT: [[BOUND133:%.*]] = icmp ult ptr [[SRC]], [[SCEVGEP2]]
224- ; CHECK-NEXT: [[FOUND_CONFLICT34:%.*]] = and i1 [[BOUND032]], [[BOUND133]]
225- ; CHECK-NEXT: [[CONFLICT_RDX61:%.*]] = or i1 [[CONFLICT_RDX57]], [[FOUND_CONFLICT34]]
226- ; CHECK-NEXT: [[BOUND062:%.*]] = icmp ult ptr [[DST]], [[SCEVGEP6]]
227- ; CHECK-NEXT: [[BOUND163:%.*]] = icmp ult ptr [[X_PTR]], [[SCEVGEP3]]
228- ; CHECK-NEXT: [[FOUND_CONFLICT64:%.*]] = and i1 [[BOUND062]], [[BOUND163]]
229- ; CHECK-NEXT: [[CONFLICT_RDX65:%.*]] = or i1 [[CONFLICT_RDX61]], [[FOUND_CONFLICT64]]
230- ; CHECK-NEXT: [[BOUND066:%.*]] = icmp ult ptr [[DST]], [[SCEVGEP5]]
231- ; CHECK-NEXT: [[BOUND167:%.*]] = icmp ult ptr [[Y_PTR]], [[SCEVGEP3]]
232- ; CHECK-NEXT: [[FOUND_CONFLICT68:%.*]] = and i1 [[BOUND066]], [[BOUND167]]
198+ ; CHECK-NEXT: [[FOUND_CONFLICT68:%.*]] = and i1 [[BOUND032]], [[BOUND133]]
233199; CHECK-NEXT: [[CONFLICT_RDX35:%.*]] = or i1 [[CONFLICT_RDX65]], [[FOUND_CONFLICT68]]
234200; CHECK-NEXT: [[BOUND036:%.*]] = icmp ult ptr [[DST]], [[SCEVGEP4]]
235201; CHECK-NEXT: [[BOUND137:%.*]] = icmp ult ptr [[SRC]], [[SCEVGEP3]]
@@ -246,75 +212,75 @@ define void @test_exit_branch_cost(ptr %dst, ptr %x.ptr, ptr %y.ptr, ptr %dst.1,
246212; CHECK-NEXT: [[TMP33:%.*]] = xor <2 x i1> [[BROADCAST_SPLAT57]], splat (i1 true)
247213; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
248214; CHECK: [[VECTOR_BODY]]:
249- ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_STORE_CONTINUE89 :.*]] ]
215+ ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_STORE_CONTINUE55 :.*]] ]
250216; CHECK-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 0
251217; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i64, ptr [[X_PTR]], i64 [[TMP3]]
252218; CHECK-NEXT: [[TMP6:%.*]] = getelementptr i64, ptr [[TMP4]], i32 0
253- ; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i64>, ptr [[TMP6]], align 8, !alias.scope [[META7:![0-9]+]]
219+ ; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i64>, ptr [[TMP6]], align 8
254220; CHECK-NEXT: [[TMP47:%.*]] = icmp eq <2 x i64> [[WIDE_LOAD]], zeroinitializer
255221; CHECK-NEXT: [[TMP5:%.*]] = xor <2 x i1> [[TMP47]], splat (i1 true)
256222; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i1> [[TMP5]], i32 0
257223; CHECK-NEXT: br i1 [[TMP8]], label %[[PRED_STORE_IF:.*]], label %[[PRED_STORE_CONTINUE:.*]]
258224; CHECK: [[PRED_STORE_IF]]:
259- ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META10 :![0-9]+]], !noalias [[META12 :![0-9]+]]
225+ ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META7 :![0-9]+]], !noalias [[META10 :![0-9]+]]
260226; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE]]
261227; CHECK: [[PRED_STORE_CONTINUE]]:
262228; CHECK-NEXT: [[TMP9:%.*]] = extractelement <2 x i1> [[TMP5]], i32 1
263- ; CHECK-NEXT: br i1 [[TMP9]], label %[[PRED_STORE_IF76 :.*]], label %[[PRED_STORE_CONTINUE77 :.*]]
264- ; CHECK: [[PRED_STORE_IF76 ]]:
265- ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META10 ]], !noalias [[META12 ]]
266- ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE77 ]]
267- ; CHECK: [[PRED_STORE_CONTINUE77 ]]:
229+ ; CHECK-NEXT: br i1 [[TMP9]], label %[[PRED_STORE_IF42 :.*]], label %[[PRED_STORE_CONTINUE43 :.*]]
230+ ; CHECK: [[PRED_STORE_IF42 ]]:
231+ ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META7 ]], !noalias [[META10 ]]
232+ ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE43 ]]
233+ ; CHECK: [[PRED_STORE_CONTINUE43 ]]:
268234; CHECK-NEXT: [[TMP13:%.*]] = select <2 x i1> [[TMP5]], <2 x i1> [[TMP11]], <2 x i1> zeroinitializer
269235; CHECK-NEXT: [[TMP16:%.*]] = extractelement <2 x i1> [[TMP13]], i32 0
270- ; CHECK-NEXT: br i1 [[TMP16]], label %[[PRED_STORE_IF78 :.*]], label %[[PRED_STORE_CONTINUE79 :.*]]
271- ; CHECK: [[PRED_STORE_IF78 ]]:
272- ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META18 :![0-9]+]], !noalias [[META19 :![0-9]+]]
273- ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE79 ]]
274- ; CHECK: [[PRED_STORE_CONTINUE79 ]]:
236+ ; CHECK-NEXT: br i1 [[TMP16]], label %[[PRED_STORE_IF44 :.*]], label %[[PRED_STORE_CONTINUE45 :.*]]
237+ ; CHECK: [[PRED_STORE_IF44 ]]:
238+ ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META15 :![0-9]+]], !noalias [[META16 :![0-9]+]]
239+ ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE45 ]]
240+ ; CHECK: [[PRED_STORE_CONTINUE45 ]]:
275241; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x i1> [[TMP13]], i32 1
276- ; CHECK-NEXT: br i1 [[TMP17]], label %[[PRED_STORE_IF80 :.*]], label %[[PRED_STORE_CONTINUE81 :.*]]
277- ; CHECK: [[PRED_STORE_IF80 ]]:
278- ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META18 ]], !noalias [[META19 ]]
279- ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE81 ]]
280- ; CHECK: [[PRED_STORE_CONTINUE81 ]]:
242+ ; CHECK-NEXT: br i1 [[TMP17]], label %[[PRED_STORE_IF46 :.*]], label %[[PRED_STORE_CONTINUE47 :.*]]
243+ ; CHECK: [[PRED_STORE_IF46 ]]:
244+ ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META15 ]], !noalias [[META16 ]]
245+ ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE47 ]]
246+ ; CHECK: [[PRED_STORE_CONTINUE47 ]]:
281247; CHECK-NEXT: [[TMP19:%.*]] = select <2 x i1> [[TMP5]], <2 x i1> [[BROADCAST_SPLAT41]], <2 x i1> zeroinitializer
282248; CHECK-NEXT: [[TMP21:%.*]] = select <2 x i1> [[TMP19]], <2 x i1> [[BROADCAST_SPLAT57]], <2 x i1> zeroinitializer
283249; CHECK-NEXT: [[TMP23:%.*]] = or <2 x i1> [[TMP47]], [[TMP21]]
284250; CHECK-NEXT: [[PREDPHI58:%.*]] = select <2 x i1> [[TMP21]], <2 x i64> zeroinitializer, <2 x i64> splat (i64 1)
285251; CHECK-NEXT: [[TMP28:%.*]] = extractelement <2 x i1> [[TMP23]], i32 0
286- ; CHECK-NEXT: br i1 [[TMP28]], label %[[PRED_STORE_IF82 :.*]], label %[[PRED_STORE_CONTINUE83 :.*]]
287- ; CHECK: [[PRED_STORE_IF82 ]]:
252+ ; CHECK-NEXT: br i1 [[TMP28]], label %[[PRED_STORE_IF48 :.*]], label %[[PRED_STORE_CONTINUE49 :.*]]
253+ ; CHECK: [[PRED_STORE_IF48 ]]:
288254; CHECK-NEXT: [[TMP29:%.*]] = extractelement <2 x i64> [[PREDPHI58]], i32 0
289- ; CHECK-NEXT: store i64 [[TMP29]], ptr [[DST_2]], align 8, !alias.scope [[META20 :![0-9]+]], !noalias [[META21 :![0-9]+]]
290- ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE83 ]]
291- ; CHECK: [[PRED_STORE_CONTINUE83 ]]:
255+ ; CHECK-NEXT: store i64 [[TMP29]], ptr [[DST_2]], align 8, !alias.scope [[META17 :![0-9]+]], !noalias [[META18 :![0-9]+]]
256+ ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE49 ]]
257+ ; CHECK: [[PRED_STORE_CONTINUE49 ]]:
292258; CHECK-NEXT: [[TMP30:%.*]] = extractelement <2 x i1> [[TMP23]], i32 1
293- ; CHECK-NEXT: br i1 [[TMP30]], label %[[PRED_STORE_IF84 :.*]], label %[[PRED_STORE_CONTINUE85 :.*]]
294- ; CHECK: [[PRED_STORE_IF84 ]]:
259+ ; CHECK-NEXT: br i1 [[TMP30]], label %[[PRED_STORE_IF50 :.*]], label %[[PRED_STORE_CONTINUE51 :.*]]
260+ ; CHECK: [[PRED_STORE_IF50 ]]:
295261; CHECK-NEXT: [[TMP31:%.*]] = extractelement <2 x i64> [[PREDPHI58]], i32 1
296- ; CHECK-NEXT: store i64 [[TMP31]], ptr [[DST_2]], align 8, !alias.scope [[META20 ]], !noalias [[META21 ]]
297- ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE85 ]]
298- ; CHECK: [[PRED_STORE_CONTINUE85 ]]:
262+ ; CHECK-NEXT: store i64 [[TMP31]], ptr [[DST_2]], align 8, !alias.scope [[META17 ]], !noalias [[META18 ]]
263+ ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE51 ]]
264+ ; CHECK: [[PRED_STORE_CONTINUE51 ]]:
299265; CHECK-NEXT: [[TMP35:%.*]] = select <2 x i1> [[TMP19]], <2 x i1> [[TMP33]], <2 x i1> zeroinitializer
300266; CHECK-NEXT: [[TMP37:%.*]] = or <2 x i1> [[TMP23]], [[TMP35]]
301267; CHECK-NEXT: [[TMP42:%.*]] = extractelement <2 x i1> [[TMP37]], i32 0
302- ; CHECK-NEXT: br i1 [[TMP42]], label %[[PRED_STORE_IF86 :.*]], label %[[PRED_STORE_CONTINUE87 :.*]]
303- ; CHECK: [[PRED_STORE_IF86 ]]:
304- ; CHECK-NEXT: [[TMP24:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META22 :![0-9]+]]
305- ; CHECK-NEXT: store i64 [[TMP24]], ptr [[DST]], align 8, !alias.scope [[META23 :![0-9]+]], !noalias [[META24:![0-9]+ ]]
306- ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE87 ]]
307- ; CHECK: [[PRED_STORE_CONTINUE87 ]]:
268+ ; CHECK-NEXT: br i1 [[TMP42]], label %[[PRED_STORE_IF52 :.*]], label %[[PRED_STORE_CONTINUE53 :.*]]
269+ ; CHECK: [[PRED_STORE_IF52 ]]:
270+ ; CHECK-NEXT: [[TMP24:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META19 :![0-9]+]]
271+ ; CHECK-NEXT: store i64 [[TMP24]], ptr [[DST]], align 8, !alias.scope [[META20 :![0-9]+]], !noalias [[META19 ]]
272+ ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE53 ]]
273+ ; CHECK: [[PRED_STORE_CONTINUE53 ]]:
308274; CHECK-NEXT: [[TMP44:%.*]] = extractelement <2 x i1> [[TMP37]], i32 1
309- ; CHECK-NEXT: br i1 [[TMP44]], label %[[PRED_STORE_IF88 :.*]], label %[[PRED_STORE_CONTINUE89 ]]
310- ; CHECK: [[PRED_STORE_IF88 ]]:
311- ; CHECK-NEXT: [[TMP25:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META22 ]]
312- ; CHECK-NEXT: store i64 [[TMP25]], ptr [[DST]], align 8, !alias.scope [[META23 ]], !noalias [[META24 ]]
313- ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE89 ]]
314- ; CHECK: [[PRED_STORE_CONTINUE89 ]]:
275+ ; CHECK-NEXT: br i1 [[TMP44]], label %[[PRED_STORE_IF54 :.*]], label %[[PRED_STORE_CONTINUE55 ]]
276+ ; CHECK: [[PRED_STORE_IF54 ]]:
277+ ; CHECK-NEXT: [[TMP25:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META19 ]]
278+ ; CHECK-NEXT: store i64 [[TMP25]], ptr [[DST]], align 8, !alias.scope [[META20 ]], !noalias [[META19 ]]
279+ ; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE55 ]]
280+ ; CHECK: [[PRED_STORE_CONTINUE55 ]]:
315281; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
316282; CHECK-NEXT: [[TMP46:%.*]] = icmp eq i64 [[INDEX_NEXT]], 64
317- ; CHECK-NEXT: br i1 [[TMP46]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP25 :![0-9]+]]
283+ ; CHECK-NEXT: br i1 [[TMP46]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP21 :![0-9]+]]
318284; CHECK: [[MIDDLE_BLOCK]]:
319285; CHECK-NEXT: br i1 false, label %[[EXIT:.*]], label %[[SCALAR_PH]]
320286; CHECK: [[SCALAR_PH]]:
@@ -355,7 +321,7 @@ define void @test_exit_branch_cost(ptr %dst, ptr %x.ptr, ptr %y.ptr, ptr %dst.1,
355321; CHECK: [[LOOP_LATCH]]:
356322; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
357323; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV]], 64
358- ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP_HEADER]], !llvm.loop [[LOOP26 :![0-9]+]]
324+ ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP_HEADER]], !llvm.loop [[LOOP22 :![0-9]+]]
359325; CHECK: [[EXIT]]:
360326; CHECK-NEXT: ret void
361327;
@@ -424,21 +390,17 @@ declare i64 @llvm.umin.i64(i64, i64)
424390; CHECK: [[META7]] = !{[[META8:![0-9]+]]}
425391; CHECK: [[META8]] = distinct !{[[META8]], [[META9:![0-9]+]]}
426392; CHECK: [[META9]] = distinct !{[[META9]], !"LVerDomain"}
427- ; CHECK: [[META10]] = !{[[META11:![0-9]+]]}
393+ ; CHECK: [[META10]] = !{[[META11:![0-9]+]], [[META12:![0-9]+]], [[META13:![0-9]+]], [[META14:![0-9]+]] }
428394; CHECK: [[META11]] = distinct !{[[META11]], [[META9]]}
429- ; CHECK: [[META12]] = !{[[META13:![0-9]+]] , [[META14:![0-9]+]], [[META15:![0-9]+]], [[META8]], [[META16:![0-9]+]], [[META17:![0-9]+ ]]}
395+ ; CHECK: [[META12]] = distinct !{[[META12]] , [[META9 ]]}
430396; CHECK: [[META13]] = distinct !{[[META13]], [[META9]]}
431397; CHECK: [[META14]] = distinct !{[[META14]], [[META9]]}
432- ; CHECK: [[META15]] = distinct !{[[META15]], [[META9]]}
433- ; CHECK: [[META16]] = distinct !{[[META16]], [[META9]]}
434- ; CHECK: [[META17]] = distinct !{[[META17]], [[META9]]}
435- ; CHECK: [[META18]] = !{[[META13]]}
436- ; CHECK: [[META19]] = !{[[META14]], [[META15]], [[META8]], [[META16]], [[META17]]}
437- ; CHECK: [[META20]] = !{[[META14]]}
438- ; CHECK: [[META21]] = !{[[META15]], [[META8]], [[META16]], [[META17]]}
439- ; CHECK: [[META22]] = !{[[META17]]}
440- ; CHECK: [[META23]] = !{[[META15]]}
441- ; CHECK: [[META24]] = !{[[META8]], [[META16]], [[META17]]}
442- ; CHECK: [[LOOP25]] = distinct !{[[LOOP25]], [[META1]], [[META2]]}
443- ; CHECK: [[LOOP26]] = distinct !{[[LOOP26]], [[META1]]}
398+ ; CHECK: [[META15]] = !{[[META11]]}
399+ ; CHECK: [[META16]] = !{[[META12]], [[META13]], [[META14]]}
400+ ; CHECK: [[META17]] = !{[[META12]]}
401+ ; CHECK: [[META18]] = !{[[META13]], [[META14]]}
402+ ; CHECK: [[META19]] = !{[[META14]]}
403+ ; CHECK: [[META20]] = !{[[META13]]}
404+ ; CHECK: [[LOOP21]] = distinct !{[[LOOP21]], [[META1]], [[META2]]}
405+ ; CHECK: [[LOOP22]] = distinct !{[[LOOP22]], [[META1]]}
444406;.
0 commit comments