@@ -65,13 +65,38 @@ exit:
6565define void @dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step5 (ptr %a , ptr %b , i64 %offset , i64 %n ) {
6666; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step5'
6767; CHECK-NEXT: loop:
68- ; CHECK-NEXT: Report: cannot check memory dependencies at runtime
68+ ; CHECK-NEXT: Memory dependences are safe with run-time checks
6969; CHECK-NEXT: Dependences:
7070; 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
7186; 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>
7296; CHECK-EMPTY:
7397; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
7498; CHECK-NEXT: SCEV assumptions:
99+ ; CHECK-NEXT: {%b,+,5}<%loop> Added Flags: <nusw>
75100; CHECK-EMPTY:
76101; CHECK-NEXT: Expressions re-written:
77102;
@@ -102,10 +127,34 @@ exit:
102127define void @dependency_check_and_runtime_checks_needed_gepb_is_inbounds_iv2_step_not_constant (ptr %a , ptr %b , i64 %offset , i64 %n , i64 %s ) {
103128; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_gepb_is_inbounds_iv2_step_not_constant'
104129; CHECK-NEXT: loop:
105- ; CHECK-NEXT: Report: cannot check memory dependencies at runtime
130+ ; CHECK-NEXT: Memory dependences are safe with run-time checks
106131; CHECK-NEXT: Dependences:
107132; 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
108148; 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>
109158; CHECK-EMPTY:
110159; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
111160; CHECK-NEXT: SCEV assumptions:
@@ -144,10 +193,34 @@ exit:
144193define void @dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step_not_constant (ptr %a , ptr %b , i64 %offset , i64 %n , i64 %s ) {
145194; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_gepb_not_inbounds_iv2_step_not_constant'
146195; CHECK-NEXT: loop:
147- ; CHECK-NEXT: Report: cannot check memory dependencies at runtime
196+ ; CHECK-NEXT: Memory dependences are safe with run-time checks
148197; CHECK-NEXT: Dependences:
149198; 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
150214; 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>
151224; CHECK-EMPTY:
152225; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
153226; CHECK-NEXT: SCEV assumptions:
@@ -189,28 +262,28 @@ define void @dependency_check_and_runtime_checks_needed_gepb_may_wrap(ptr %a, pt
189262; CHECK-NEXT: Dependences:
190263; CHECK-NEXT: Run-time memory checks:
191264; CHECK-NEXT: Check 0:
192- ; CHECK-NEXT: Comparing group ([[GRP4 :0x[0-9a-f]+]]):
265+ ; CHECK-NEXT: Comparing group ([[GRP13 :0x[0-9a-f]+]]):
193266; 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]+]]):
195268; CHECK-NEXT: %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset
196269; CHECK-NEXT: Check 1:
197- ; CHECK-NEXT: Comparing group ([[GRP4 ]]):
270+ ; CHECK-NEXT: Comparing group ([[GRP13 ]]):
198271; 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]+]]):
200273; CHECK-NEXT: %gep.b = getelementptr float, ptr %b, i64 %iv2
201274; CHECK-NEXT: Check 2:
202- ; CHECK-NEXT: Comparing group ([[GRP5 ]]):
275+ ; CHECK-NEXT: Comparing group ([[GRP14 ]]):
203276; 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 ]]):
205278; CHECK-NEXT: %gep.b = getelementptr float, ptr %b, i64 %iv2
206279; CHECK-NEXT: Grouped accesses:
207- ; CHECK-NEXT: Group [[GRP4 ]]:
280+ ; CHECK-NEXT: Group [[GRP13 ]]:
208281; CHECK-NEXT: (Low: %a High: ((4 * %n) + %a))
209282; CHECK-NEXT: Member: {%a,+,4}<nuw><%loop>
210- ; CHECK-NEXT: Group [[GRP5 ]]:
283+ ; CHECK-NEXT: Group [[GRP14 ]]:
211284; CHECK-NEXT: (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))
212285; CHECK-NEXT: Member: {((4 * %offset) + %a),+,4}<%loop>
213- ; CHECK-NEXT: Group [[GRP6 ]]:
286+ ; CHECK-NEXT: Group [[GRP15 ]]:
214287; CHECK-NEXT: (Low: %b High: (-4 + (8 * %n) + %b))
215288; CHECK-NEXT: Member: {%b,+,8}<%loop>
216289; CHECK-EMPTY:
0 commit comments