@@ -382,65 +382,3 @@ loop.latch:
382
382
exit:
383
383
ret void
384
384
}
385
-
386
- ; Test case for PR44800.
387
- define void @duplicated_incoming_blocks_blend (i32 %x , i32* %ptr ) {
388
- ; CHECK-LABEL: @duplicated_incoming_blocks_blend(
389
- ; CHECK-NEXT: entry:
390
- ; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
391
- ; CHECK: vector.ph:
392
- ; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <2 x i32> poison, i32 [[X:%.*]], i32 0
393
- ; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <2 x i32> [[BROADCAST_SPLATINSERT]], <2 x i32> poison, <2 x i32> zeroinitializer
394
- ; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
395
- ; CHECK: vector.body:
396
- ; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
397
- ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i32> [ <i32 0, i32 1>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ]
398
- ; CHECK-NEXT: [[TMP0:%.*]] = icmp ugt <2 x i32> [[VEC_IND]], [[BROADCAST_SPLAT]]
399
- ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <2 x i32> [[VEC_IND]], i32 0
400
- ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i32, i32* [[PTR:%.*]], i32 [[TMP1]]
401
- ; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i32, i32* [[TMP2]], i32 0
402
- ; CHECK-NEXT: [[TMP4:%.*]] = bitcast i32* [[TMP3]] to <2 x i32>*
403
- ; CHECK-NEXT: store <2 x i32> [[VEC_IND]], <2 x i32>* [[TMP4]], align 4
404
- ; CHECK-NEXT: [[INDEX_NEXT]] = add i32 [[INDEX]], 2
405
- ; CHECK-NEXT: [[VEC_IND_NEXT]] = add <2 x i32> [[VEC_IND]], <i32 2, i32 2>
406
- ; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i32 [[INDEX_NEXT]], 1000
407
- ; CHECK-NEXT: br i1 [[TMP5]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], [[LOOP10:!llvm.loop !.*]]
408
- ; CHECK: middle.block:
409
- ; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i32 1000, 1000
410
- ; CHECK-NEXT: br i1 [[CMP_N]], label [[EXIT:%.*]], label [[SCALAR_PH]]
411
- ; CHECK: scalar.ph:
412
- ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ 1000, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.*]] ]
413
- ; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
414
- ; CHECK: loop.header:
415
- ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[ADD_I:%.*]], [[LOOP_LATCH:%.*]] ]
416
- ; CHECK-NEXT: [[C_0:%.*]] = icmp ugt i32 [[IV]], [[X]]
417
- ; CHECK-NEXT: br i1 [[C_0]], label [[LOOP_LATCH]], label [[LOOP_LATCH]]
418
- ; CHECK: loop.latch:
419
- ; CHECK-NEXT: [[P:%.*]] = phi i32 [ [[IV]], [[LOOP_HEADER]] ], [ [[IV]], [[LOOP_HEADER]] ]
420
- ; CHECK-NEXT: [[GEP_PTR:%.*]] = getelementptr i32, i32* [[PTR]], i32 [[P]]
421
- ; CHECK-NEXT: store i32 [[P]], i32* [[GEP_PTR]], align 4
422
- ; CHECK-NEXT: [[ADD_I]] = add nsw i32 [[P]], 1
423
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[ADD_I]], 1000
424
- ; CHECK-NEXT: br i1 [[CMP]], label [[LOOP_HEADER]], label [[EXIT]], [[LOOP11:!llvm.loop !.*]]
425
- ; CHECK: exit:
426
- ; CHECK-NEXT: ret void
427
- ;
428
- entry:
429
- br label %loop.header
430
-
431
- loop.header:
432
- %iv = phi i32 [ 0 , %entry ], [ %add.i , %loop.latch ]
433
- %c.0 = icmp ugt i32 %iv , %x
434
- br i1 %c.0 , label %loop.latch , label %loop.latch
435
-
436
- loop.latch:
437
- %p = phi i32 [ %iv , %loop.header ], [ %iv , %loop.header ]
438
- %gep.ptr = getelementptr i32 , i32* %ptr , i32 %p
439
- store i32 %p , i32* %gep.ptr
440
- %add.i = add nsw i32 %p , 1
441
- %cmp = icmp slt i32 %add.i , 1000
442
- br i1 %cmp , label %loop.header , label %exit
443
-
444
- exit:
445
- ret void
446
- }
0 commit comments