[llvm] [SCEV][NFC] Address post-merge comments on precommit test (PR #209094)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 13 00:00:06 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Aleksandr Popov (aleks-tmb)
<details>
<summary>Changes</summary>
Drop unnecessary atomic/unordered loads, unify block label naming, and regenerate CHECK lines with update_test_checks.py v6.
Follow-up to b33af86b032e (#<!-- -->208784).
---
Full diff: https://github.com/llvm/llvm-project/pull/209094.diff
1 Files Affected:
- (modified) llvm/test/Transforms/LoopVectorize/single_early_exit_zext_trip_count.ll (+39-39)
``````````diff
diff --git a/llvm/test/Transforms/LoopVectorize/single_early_exit_zext_trip_count.ll b/llvm/test/Transforms/LoopVectorize/single_early_exit_zext_trip_count.ll
index 2ea1fc2e34729..0cd984c15f995 100644
--- a/llvm/test/Transforms/LoopVectorize/single_early_exit_zext_trip_count.ll
+++ b/llvm/test/Transforms/LoopVectorize/single_early_exit_zext_trip_count.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --version 4
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --version 6
; RUN: opt -S < %s -p loop-vectorize -force-vector-width=4 | FileCheck %s
; assume(dereferenceable(p, zext(len + 8)));
@@ -17,36 +17,36 @@
define void @test1(ptr %p) {
; CHECK-LABEL: define void @test1(
; CHECK-SAME: ptr [[P:%.*]]) {
-; CHECK-NEXT: entry:
+; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: [[BASE:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 8
-; CHECK-NEXT: [[LEN:%.*]] = load atomic i32, ptr [[BASE]] unordered, align 4, !range [[RNG0:![0-9]+]]
+; CHECK-NEXT: [[LEN:%.*]] = load i32, ptr [[BASE]], align 4, !range [[RNG0:![0-9]+]]
; CHECK-NEXT: [[LEN_PLUS_8:%.*]] = add nuw nsw i32 [[LEN]], 8
; CHECK-NEXT: [[LEN_PLUS_8_WIDE:%.*]] = zext i32 [[LEN_PLUS_8]] to i64
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P]], i64 [[LEN_PLUS_8_WIDE]]) ]
; CHECK-NEXT: [[LEN_IS_ZERO:%.*]] = icmp eq i32 [[LEN]], 0
-; CHECK-NEXT: br i1 [[LEN_IS_ZERO]], label [[RET:%.*]], label [[PREHEADER:%.*]]
-; CHECK: preheader:
+; CHECK-NEXT: br i1 [[LEN_IS_ZERO]], label %[[RET:.*]], label %[[PREHEADER:.*]]
+; CHECK: [[PREHEADER]]:
; CHECK-NEXT: [[EXIT_32:%.*]] = add nsw i32 [[LEN]], -1
; CHECK-NEXT: [[EXIT:%.*]] = zext i32 [[EXIT_32]] to i64
-; CHECK-NEXT: br label [[LOOP:%.*]]
-; CHECK: loop:
-; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[IV_NEXT:%.*]], [[LATCH:%.*]] ], [ 0, [[PREHEADER]] ]
+; CHECK-NEXT: br label %[[LOOP:.*]]
+; CHECK: [[LOOP]]:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[IV_NEXT:%.*]], %[[LATCH:.*]] ], [ 0, %[[PREHEADER]] ]
; CHECK-NEXT: [[ELEM_PTR:%.*]] = getelementptr inbounds nuw i8, ptr [[BASE]], i64 [[IV]]
; CHECK-NEXT: [[ELEM:%.*]] = load i8, ptr [[ELEM_PTR]], align 1
; CHECK-NEXT: [[IS_TARGET:%.*]] = icmp eq i8 [[ELEM]], 0
-; CHECK-NEXT: br i1 [[IS_TARGET]], label [[DEOPT:%.*]], label [[LATCH]]
-; CHECK: latch:
+; CHECK-NEXT: br i1 [[IS_TARGET]], label %[[RET_LOOPEXIT:.*]], label %[[LATCH]]
+; CHECK: [[LATCH]]:
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
; CHECK-NEXT: [[LOOP_COND:%.*]] = icmp ult i64 [[IV]], [[EXIT]]
-; CHECK-NEXT: br i1 [[LOOP_COND]], label [[LOOP]], label [[DEOPT]]
-; CHECK: ret.loopexit:
-; CHECK-NEXT: br label [[RET]]
-; CHECK: ret:
+; CHECK-NEXT: br i1 [[LOOP_COND]], label %[[LOOP]], label %[[RET_LOOPEXIT]]
+; CHECK: [[RET_LOOPEXIT]]:
+; CHECK-NEXT: br label %[[RET]]
+; CHECK: [[RET]]:
; CHECK-NEXT: ret void
;
entry:
%base = getelementptr inbounds nuw i8, ptr %p, i64 8
- %len = load atomic i32, ptr %base unordered, align 4, !range !0
+ %len = load i32, ptr %base, align 4, !range !0
%len.plus.8 = add nuw nsw i32 %len, 8
%len.plus.8.wide = zext i32 %len.plus.8 to i64
call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %p, i64 %len.plus.8.wide) ]
@@ -97,66 +97,66 @@ ret:
define void @test2(ptr %p, i32 %A) {
; CHECK-LABEL: define void @test2(
; CHECK-SAME: ptr [[P:%.*]], i32 [[A:%.*]]) {
-; CHECK-NEXT: entry:
+; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: [[BASE:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 8
-; CHECK-NEXT: [[LEN:%.*]] = load atomic i32, ptr [[BASE]] unordered, align 4, !range [[RNG0]]
+; CHECK-NEXT: [[LEN:%.*]] = load i32, ptr [[BASE]], align 4, !range [[RNG0]]
; CHECK-NEXT: [[LEN_64:%.*]] = zext i32 [[LEN]] to i64
; CHECK-NEXT: [[LEN_PLUS_8:%.*]] = add nuw nsw i64 [[LEN_64]], 8
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P]], i64 [[LEN_PLUS_8]]) ]
; CHECK-NEXT: [[LEN_NONZERO:%.*]] = icmp ne i32 [[LEN]], 0
-; CHECK-NEXT: br i1 [[LEN_NONZERO]], label [[PREHEADER:%.*]], label [[RET2:%.*]]
-; CHECK: preheader:
+; CHECK-NEXT: br i1 [[LEN_NONZERO]], label %[[PREHEADER:.*]], label %[[RET:.*]]
+; CHECK: [[PREHEADER]]:
; CHECK-NEXT: [[LEN_MINUS_1:%.*]] = add nsw i32 [[LEN]], -1
; CHECK-NEXT: [[EXIT_MAINLOOP_AT:%.*]] = call i32 @llvm.umin.i32(i32 [[A]], i32 [[LEN_MINUS_1]])
; CHECK-NEXT: [[EXIT_UMIN:%.*]] = zext nneg i32 [[EXIT_MAINLOOP_AT]] to i64
; CHECK-NEXT: [[ENTRY_COND:%.*]] = icmp ult i64 1, [[EXIT_UMIN]]
-; CHECK-NEXT: br i1 [[ENTRY_COND]], label [[LOOP2_PREHEADER:%.*]], label [[RET2]]
-; CHECK: loop2.preheader:
-; CHECK-NEXT: br label [[LOOP2:%.*]]
-; CHECK: loop2:
-; CHECK-NEXT: [[IV2:%.*]] = phi i64 [ [[IV2_NEXT:%.*]], [[LATCH2:%.*]] ], [ 0, [[LOOP2_PREHEADER]] ]
+; CHECK-NEXT: br i1 [[ENTRY_COND]], label %[[LOOP2_PREHEADER:.*]], label %[[RET]]
+; CHECK: [[LOOP2_PREHEADER]]:
+; CHECK-NEXT: br label %[[LOOP:.*]]
+; CHECK: [[LOOP]]:
+; CHECK-NEXT: [[IV2:%.*]] = phi i64 [ [[IV2_NEXT:%.*]], %[[LATCH2:.*]] ], [ 0, %[[LOOP2_PREHEADER]] ]
; CHECK-NEXT: [[ELEM_PTR2:%.*]] = getelementptr inbounds nuw i8, ptr [[BASE]], i64 [[IV2]]
; CHECK-NEXT: [[ELEM2:%.*]] = load i8, ptr [[ELEM_PTR2]], align 1
; CHECK-NEXT: [[IS_TARGET2:%.*]] = icmp eq i8 [[ELEM2]], 0
-; CHECK-NEXT: br i1 [[IS_TARGET2]], label [[DEOPT2:%.*]], label [[LATCH2]]
-; CHECK: latch2:
+; CHECK-NEXT: br i1 [[IS_TARGET2]], label %[[RET_LOOPEXIT:.*]], label %[[LATCH2]]
+; CHECK: [[LATCH2]]:
; CHECK-NEXT: [[IV2_NEXT]] = add nuw nsw i64 [[IV2]], 1
; CHECK-NEXT: [[LOOP_COND2:%.*]] = icmp ult i64 [[IV2]], [[EXIT_UMIN]]
-; CHECK-NEXT: br i1 [[LOOP_COND2]], label [[LOOP2]], label [[DEOPT2]]
-; CHECK: ret2.loopexit:
-; CHECK-NEXT: br label [[RET2]]
-; CHECK: ret2:
+; CHECK-NEXT: br i1 [[LOOP_COND2]], label %[[LOOP]], label %[[RET_LOOPEXIT]]
+; CHECK: [[RET_LOOPEXIT]]:
+; CHECK-NEXT: br label %[[RET]]
+; CHECK: [[RET]]:
; CHECK-NEXT: ret void
;
entry:
%base = getelementptr inbounds nuw i8, ptr %p, i64 8
- %len = load atomic i32, ptr %base unordered, align 4, !range !0
+ %len = load i32, ptr %base, align 4, !range !0
%len.64 = zext i32 %len to i64
%len.plus.8 = add nuw nsw i64 %len.64, 8
call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %p, i64 %len.plus.8) ]
%len.nonzero = icmp ne i32 %len, 0
- br i1 %len.nonzero, label %preheader, label %ret2
+ br i1 %len.nonzero, label %preheader, label %ret
preheader:
%len.minus.1 = add nsw i32 %len, -1
%exit.mainloop.at = call i32 @llvm.umin.i32(i32 %A, i32 %len.minus.1)
%exit.umin = zext nneg i32 %exit.mainloop.at to i64
%entry.cond = icmp ult i64 1, %exit.umin
- br i1 %entry.cond, label %loop2, label %ret2
+ br i1 %entry.cond, label %loop, label %ret
-loop2:
- %iv2 = phi i64 [ %iv2.next, %latch2 ], [ 0, %preheader ]
+loop:
+ %iv2 = phi i64 [ %iv2.next, %latch ], [ 0, %preheader ]
%elem.ptr2 = getelementptr inbounds nuw i8, ptr %base, i64 %iv2
%elem2 = load i8, ptr %elem.ptr2, align 1
%is.target2 = icmp eq i8 %elem2, 0
- br i1 %is.target2, label %ret2, label %latch2
+ br i1 %is.target2, label %ret, label %latch
-latch2:
+latch:
%iv2.next = add nuw nsw i64 %iv2, 1
%loop.cond2 = icmp ult i64 %iv2, %exit.umin
- br i1 %loop.cond2, label %loop2, label %ret2
+ br i1 %loop.cond2, label %loop, label %ret
-ret2:
+ret:
ret void
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/209094
More information about the llvm-commits
mailing list