@@ -515,27 +515,6 @@ declare i32 @foo()
515515; Loop with a call cannot be handled by LoopVectorize, introducing additional
516516; accumulators when unrolling increases throughput.
517517define i32 @test_add_with_call (i64 %n , i32 %start ) {
518- ; CHECK-LABEL: define i32 @test_add_with_call(
519- ; CHECK-SAME: i64 [[N:%.*]], i32 [[START:%.*]]) {
520- ; CHECK-NEXT: [[ENTRY:.*]]:
521- ; CHECK-NEXT: br label %[[LOOP:.*]]
522- ; CHECK: [[LOOP]]:
523- ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_NEXT_3:%.*]], %[[LOOP]] ]
524- ; CHECK-NEXT: [[RDX:%.*]] = phi i32 [ [[START]], %[[ENTRY]] ], [ [[RDX_NEXT_3:%.*]], %[[LOOP]] ]
525- ; CHECK-NEXT: [[L:%.*]] = call i32 @foo()
526- ; CHECK-NEXT: [[RDX_NEXT:%.*]] = add i32 [[RDX]], [[L]]
527- ; CHECK-NEXT: [[L_1:%.*]] = call i32 @foo()
528- ; CHECK-NEXT: [[RDX_2:%.*]] = add i32 [[RDX_NEXT]], [[L_1]]
529- ; CHECK-NEXT: [[L_2:%.*]] = call i32 @foo()
530- ; CHECK-NEXT: [[RDX_NEXT_2:%.*]] = add i32 [[RDX_2]], [[L_2]]
531- ; CHECK-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV]], 4
532- ; CHECK-NEXT: [[L_3:%.*]] = call i32 @foo()
533- ; CHECK-NEXT: [[RDX_NEXT_3]] = add i32 [[RDX_NEXT_2]], [[L_3]]
534- ; CHECK-NEXT: [[EC_3:%.*]] = icmp ne i64 [[IV_NEXT_3]], 1000
535- ; CHECK-NEXT: br i1 [[EC_3]], label %[[LOOP]], label %[[EXIT:.*]]
536- ; CHECK: [[EXIT]]:
537- ; CHECK-NEXT: [[BIN_RDX2:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
538- ; CHECK-NEXT: ret i32 [[BIN_RDX2]]
539518;
540519entry:
541520 br label %loop
@@ -556,42 +535,6 @@ exit:
556535; Loop with backward dependence cannot be handled LoopVectorize, introducing additional
557536; accumulators when unrolling increases throughput.
558537define i32 @test_add_with_backward_dep (ptr %p , i64 %n , i32 %start ) {
559- ; CHECK-LABEL: define i32 @test_add_with_backward_dep(
560- ; CHECK-SAME: ptr [[P:%.*]], i64 [[N:%.*]], i32 [[START:%.*]]) {
561- ; CHECK-NEXT: [[ENTRY:.*]]:
562- ; CHECK-NEXT: br label %[[LOOP:.*]]
563- ; CHECK: [[LOOP]]:
564- ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_NEXT_3:%.*]], %[[LOOP]] ]
565- ; CHECK-NEXT: [[RDX:%.*]] = phi i32 [ [[START]], %[[ENTRY]] ], [ [[RDX_NEXT_3:%.*]], %[[LOOP]] ]
566- ; CHECK-NEXT: [[IV_NEXT:%.*]] = add nuw nsw i64 [[IV]], 1
567- ; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV]]
568- ; CHECK-NEXT: [[L:%.*]] = load i32, ptr [[GEP]], align 4
569- ; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV_NEXT]]
570- ; CHECK-NEXT: store i32 0, ptr [[GEP_1]], align 4
571- ; CHECK-NEXT: [[RDX_NEXT:%.*]] = add i32 [[RDX]], [[L]]
572- ; CHECK-NEXT: [[IV_NEXT_1:%.*]] = add nuw nsw i64 [[IV]], 2
573- ; CHECK-NEXT: [[GEP_11:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV_NEXT]]
574- ; CHECK-NEXT: [[L_1:%.*]] = load i32, ptr [[GEP_11]], align 4
575- ; CHECK-NEXT: [[GEP_1_1:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV_NEXT_1]]
576- ; CHECK-NEXT: store i32 0, ptr [[GEP_1_1]], align 4
577- ; CHECK-NEXT: [[RDX_2:%.*]] = add i32 [[RDX_NEXT]], [[L_1]]
578- ; CHECK-NEXT: [[IV_NEXT_2:%.*]] = add nuw nsw i64 [[IV]], 3
579- ; CHECK-NEXT: [[GEP_2:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV_NEXT_1]]
580- ; CHECK-NEXT: [[L_2:%.*]] = load i32, ptr [[GEP_2]], align 4
581- ; CHECK-NEXT: [[GEP_1_2:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV_NEXT_2]]
582- ; CHECK-NEXT: store i32 0, ptr [[GEP_1_2]], align 4
583- ; CHECK-NEXT: [[RDX_NEXT_2:%.*]] = add i32 [[RDX_2]], [[L_2]]
584- ; CHECK-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV]], 4
585- ; CHECK-NEXT: [[GEP_3:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV_NEXT_2]]
586- ; CHECK-NEXT: [[L_3:%.*]] = load i32, ptr [[GEP_3]], align 4
587- ; CHECK-NEXT: [[GEP_1_3:%.*]] = getelementptr inbounds nuw i32, ptr [[P]], i64 [[IV_NEXT_3]]
588- ; CHECK-NEXT: store i32 0, ptr [[GEP_1_3]], align 4
589- ; CHECK-NEXT: [[RDX_NEXT_3]] = add i32 [[RDX_NEXT_2]], [[L_3]]
590- ; CHECK-NEXT: [[EC_3:%.*]] = icmp ne i64 [[IV_NEXT_3]], 1000
591- ; CHECK-NEXT: br i1 [[EC_3]], label %[[LOOP]], label %[[EXIT:.*]]
592- ; CHECK: [[EXIT]]:
593- ; CHECK-NEXT: [[BIN_RDX3:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
594- ; CHECK-NEXT: ret i32 [[BIN_RDX3]]
595538;
596539entry:
597540 br label %loop
0 commit comments