1- ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4
2- ; RUN: opt -passes='print<access-info>' -disable-output %s 2>&1 | FileCheck %s
3- ; RUN: opt -passes='print<access-info>' -disable-output -mtriple=arm64-apple-macosx %s 2>&1 | FileCheck --check-prefixes=VW128 %s
4- ; RUN: opt -passes='print<access-info>' -disable-output -mtriple=arm64-apple-macosx -mattr=+sve %s 2>&1 | FileCheck --check-prefixes=MAXLEN %s
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 \
3+ ; RUN: | FileCheck %s --check-prefixes=COMMON,CHECK
4+ ; RUN: opt -passes='print<access-info>' -disable-output \
5+ ; RUN: -mtriple=arm64-apple-macosx %s 2>&1 \
6+ ; RUN: | FileCheck %s --check-prefixes=COMMON,VW128
7+ ; RUN: opt -passes='print<access-info>' -disable-output \
8+ ; RUN: -mtriple=arm64-apple-macosx -mattr=+sve %s 2>&1 \
9+ ; RUN: | FileCheck %s --check-prefixes=COMMON,MAXLEN
510
611; REQUIRES: aarch64-registered-target
712
@@ -10,104 +15,38 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
1015; If the dependence distance is not a constant, whether it gets identified as backwards or unknown depends on the minimum distance and the target's vector length.
1116
1217define void @backward_min_distance_8 (ptr %A , i64 %N ) {
13- ; CHECK-LABEL: 'backward_min_distance_8'
14- ; CHECK-NEXT: loop:
15- ; CHECK-NEXT: Memory dependences are safe with run-time checks
16- ; CHECK-NEXT: Dependences:
17- ; CHECK-NEXT: Run-time memory checks:
18- ; CHECK-NEXT: Check 0:
19- ; CHECK-NEXT: Comparing group ([[GRP1:0x[0-9a-f]+]]):
20- ; CHECK-NEXT: %gep.off.iv = getelementptr inbounds i8, ptr %gep.off, i64 %iv
21- ; CHECK-NEXT: Against group ([[GRP2:0x[0-9a-f]+]]):
22- ; CHECK-NEXT: %gep = getelementptr inbounds i8, ptr %A, i64 %iv
23- ; CHECK-NEXT: Grouped accesses:
24- ; CHECK-NEXT: Group [[GRP1]]:
25- ; CHECK-NEXT: (Low: {(1 + %A)<nuw>,+,1}<nuw><%outer.header> High: {(257 + %A),+,1}<nw><%outer.header>)
26- ; CHECK-NEXT: Member: {{\{\{}}(1 + %A)<nuw>,+,1}<nuw><%outer.header>,+,1}<nuw><%loop>
27- ; CHECK-NEXT: Group [[GRP2]]:
28- ; CHECK-NEXT: (Low: %A High: (256 + %A))
29- ; CHECK-NEXT: Member: {%A,+,1}<nuw><%loop>
30- ; CHECK-EMPTY:
31- ; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
32- ; CHECK-NEXT: SCEV assumptions:
33- ; CHECK-EMPTY:
34- ; CHECK-NEXT: Expressions re-written:
35- ; CHECK-NEXT: outer.header:
36- ; CHECK-NEXT: Report: loop is not the innermost loop
37- ; CHECK-NEXT: Dependences:
38- ; CHECK-NEXT: Run-time memory checks:
39- ; CHECK-NEXT: Grouped accesses:
40- ; CHECK-EMPTY:
41- ; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
42- ; CHECK-NEXT: SCEV assumptions:
43- ; CHECK-EMPTY:
44- ; CHECK-NEXT: Expressions re-written:
45- ;
46- ; VW128-LABEL: 'backward_min_distance_8'
47- ; VW128-NEXT: loop:
48- ; VW128-NEXT: Memory dependences are safe with run-time checks
49- ; VW128-NEXT: Dependences:
50- ; VW128-NEXT: Run-time memory checks:
51- ; VW128-NEXT: Check 0:
52- ; VW128-NEXT: Comparing group ([[GRP3:0x[0-9a-f]+]]):
53- ; VW128-NEXT: %gep.off.iv = getelementptr inbounds i8, ptr %gep.off, i64 %iv
54- ; VW128-NEXT: Against group ([[GRP4:0x[0-9a-f]+]]):
55- ; VW128-NEXT: %gep = getelementptr inbounds i8, ptr %A, i64 %iv
56- ; VW128-NEXT: Grouped accesses:
57- ; VW128-NEXT: Group [[GRP3]]:
58- ; VW128-NEXT: (Low: {(1 + %A)<nuw>,+,1}<nuw><%outer.header> High: {(257 + %A),+,1}<nw><%outer.header>)
59- ; VW128-NEXT: Member: {{\{\{}}(1 + %A)<nuw>,+,1}<nuw><%outer.header>,+,1}<nuw><%loop>
60- ; VW128-NEXT: Group [[GRP4]]:
61- ; VW128-NEXT: (Low: %A High: (256 + %A))
62- ; VW128-NEXT: Member: {%A,+,1}<nuw><%loop>
63- ; VW128-EMPTY:
64- ; VW128-NEXT: Non vectorizable stores to invariant address were not found in loop.
65- ; VW128-NEXT: SCEV assumptions:
66- ; VW128-EMPTY:
67- ; VW128-NEXT: Expressions re-written:
68- ; VW128-NEXT: outer.header:
69- ; VW128-NEXT: Report: loop is not the innermost loop
70- ; VW128-NEXT: Dependences:
71- ; VW128-NEXT: Run-time memory checks:
72- ; VW128-NEXT: Grouped accesses:
73- ; VW128-EMPTY:
74- ; VW128-NEXT: Non vectorizable stores to invariant address were not found in loop.
75- ; VW128-NEXT: SCEV assumptions:
76- ; VW128-EMPTY:
77- ; VW128-NEXT: Expressions re-written:
78- ;
79- ; MAXLEN-LABEL: 'backward_min_distance_8'
80- ; MAXLEN-NEXT: loop:
81- ; MAXLEN-NEXT: Memory dependences are safe with run-time checks
82- ; MAXLEN-NEXT: Dependences:
83- ; MAXLEN-NEXT: Run-time memory checks:
84- ; MAXLEN-NEXT: Check 0:
85- ; MAXLEN-NEXT: Comparing group ([[GRP5:0x[0-9a-f]+]]):
86- ; MAXLEN-NEXT: %gep.off.iv = getelementptr inbounds i8, ptr %gep.off, i64 %iv
87- ; MAXLEN-NEXT: Against group ([[GRP6:0x[0-9a-f]+]]):
88- ; MAXLEN-NEXT: %gep = getelementptr inbounds i8, ptr %A, i64 %iv
89- ; MAXLEN-NEXT: Grouped accesses:
90- ; MAXLEN-NEXT: Group [[GRP5]]:
91- ; MAXLEN-NEXT: (Low: {(1 + %A)<nuw>,+,1}<nuw><%outer.header> High: {(257 + %A),+,1}<nw><%outer.header>)
92- ; MAXLEN-NEXT: Member: {{\{\{}}(1 + %A)<nuw>,+,1}<nuw><%outer.header>,+,1}<nuw><%loop>
93- ; MAXLEN-NEXT: Group [[GRP6]]:
94- ; MAXLEN-NEXT: (Low: %A High: (256 + %A))
95- ; MAXLEN-NEXT: Member: {%A,+,1}<nuw><%loop>
96- ; MAXLEN-EMPTY:
97- ; MAXLEN-NEXT: Non vectorizable stores to invariant address were not found in loop.
98- ; MAXLEN-NEXT: SCEV assumptions:
99- ; MAXLEN-EMPTY:
100- ; MAXLEN-NEXT: Expressions re-written:
101- ; MAXLEN-NEXT: outer.header:
102- ; MAXLEN-NEXT: Report: loop is not the innermost loop
103- ; MAXLEN-NEXT: Dependences:
104- ; MAXLEN-NEXT: Run-time memory checks:
105- ; MAXLEN-NEXT: Grouped accesses:
106- ; MAXLEN-EMPTY:
107- ; MAXLEN-NEXT: Non vectorizable stores to invariant address were not found in loop.
108- ; MAXLEN-NEXT: SCEV assumptions:
109- ; MAXLEN-EMPTY:
110- ; MAXLEN-NEXT: Expressions re-written:
18+ ; COMMON-LABEL: 'backward_min_distance_8'
19+ ; COMMON-NEXT: loop:
20+ ; COMMON-NEXT: Memory dependences are safe with run-time checks
21+ ; COMMON-NEXT: Dependences:
22+ ; COMMON-NEXT: Run-time memory checks:
23+ ; COMMON-NEXT: Check 0:
24+ ; COMMON-NEXT: Comparing group ([[GRP1:0x[0-9a-f]+]]):
25+ ; COMMON-NEXT: %gep.off.iv = getelementptr inbounds i8, ptr %gep.off, i64 %iv
26+ ; COMMON-NEXT: Against group ([[GRP2:0x[0-9a-f]+]]):
27+ ; COMMON-NEXT: %gep = getelementptr inbounds i8, ptr %A, i64 %iv
28+ ; COMMON-NEXT: Grouped accesses:
29+ ; COMMON-NEXT: Group [[GRP1]]:
30+ ; COMMON-NEXT: (Low: {(1 + %A)<nuw>,+,1}<nuw><%outer.header> High: {(257 + %A),+,1}<nw><%outer.header>)
31+ ; COMMON-NEXT: Member: {{\{\{}}(1 + %A)<nuw>,+,1}<nuw><%outer.header>,+,1}<nuw><%loop>
32+ ; COMMON-NEXT: Group [[GRP2]]:
33+ ; COMMON-NEXT: (Low: %A High: (256 + %A))
34+ ; COMMON-NEXT: Member: {%A,+,1}<nuw><%loop>
35+ ; COMMON-EMPTY:
36+ ; COMMON-NEXT: Non vectorizable stores to invariant address were not found in loop.
37+ ; COMMON-NEXT: SCEV assumptions:
38+ ; COMMON-EMPTY:
39+ ; COMMON-NEXT: Expressions re-written:
40+ ; COMMON-NEXT: outer.header:
41+ ; COMMON-NEXT: Report: loop is not the innermost loop
42+ ; COMMON-NEXT: Dependences:
43+ ; COMMON-NEXT: Run-time memory checks:
44+ ; COMMON-NEXT: Grouped accesses:
45+ ; COMMON-EMPTY:
46+ ; COMMON-NEXT: Non vectorizable stores to invariant address were not found in loop.
47+ ; COMMON-NEXT: SCEV assumptions:
48+ ; COMMON-EMPTY:
49+ ; COMMON-NEXT: Expressions re-written:
11150;
11251entry:
11352 br label %outer.header
0 commit comments