@@ -7,26 +7,19 @@ declare void @llvm.assume(i1)
7
7
8
8
declare void @use (ptr noundef)
9
9
10
- ; TODO: %offset is known positive via assume, so we should be able to detect the
10
+ ; %offset is known positive via assume, so we should be able to detect the
11
11
; forward dependence.
12
12
define void @offset_i8_known_positive_via_assume_forward_dep_1 (ptr %A , i64 %offset , i64 %N ) {
13
13
; CHECK-LABEL: 'offset_i8_known_positive_via_assume_forward_dep_1'
14
14
; CHECK-NEXT: loop:
15
- ; CHECK-NEXT: Memory dependences are safe with run-time checks
15
+ ; CHECK-NEXT: Memory dependences are safe
16
16
; CHECK-NEXT: Dependences:
17
+ ; CHECK-NEXT: Forward:
18
+ ; CHECK-NEXT: %l = load i8, ptr %gep.off, align 4 ->
19
+ ; CHECK-NEXT: store i8 %add, ptr %gep, align 4
20
+ ; CHECK-EMPTY:
17
21
; 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 = getelementptr inbounds i8, ptr %A, i64 %iv
21
- ; CHECK-NEXT: Against group ([[GRP2:0x[0-9a-f]+]]):
22
- ; CHECK-NEXT: %gep.off = getelementptr inbounds i8, ptr %off, i64 %iv
23
22
; CHECK-NEXT: Grouped accesses:
24
- ; CHECK-NEXT: Group [[GRP1]]:
25
- ; CHECK-NEXT: (Low: %A High: (%N + %A))
26
- ; CHECK-NEXT: Member: {%A,+,1}<nuw><%loop>
27
- ; CHECK-NEXT: Group [[GRP2]]:
28
- ; CHECK-NEXT: (Low: (%offset + %A) High: (%offset + %N + %A))
29
- ; CHECK-NEXT: Member: {(%offset + %A),+,1}<nw><%loop>
30
23
; CHECK-EMPTY:
31
24
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
32
25
; CHECK-NEXT: SCEV assumptions:
@@ -62,15 +55,15 @@ define void @offset_i32_known_positive_via_assume_forward_dep_1(ptr %A, i64 %off
62
55
; CHECK-NEXT: Dependences:
63
56
; CHECK-NEXT: Run-time memory checks:
64
57
; CHECK-NEXT: Check 0:
65
- ; CHECK-NEXT: Comparing group ([[GRP3 :0x[0-9a-f]+]]):
58
+ ; CHECK-NEXT: Comparing group ([[GRP1 :0x[0-9a-f]+]]):
66
59
; CHECK-NEXT: %gep = getelementptr inbounds i32, ptr %A, i64 %iv
67
- ; CHECK-NEXT: Against group ([[GRP4 :0x[0-9a-f]+]]):
60
+ ; CHECK-NEXT: Against group ([[GRP2 :0x[0-9a-f]+]]):
68
61
; CHECK-NEXT: %gep.off = getelementptr inbounds i32, ptr %off, i64 %iv
69
62
; CHECK-NEXT: Grouped accesses:
70
- ; CHECK-NEXT: Group [[GRP3 ]]:
63
+ ; CHECK-NEXT: Group [[GRP1 ]]:
71
64
; CHECK-NEXT: (Low: %A High: (-3 + (4 * %N) + %A))
72
65
; CHECK-NEXT: Member: {%A,+,4}<nuw><%loop>
73
- ; CHECK-NEXT: Group [[GRP4 ]]:
66
+ ; CHECK-NEXT: Group [[GRP2 ]]:
74
67
; CHECK-NEXT: (Low: ((4 * %offset)<nsw> + %A) High: (-3 + (4 * %offset)<nsw> + (4 * %N) + %A))
75
68
; CHECK-NEXT: Member: {((4 * %offset)<nsw> + %A),+,4}<nw><%loop>
76
69
; CHECK-EMPTY:
@@ -103,26 +96,19 @@ exit:
103
96
ret void
104
97
}
105
98
106
- ; TODO: %offset is known positive via assume, so we should be able to detect the
99
+ ; %offset is known positive via assume, so we should be able to detect the
107
100
; forward dependence.
108
101
define void @offset_known_positive_via_assume_forward_dep_2 (ptr %A , i64 %offset , i64 %N ) {
109
102
; CHECK-LABEL: 'offset_known_positive_via_assume_forward_dep_2'
110
103
; CHECK-NEXT: loop:
111
- ; CHECK-NEXT: Memory dependences are safe with run-time checks
104
+ ; CHECK-NEXT: Memory dependences are safe
112
105
; CHECK-NEXT: Dependences:
106
+ ; CHECK-NEXT: Forward:
107
+ ; CHECK-NEXT: %l = load i32, ptr %gep.off, align 4 ->
108
+ ; CHECK-NEXT: store i32 %add, ptr %gep, align 4
109
+ ; CHECK-EMPTY:
113
110
; CHECK-NEXT: Run-time memory checks:
114
- ; CHECK-NEXT: Check 0:
115
- ; CHECK-NEXT: Comparing group ([[GRP5:0x[0-9a-f]+]]):
116
- ; CHECK-NEXT: %gep = getelementptr inbounds i32, ptr %A, i64 %iv
117
- ; CHECK-NEXT: Against group ([[GRP6:0x[0-9a-f]+]]):
118
- ; CHECK-NEXT: %gep.off = getelementptr inbounds i32, ptr %off, i64 %iv
119
111
; CHECK-NEXT: Grouped accesses:
120
- ; CHECK-NEXT: Group [[GRP5]]:
121
- ; CHECK-NEXT: (Low: %A High: ((4 * %N) + %A))
122
- ; CHECK-NEXT: Member: {%A,+,4}<nuw><%loop>
123
- ; CHECK-NEXT: Group [[GRP6]]:
124
- ; CHECK-NEXT: (Low: ((4 * %offset)<nsw> + %A) High: ((4 * %offset)<nsw> + (4 * %N) + %A))
125
- ; CHECK-NEXT: Member: {((4 * %offset)<nsw> + %A),+,4}<nw><%loop>
126
112
; CHECK-EMPTY:
127
113
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
128
114
; CHECK-NEXT: SCEV assumptions:
@@ -160,15 +146,15 @@ define void @offset_may_be_negative_via_assume_unknown_dep(ptr %A, i64 %offset,
160
146
; CHECK-NEXT: Dependences:
161
147
; CHECK-NEXT: Run-time memory checks:
162
148
; CHECK-NEXT: Check 0:
163
- ; CHECK-NEXT: Comparing group ([[GRP7 :0x[0-9a-f]+]]):
149
+ ; CHECK-NEXT: Comparing group ([[GRP3 :0x[0-9a-f]+]]):
164
150
; CHECK-NEXT: %gep.mul.2 = getelementptr inbounds i32, ptr %A, i64 %iv
165
- ; CHECK-NEXT: Against group ([[GRP8 :0x[0-9a-f]+]]):
151
+ ; CHECK-NEXT: Against group ([[GRP4 :0x[0-9a-f]+]]):
166
152
; CHECK-NEXT: %gep = getelementptr inbounds i32, ptr %off, i64 %iv
167
153
; CHECK-NEXT: Grouped accesses:
168
- ; CHECK-NEXT: Group [[GRP7 ]]:
154
+ ; CHECK-NEXT: Group [[GRP3 ]]:
169
155
; CHECK-NEXT: (Low: %A High: ((4 * %N) + %A))
170
156
; CHECK-NEXT: Member: {%A,+,4}<nuw><%loop>
171
- ; CHECK-NEXT: Group [[GRP8 ]]:
157
+ ; CHECK-NEXT: Group [[GRP4 ]]:
172
158
; CHECK-NEXT: (Low: ((4 * %offset)<nsw> + %A) High: ((4 * %offset)<nsw> + (4 * %N) + %A))
173
159
; CHECK-NEXT: Member: {((4 * %offset)<nsw> + %A),+,4}<nw><%loop>
174
160
; CHECK-EMPTY:
@@ -207,15 +193,15 @@ define void @offset_no_assumes(ptr %A, i64 %offset, i64 %N) {
207
193
; CHECK-NEXT: Dependences:
208
194
; CHECK-NEXT: Run-time memory checks:
209
195
; CHECK-NEXT: Check 0:
210
- ; CHECK-NEXT: Comparing group ([[GRP9 :0x[0-9a-f]+]]):
196
+ ; CHECK-NEXT: Comparing group ([[GRP5 :0x[0-9a-f]+]]):
211
197
; CHECK-NEXT: %gep = getelementptr inbounds i32, ptr %A, i64 %iv
212
- ; CHECK-NEXT: Against group ([[GRP10 :0x[0-9a-f]+]]):
198
+ ; CHECK-NEXT: Against group ([[GRP6 :0x[0-9a-f]+]]):
213
199
; CHECK-NEXT: %gep.off = getelementptr inbounds i32, ptr %off, i64 %iv
214
200
; CHECK-NEXT: Grouped accesses:
215
- ; CHECK-NEXT: Group [[GRP9 ]]:
201
+ ; CHECK-NEXT: Group [[GRP5 ]]:
216
202
; CHECK-NEXT: (Low: %A High: ((4 * %N) + %A))
217
203
; CHECK-NEXT: Member: {%A,+,4}<nuw><%loop>
218
- ; CHECK-NEXT: Group [[GRP10 ]]:
204
+ ; CHECK-NEXT: Group [[GRP6 ]]:
219
205
; CHECK-NEXT: (Low: ((4 * %offset)<nsw> + %A) High: ((4 * %offset)<nsw> + (4 * %N) + %A))
220
206
; CHECK-NEXT: Member: {((4 * %offset)<nsw> + %A),+,4}<nw><%loop>
221
207
; CHECK-EMPTY:
0 commit comments