Skip to content

Commit 71fec6b

Browse files
committed
Add name for early exit value
1 parent 553bad4 commit 71fec6b

File tree

3 files changed

+49
-49
lines changed

3 files changed

+49
-49
lines changed

llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ Value *VPInstruction::generate(VPTransformState &State) {
702702
Value *Mask = State.get(getOperand(1));
703703
Value *Ctz = Builder.CreateCountTrailingZeroElems(
704704
Builder.getInt64Ty(), Mask, true, "first.active.lane");
705-
return Builder.CreateExtractElement(Vec, Ctz);
705+
return Builder.CreateExtractElement(Vec, Ctz, "early.exit.value");
706706
}
707707
default:
708708
llvm_unreachable("Unsupported opcode for instruction");

llvm/test/Transforms/LoopVectorize/AArch64/simple_early_exit.ll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ define i64 @same_exit_block_pre_inc_use1() #1 {
5555
; CHECK-NEXT: br i1 [[TMP17]], label [[VECTOR_EARLY_EXIT:%.*]], label [[MIDDLE_BLOCK:%.*]]
5656
; CHECK: vector.early.exit:
5757
; CHECK-NEXT: [[FIRST_ACTIVE_LANE:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.nxv16i1(<vscale x 16 x i1> [[TMP16]], i1 true)
58-
; CHECK-NEXT: [[TMP20:%.*]] = extractelement <vscale x 16 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
58+
; CHECK-NEXT: [[EARLY_EXIT_VALUE:%.*]] = extractelement <vscale x 16 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
5959
; CHECK-NEXT: br label [[LOOP_END:%.*]]
6060
; CHECK: middle.block:
6161
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 64, [[N_VEC]]
@@ -76,7 +76,7 @@ define i64 @same_exit_block_pre_inc_use1() #1 {
7676
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDEX_NEXT]], 67
7777
; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP]], label [[LOOP_END]], !llvm.loop [[LOOP3:![0-9]+]]
7878
; CHECK: loop.end:
79-
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[TMP20]], [[VECTOR_EARLY_EXIT]] ]
79+
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[EARLY_EXIT_VALUE]], [[VECTOR_EARLY_EXIT]] ]
8080
; CHECK-NEXT: ret i64 [[RETVAL]]
8181
;
8282
entry:
@@ -138,7 +138,7 @@ define i64 @same_exit_block_pre_inc_use4() {
138138
; CHECK-NEXT: br i1 [[TMP5]], label [[VECTOR_EARLY_EXIT:%.*]], label [[MIDDLE_BLOCK:%.*]]
139139
; CHECK: vector.early.exit:
140140
; CHECK-NEXT: [[FIRST_ACTIVE_LANE:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.v2i1(<2 x i1> [[TMP4]], i1 true)
141-
; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
141+
; CHECK-NEXT: [[EARLY_EXIT_VALUE:%.*]] = extractelement <2 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
142142
; CHECK-NEXT: br label [[LOOP_END:%.*]]
143143
; CHECK: middle.block:
144144
; CHECK-NEXT: br i1 true, label [[LOOP_END]], label [[SCALAR_PH]]
@@ -156,7 +156,7 @@ define i64 @same_exit_block_pre_inc_use4() {
156156
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDEX_NEXT]], 67
157157
; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP]], label [[LOOP_END]], !llvm.loop [[LOOP5:![0-9]+]]
158158
; CHECK: loop.end:
159-
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[TMP8]], [[VECTOR_EARLY_EXIT]] ]
159+
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[EARLY_EXIT_VALUE]], [[VECTOR_EARLY_EXIT]] ]
160160
; CHECK-NEXT: ret i64 [[RETVAL]]
161161
;
162162
entry:
@@ -216,7 +216,7 @@ define i64 @loop_contains_safe_call() #1 {
216216
; CHECK-NEXT: br i1 [[TMP6]], label [[VECTOR_EARLY_EXIT:%.*]], label [[MIDDLE_BLOCK:%.*]]
217217
; CHECK: vector.early.exit:
218218
; CHECK-NEXT: [[FIRST_ACTIVE_LANE:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.v4i1(<4 x i1> [[TMP5]], i1 true)
219-
; CHECK-NEXT: [[TMP9:%.*]] = extractelement <4 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
219+
; CHECK-NEXT: [[EARLY_EXIT_VALUE:%.*]] = extractelement <4 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
220220
; CHECK-NEXT: br label [[LOOP_END:%.*]]
221221
; CHECK: middle.block:
222222
; CHECK-NEXT: br i1 true, label [[LOOP_END]], label [[SCALAR_PH]]
@@ -235,7 +235,7 @@ define i64 @loop_contains_safe_call() #1 {
235235
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDEX_NEXT]], 67
236236
; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP]], label [[LOOP_END]], !llvm.loop [[LOOP7:![0-9]+]]
237237
; CHECK: loop.end:
238-
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[TMP9]], [[VECTOR_EARLY_EXIT]] ]
238+
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[EARLY_EXIT_VALUE]], [[VECTOR_EARLY_EXIT]] ]
239239
; CHECK-NEXT: ret i64 [[RETVAL]]
240240
;
241241
entry:
@@ -296,7 +296,7 @@ define i64 @loop_contains_safe_div() #1 {
296296
; CHECK-NEXT: br i1 [[TMP6]], label [[VECTOR_EARLY_EXIT:%.*]], label [[MIDDLE_BLOCK:%.*]]
297297
; CHECK: vector.early.exit:
298298
; CHECK-NEXT: [[FIRST_ACTIVE_LANE:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.v2i1(<2 x i1> [[TMP5]], i1 true)
299-
; CHECK-NEXT: [[TMP9:%.*]] = extractelement <2 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
299+
; CHECK-NEXT: [[EARLY_EXIT_VALUE:%.*]] = extractelement <2 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
300300
; CHECK-NEXT: br label [[LOOP_END:%.*]]
301301
; CHECK: middle.block:
302302
; CHECK-NEXT: br i1 true, label [[LOOP_END]], label [[SCALAR_PH]]
@@ -315,7 +315,7 @@ define i64 @loop_contains_safe_div() #1 {
315315
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDEX_NEXT]], 67
316316
; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP]], label [[LOOP_END]], !llvm.loop [[LOOP9:![0-9]+]]
317317
; CHECK: loop.end:
318-
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[TMP9]], [[VECTOR_EARLY_EXIT]] ]
318+
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[EARLY_EXIT_VALUE]], [[VECTOR_EARLY_EXIT]] ]
319319
; CHECK-NEXT: ret i64 [[RETVAL]]
320320
;
321321
entry:
@@ -381,7 +381,7 @@ define i64 @loop_contains_load_after_early_exit(ptr dereferenceable(1024) align(
381381
; CHECK-NEXT: br i1 [[TMP7]], label [[VECTOR_EARLY_EXIT:%.*]], label [[MIDDLE_BLOCK:%.*]]
382382
; CHECK: vector.early.exit:
383383
; CHECK-NEXT: [[FIRST_ACTIVE_LANE:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.v4i1(<4 x i1> [[TMP6]], i1 true)
384-
; CHECK-NEXT: [[TMP11:%.*]] = extractelement <4 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
384+
; CHECK-NEXT: [[EARLY_EXIT_VALUE:%.*]] = extractelement <4 x i64> [[VEC_IND]], i64 [[FIRST_ACTIVE_LANE]]
385385
; CHECK-NEXT: br label [[LOOP_END:%.*]]
386386
; CHECK: middle.block:
387387
; CHECK-NEXT: br i1 true, label [[LOOP_END]], label [[SCALAR_PH]]
@@ -401,7 +401,7 @@ define i64 @loop_contains_load_after_early_exit(ptr dereferenceable(1024) align(
401401
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDEX_NEXT]], 67
402402
; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP]], label [[LOOP_END]], !llvm.loop [[LOOP11:![0-9]+]]
403403
; CHECK: loop.end:
404-
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ [[LD2]], [[LOOP_INC]] ], [ [[TMP10]], [[MIDDLE_BLOCK]] ], [ [[TMP11]], [[VECTOR_EARLY_EXIT]] ]
404+
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ [[LD2]], [[LOOP_INC]] ], [ [[TMP10]], [[MIDDLE_BLOCK]] ], [ [[EARLY_EXIT_VALUE]], [[VECTOR_EARLY_EXIT]] ]
405405
; CHECK-NEXT: ret i64 [[RETVAL]]
406406
;
407407
entry:

0 commit comments

Comments
 (0)