| ; RUN: opt -passes=loop-vectorize -disable-output -force-vector-width=4 < %s \ | |
| ; RUN: -vplan-print-before='combine|simplify' -vplan-print-before=printFinalVPlan \ | |
| ; RUN: 2>&1 | FileCheck %s -DBEFORE_OR_AFTER=before --check-prefix=CHECK \ | |
| ; RUN: --implicit-check-not "VPlan before" | |
| ; RUN: opt -passes=loop-vectorize -disable-output -force-vector-width=4 < %s \ | |
| ; RUN: -vplan-print-after='combine|simplify' -vplan-print-after=printFinalVPlan \ | |
| ; RUN: 2>&1 | FileCheck %s -DBEFORE_OR_AFTER=after --check-prefix=CHECK \ | |
| ; RUN: --implicit-check-not "VPlan after" | |
| ; RUN: opt -passes=loop-vectorize -disable-output -force-vector-width=4 < %s \ | |
| ; RUN: -vplan-print-after='nomatch,combine|simplify,printFinalVPlan' \ | |
| ; RUN: 2>&1 | FileCheck %s -DBEFORE_OR_AFTER=after --check-prefix=CHECK \ | |
| ; RUN: --implicit-check-not "VPlan after" | |
| ; These two just to exercise the pass numbering skipping. Can't really check if | |
| ; it's done as we don't print anything, but at least make sure we don't crash. | |
| ; RUN: opt -passes=loop-vectorize -disable-output -force-vector-width=4 -vplan-print-before="" < %s 2>&1 | count 0 | |
| ; RUN: opt -passes=loop-vectorize -disable-output -force-vector-width=4 -vplan-print-after="" < %s 2>&1 | count 0 | |
| ; REQUIRES: asserts | |
| ; CHECK: VPlan for loop in 'foo' [[BEFORE_OR_AFTER]] combineRecipes | |
| ; CHECK-NEXT: VPlan 'Initial VPlan for VF={4},UF>=1' { | |
| ; CHECK: VPlan for loop in 'foo' [[BEFORE_OR_AFTER]] simplifyBlends | |
| ; CHECK-NEXT: VPlan 'Initial VPlan for VF={4},UF>=1' { | |
| ; CHECK: VPlan for loop in 'foo' [[BEFORE_OR_AFTER]] combineRecipes | |
| ; CHECK-NEXT: VPlan 'Initial VPlan for VF={4},UF>=1' { | |
| ; CHECK: VPlan for loop in 'foo' [[BEFORE_OR_AFTER]] printFinalVPlan | |
| ; CHECK-NEXT: VPlan 'Final VPlan for VF={4},UF={1}' { | |
| define void @foo(ptr %ptr, i64 %n) { | |
| entry: | |
| br label %header | |
| header: | |
| %iv = phi i64 [ 0, %entry ], [ %iv.next, %header ] | |
| %gep = getelementptr i64, ptr %ptr, i64 %iv | |
| store i64 %iv, ptr %gep | |
| %iv.next = add nsw i64 %iv, 1 | |
| %exitcond = icmp slt i64 %iv.next, %n | |
| br i1 %exitcond, label %header, label %exit | |
| exit: | |
| ret void | |
| } |