Skip to content

Commit 3b219cf

Browse files
committed
[LV] Add register pressure test for #164124.
Add extra test for #164124
1 parent 0902a6b commit 3b219cf

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,3 +248,30 @@ exit: ; preds = %for.body
248248
%result = add nsw i32 %result0, %result1
249249
ret i32 %result
250250
}
251+
252+
define i64 @loop_reduction_and_store_last_element(ptr %src, ptr writeonly %dst) {
253+
; CHECK-LABEL: LV: Checking a loop in 'loop_reduction_and_store_last_element'
254+
; CHECK: LV(REG): VF = 16
255+
; CHECK-NEXT: LV(REG): Found max usage: 2 item
256+
; CHECK-NEXT: LV(REG): RegisterClass: Generic::ScalarRC, 2 registers
257+
; CHECK-NEXT: LV(REG): RegisterClass: Generic::VectorRC, 16 registers
258+
; CHECK-NEXT: LV(REG): Found invariant usage: 1 item
259+
entry:
260+
br label %loop
261+
262+
loop:
263+
%iv = phi i32 [ 1, %entry ], [ %iv.next, %loop ]
264+
%red = phi i64 [ 0, %entry ], [ %red.next, %loop ]
265+
%ptr = phi ptr [ %src, %entry ], [ %ptr.next, %loop ]
266+
%iv.next = add nuw i32 %iv, 1
267+
%ptr.next = getelementptr i8, ptr %ptr, i64 1
268+
store ptr %ptr, ptr %dst, align 8
269+
%val = load i8, ptr %ptr, align 1
270+
%val.ext = zext i8 %val to i64
271+
%red.next = or i64 %red, %val.ext
272+
%ec = icmp eq i32 %iv.next, 1000
273+
br i1 %ec, label %exit, label %loop
274+
275+
exit:
276+
ret i64 %red.next
277+
}

0 commit comments

Comments
 (0)