Skip to content

Commit 3e84fc8

Browse files
committed
[LV] Harden the test of the minmax with index pattern. (NFC)
- Add test config: -force-vector-width=4 -force-vector-interleave=1 - New test case: The test case both returns the minimum value and the index. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D143905
1 parent df016a9 commit 3e84fc8

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

llvm/test/Transforms/LoopVectorize/select-min-index.ll

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; RUN: opt -passes=loop-vectorize -force-vector-width=4 -force-vector-interleave=1 -S %s | FileCheck %s
12
; RUN: opt -passes=loop-vectorize -force-vector-width=4 -force-vector-interleave=2 -S %s | FileCheck %s
23
; RUN: opt -passes=loop-vectorize -force-vector-width=1 -force-vector-interleave=2 -S %s | FileCheck %s
34

@@ -28,6 +29,33 @@ exit:
2829
ret i64 %res
2930
}
3031

32+
define i64 @test_vectorize_select_umin_idx_all_exit_inst(ptr %src, ptr %umin) {
33+
; CHECK-LABEL: @test_vectorize_select_umin_idx_all_exit_inst(
34+
; CHECK-NOT: vector.body:
35+
;
36+
entry:
37+
br label %loop
38+
39+
loop:
40+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
41+
%min.idx = phi i64 [ 0, %entry ], [ %min.idx.next, %loop ]
42+
%min.val = phi i64 [ 0, %entry ], [ %min.val.next, %loop ]
43+
%gep = getelementptr i64, ptr %src, i64 %iv
44+
%l = load i64, ptr %gep
45+
%cmp = icmp ugt i64 %min.val, %l
46+
%min.val.next = tail call i64 @llvm.umin.i64(i64 %min.val, i64 %l)
47+
%min.idx.next = select i1 %cmp, i64 %iv, i64 %min.idx
48+
%iv.next = add nuw nsw i64 %iv, 1
49+
%exitcond.not = icmp eq i64 %iv.next, 0
50+
br i1 %exitcond.not, label %exit, label %loop
51+
52+
exit:
53+
%res = phi i64 [ %min.idx.next, %loop ]
54+
%res.umin = phi i64 [ %min.val.next, %loop ]
55+
store i64 %res.umin, ptr %umin
56+
ret i64 %res
57+
}
58+
3159
define i64 @test_vectorize_select_umin_idx_min_ops_switched(ptr %src) {
3260
; CHECK-LABEL: @test_vectorize_select_umin_idx_min_ops_switched(
3361
; CHECK-NOT: vector.body:

0 commit comments

Comments
 (0)