Skip to content

Commit 88e72c4

Browse files
committed
[LAA] Add test where GEPs may wrap.
1 parent 620a515 commit 88e72c4

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt -passes='print<access-info>' -disable-output %s 2>&1 | FileCheck %s
3+
4+
target datalayout = "p:16:16"
5+
6+
define void @geps_may_wrap(ptr %a, ptr %b, i64 %N) {
7+
; CHECK-LABEL: 'geps_may_wrap'
8+
; CHECK-NEXT: loop:
9+
; CHECK-NEXT: Memory dependences are safe with run-time checks
10+
; CHECK-NEXT: Dependences:
11+
; CHECK-NEXT: Run-time memory checks:
12+
; CHECK-NEXT: Check 0:
13+
; CHECK-NEXT: Comparing group ([[GRP1:0x[0-9a-f]+]]):
14+
; CHECK-NEXT: %gep.iv = getelementptr i32, ptr %a, i64 %iv
15+
; CHECK-NEXT: Against group ([[GRP2:0x[0-9a-f]+]]):
16+
; CHECK-NEXT: ptr %b
17+
; CHECK-NEXT: Grouped accesses:
18+
; CHECK-NEXT: Group [[GRP1]]:
19+
; CHECK-NEXT: (Low: %a High: (16 + (12 * (trunc i128 ((zext i64 %N to i128) /u 3) to i16)) + %a))
20+
; CHECK-NEXT: Member: {%a,+,12}<%loop>
21+
; CHECK-NEXT: Group [[GRP2]]:
22+
; CHECK-NEXT: (Low: %b High: (4 + %b))
23+
; CHECK-NEXT: Member: %b
24+
; CHECK-EMPTY:
25+
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
26+
; CHECK-NEXT: SCEV assumptions:
27+
; CHECK-NEXT: {0,+,3}<%loop> Added Flags: <nusw>
28+
; CHECK-EMPTY:
29+
; CHECK-NEXT: Expressions re-written:
30+
;
31+
entry:
32+
br label %loop
33+
34+
loop:
35+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
36+
%gep.iv = getelementptr i32, ptr %a, i64 %iv
37+
store i32 0, ptr %gep.iv, align 1
38+
store i32 0, ptr %b, align 1
39+
%iv.next = add i64 %iv, 3
40+
%.not = icmp ult i64 %N, %iv
41+
br i1 %.not, label %exit, label %loop
42+
43+
exit:
44+
ret void
45+
}

0 commit comments

Comments
 (0)