@@ -65,13 +65,38 @@ exit:
65
65
define void @dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step5 (ptr %a , ptr %b , i64 %offset , i64 %n ) {
66
66
; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step5'
67
67
; CHECK-NEXT: loop:
68
- ; CHECK-NEXT: Report: cannot check memory dependencies at runtime
68
+ ; CHECK-NEXT: Memory dependences are safe with run-time checks
69
69
; CHECK-NEXT: Dependences:
70
70
; CHECK-NEXT: Run-time memory checks:
71
+ ; CHECK-NEXT: Check 0:
72
+ ; CHECK-NEXT: Comparing group ([[GRP4:0x[0-9a-f]+]]):
73
+ ; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
74
+ ; CHECK-NEXT: Against group ([[GRP5:0x[0-9a-f]+]]):
75
+ ; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
76
+ ; CHECK-NEXT: Check 1:
77
+ ; CHECK-NEXT: Comparing group ([[GRP4]]):
78
+ ; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
79
+ ; CHECK-NEXT: Against group ([[GRP6:0x[0-9a-f]+]]):
80
+ ; CHECK-NEXT: %gep.b = getelementptr i8, ptr %b, i64 %iv2
81
+ ; CHECK-NEXT: Check 2:
82
+ ; CHECK-NEXT: Comparing group ([[GRP5]]):
83
+ ; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
84
+ ; CHECK-NEXT: Against group ([[GRP6]]):
85
+ ; CHECK-NEXT: %gep.b = getelementptr i8, ptr %b, i64 %iv2
71
86
; CHECK-NEXT: Grouped accesses:
87
+ ; CHECK-NEXT: Group [[GRP4]]:
88
+ ; CHECK-NEXT: (Low: %a High: ((4 * %n) + %a))
89
+ ; CHECK-NEXT: Member: {%a,+,4}<nuw><%loop>
90
+ ; CHECK-NEXT: Group [[GRP5]]:
91
+ ; CHECK-NEXT: (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))
92
+ ; CHECK-NEXT: Member: {((4 * %offset) + %a),+,4}<%loop>
93
+ ; CHECK-NEXT: Group [[GRP6]]:
94
+ ; CHECK-NEXT: (Low: %b High: (-1 + (5 * %n) + %b))
95
+ ; CHECK-NEXT: Member: {%b,+,5}<%loop>
72
96
; CHECK-EMPTY:
73
97
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
74
98
; CHECK-NEXT: SCEV assumptions:
99
+ ; CHECK-NEXT: {%b,+,5}<%loop> Added Flags: <nusw>
75
100
; CHECK-EMPTY:
76
101
; CHECK-NEXT: Expressions re-written:
77
102
;
@@ -102,10 +127,34 @@ exit:
102
127
define void @dependency_check_and_runtime_checks_needed_gepb_is_inbounds_iv2_step_not_constant (ptr %a , ptr %b , i64 %offset , i64 %n , i64 %s ) {
103
128
; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_gepb_is_inbounds_iv2_step_not_constant'
104
129
; CHECK-NEXT: loop:
105
- ; CHECK-NEXT: Report: cannot check memory dependencies at runtime
130
+ ; CHECK-NEXT: Memory dependences are safe with run-time checks
106
131
; CHECK-NEXT: Dependences:
107
132
; CHECK-NEXT: Run-time memory checks:
133
+ ; CHECK-NEXT: Check 0:
134
+ ; CHECK-NEXT: Comparing group ([[GRP7:0x[0-9a-f]+]]):
135
+ ; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
136
+ ; CHECK-NEXT: Against group ([[GRP8:0x[0-9a-f]+]]):
137
+ ; CHECK-NEXT: %gep.b = getelementptr inbounds i8, ptr %b, i64 %iv2
138
+ ; CHECK-NEXT: Check 1:
139
+ ; CHECK-NEXT: Comparing group ([[GRP7]]):
140
+ ; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
141
+ ; CHECK-NEXT: Against group ([[GRP9:0x[0-9a-f]+]]):
142
+ ; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
143
+ ; CHECK-NEXT: Check 2:
144
+ ; CHECK-NEXT: Comparing group ([[GRP8]]):
145
+ ; CHECK-NEXT: %gep.b = getelementptr inbounds i8, ptr %b, i64 %iv2
146
+ ; CHECK-NEXT: Against group ([[GRP9]]):
147
+ ; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
108
148
; CHECK-NEXT: Grouped accesses:
149
+ ; CHECK-NEXT: Group [[GRP7]]:
150
+ ; CHECK-NEXT: (Low: %a High: ((4 * %n) + %a))
151
+ ; CHECK-NEXT: Member: {%a,+,4}<nuw><%loop>
152
+ ; CHECK-NEXT: Group [[GRP8]]:
153
+ ; CHECK-NEXT: (Low: %b High: (3 + %n + %b))
154
+ ; CHECK-NEXT: Member: {%b,+,1}<%loop>
155
+ ; CHECK-NEXT: Group [[GRP9]]:
156
+ ; CHECK-NEXT: (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))
157
+ ; CHECK-NEXT: Member: {((4 * %offset) + %a),+,4}<%loop>
109
158
; CHECK-EMPTY:
110
159
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
111
160
; CHECK-NEXT: SCEV assumptions:
@@ -144,10 +193,34 @@ exit:
144
193
define void @dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step_not_constant (ptr %a , ptr %b , i64 %offset , i64 %n , i64 %s ) {
145
194
; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step_not_constant'
146
195
; CHECK-NEXT: loop:
147
- ; CHECK-NEXT: Report: cannot check memory dependencies at runtime
196
+ ; CHECK-NEXT: Memory dependences are safe with run-time checks
148
197
; CHECK-NEXT: Dependences:
149
198
; CHECK-NEXT: Run-time memory checks:
199
+ ; CHECK-NEXT: Check 0:
200
+ ; CHECK-NEXT: Comparing group ([[GRP10:0x[0-9a-f]+]]):
201
+ ; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
202
+ ; CHECK-NEXT: Against group ([[GRP11:0x[0-9a-f]+]]):
203
+ ; CHECK-NEXT: %gep.b = getelementptr inbounds i8, ptr %b, i64 %iv2
204
+ ; CHECK-NEXT: Check 1:
205
+ ; CHECK-NEXT: Comparing group ([[GRP10]]):
206
+ ; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
207
+ ; CHECK-NEXT: Against group ([[GRP12:0x[0-9a-f]+]]):
208
+ ; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
209
+ ; CHECK-NEXT: Check 2:
210
+ ; CHECK-NEXT: Comparing group ([[GRP11]]):
211
+ ; CHECK-NEXT: %gep.b = getelementptr inbounds i8, ptr %b, i64 %iv2
212
+ ; CHECK-NEXT: Against group ([[GRP12]]):
213
+ ; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
150
214
; CHECK-NEXT: Grouped accesses:
215
+ ; CHECK-NEXT: Group [[GRP10]]:
216
+ ; CHECK-NEXT: (Low: %a High: ((4 * %n) + %a))
217
+ ; CHECK-NEXT: Member: {%a,+,4}<nuw><%loop>
218
+ ; CHECK-NEXT: Group [[GRP11]]:
219
+ ; CHECK-NEXT: (Low: %b High: (3 + %n + %b))
220
+ ; CHECK-NEXT: Member: {%b,+,1}<%loop>
221
+ ; CHECK-NEXT: Group [[GRP12]]:
222
+ ; CHECK-NEXT: (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))
223
+ ; CHECK-NEXT: Member: {((4 * %offset) + %a),+,4}<%loop>
151
224
; CHECK-EMPTY:
152
225
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
153
226
; CHECK-NEXT: SCEV assumptions:
@@ -189,28 +262,28 @@ define void @dependency_check_and_runtime_checks_needed_gepb_may_wrap(ptr %a, pt
189
262
; CHECK-NEXT: Dependences:
190
263
; CHECK-NEXT: Run-time memory checks:
191
264
; CHECK-NEXT: Check 0:
192
- ; CHECK-NEXT: Comparing group ([[GRP4 :0x[0-9a-f]+]]):
265
+ ; CHECK-NEXT: Comparing group ([[GRP13 :0x[0-9a-f]+]]):
193
266
; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
194
- ; CHECK-NEXT: Against group ([[GRP5 :0x[0-9a-f]+]]):
267
+ ; CHECK-NEXT: Against group ([[GRP14 :0x[0-9a-f]+]]):
195
268
; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
196
269
; CHECK-NEXT: Check 1:
197
- ; CHECK-NEXT: Comparing group ([[GRP4 ]]):
270
+ ; CHECK-NEXT: Comparing group ([[GRP13 ]]):
198
271
; CHECK-NEXT: %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv
199
- ; CHECK-NEXT: Against group ([[GRP6 :0x[0-9a-f]+]]):
272
+ ; CHECK-NEXT: Against group ([[GRP15 :0x[0-9a-f]+]]):
200
273
; CHECK-NEXT: %gep.b = getelementptr float, ptr %b, i64 %iv2
201
274
; CHECK-NEXT: Check 2:
202
- ; CHECK-NEXT: Comparing group ([[GRP5 ]]):
275
+ ; CHECK-NEXT: Comparing group ([[GRP14 ]]):
203
276
; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
204
- ; CHECK-NEXT: Against group ([[GRP6 ]]):
277
+ ; CHECK-NEXT: Against group ([[GRP15 ]]):
205
278
; CHECK-NEXT: %gep.b = getelementptr float, ptr %b, i64 %iv2
206
279
; CHECK-NEXT: Grouped accesses:
207
- ; CHECK-NEXT: Group [[GRP4 ]]:
280
+ ; CHECK-NEXT: Group [[GRP13 ]]:
208
281
; CHECK-NEXT: (Low: %a High: ((4 * %n) + %a))
209
282
; CHECK-NEXT: Member: {%a,+,4}<nuw><%loop>
210
- ; CHECK-NEXT: Group [[GRP5 ]]:
283
+ ; CHECK-NEXT: Group [[GRP14 ]]:
211
284
; CHECK-NEXT: (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))
212
285
; CHECK-NEXT: Member: {((4 * %offset) + %a),+,4}<%loop>
213
- ; CHECK-NEXT: Group [[GRP6 ]]:
286
+ ; CHECK-NEXT: Group [[GRP15 ]]:
214
287
; CHECK-NEXT: (Low: %b High: (-4 + (8 * %n) + %b))
215
288
; CHECK-NEXT: Member: {%b,+,8}<%loop>
216
289
; CHECK-EMPTY:
0 commit comments