You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pre-commit tests exercising different types of source/sink in
depend_diff_types.ll, in preparation to weaken the HasSameSize check in
LoopAccessAnalysis.
; CHECK-NEXT: Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
275
+
; CHECK-NEXT: Unknown data dependence.
276
+
; CHECK-NEXT: Dependences:
277
+
; CHECK-NEXT: Unknown:
278
+
; CHECK-NEXT: store i16 0, ptr %gep.iv, align 2 ->
279
+
; CHECK-NEXT: store i8 1, ptr %gep.10.iv, align 1
280
+
; CHECK-EMPTY:
281
+
; CHECK-NEXT: Run-time memory checks:
282
+
; CHECK-NEXT: Grouped accesses:
283
+
; CHECK-EMPTY:
284
+
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
285
+
; CHECK-NEXT: SCEV assumptions:
286
+
; CHECK-EMPTY:
287
+
; CHECK-NEXT: Expressions re-written:
288
+
;
289
+
entry:
290
+
%gep.10 = getelementptrnuwi8, ptr%dst, i6410
291
+
brlabel%loop
292
+
293
+
loop:
294
+
%iv = phii64 [ 0, %entry ], [ %iv.next, %loop ]
295
+
%gep.iv = getelementptri8, ptr%dst, i64%iv
296
+
storei160, ptr%gep.iv
297
+
%gep.10.iv = getelementptri8, ptr%gep.10, i64%iv
298
+
storei81, ptr%gep.10.iv
299
+
%iv.next = addi64%iv, 8
300
+
%ec = icmpeqi64%iv.next, 64
301
+
bri1%ec, label%exit, label%loop
302
+
303
+
exit:
304
+
retvoid
305
+
}
306
+
307
+
; Variant of the above, where the source size forbids strided access
308
+
; independence.
309
+
; TODO: Relax the HasSameSize check; this test should report a backward
; CHECK-NEXT: Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
315
+
; CHECK-NEXT: Unknown data dependence.
316
+
; CHECK-NEXT: Dependences:
317
+
; CHECK-NEXT: Unknown:
318
+
; CHECK-NEXT: store i64 0, ptr %gep.iv, align 4 ->
319
+
; CHECK-NEXT: store i8 1, ptr %gep.10.iv, align 1
320
+
; CHECK-EMPTY:
321
+
; CHECK-NEXT: Run-time memory checks:
322
+
; CHECK-NEXT: Grouped accesses:
323
+
; CHECK-EMPTY:
324
+
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
325
+
; CHECK-NEXT: SCEV assumptions:
326
+
; CHECK-EMPTY:
327
+
; CHECK-NEXT: Expressions re-written:
328
+
;
329
+
entry:
330
+
%gep.10 = getelementptrnuwi8, ptr%dst, i6410
331
+
brlabel%loop
332
+
333
+
loop:
334
+
%iv = phii64 [ 0, %entry ], [ %iv.next, %loop ]
335
+
%gep.iv = getelementptri8, ptr%dst, i64%iv
336
+
storei640, ptr%gep.iv
337
+
%gep.10.iv = getelementptri8, ptr%gep.10, i64%iv
338
+
storei81, ptr%gep.10.iv
339
+
%iv.next = addi64%iv, 8
340
+
%ec = icmpeqi64%iv.next, 64
341
+
bri1%ec, label%exit, label%loop
342
+
343
+
exit:
344
+
retvoid
345
+
}
346
+
347
+
; Source type-size differs from that of the sink, but when
348
+
; determining backward dependence, only the source size
349
+
; is relevant.
350
+
; TODO: Relax the HasSameSize check; this test should report
; CHECK-NEXT: Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
356
+
; CHECK-NEXT: Unknown data dependence.
357
+
; CHECK-NEXT: Dependences:
358
+
; CHECK-NEXT: Unknown:
359
+
; CHECK-NEXT: store i16 0, ptr %gep.iv, align 2 ->
360
+
; CHECK-NEXT: store i32 1, ptr %gep.10.iv, align 4
361
+
; CHECK-EMPTY:
362
+
; CHECK-NEXT: Run-time memory checks:
363
+
; CHECK-NEXT: Grouped accesses:
364
+
; CHECK-EMPTY:
365
+
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
366
+
; CHECK-NEXT: SCEV assumptions:
367
+
; CHECK-EMPTY:
368
+
; CHECK-NEXT: Expressions re-written:
369
+
;
370
+
entry:
371
+
%gep.10 = getelementptrnuwi8, ptr%dst, i6410
372
+
brlabel%loop
373
+
374
+
loop:
375
+
%iv = phii64 [ 0, %entry ], [ %iv.next, %loop ]
376
+
%gep.iv = getelementptri8, ptr%dst, i64%iv
377
+
storei160, ptr%gep.iv
378
+
%gep.10.iv = getelementptri8, ptr%gep.10, i64%iv
379
+
storei321, ptr%gep.10.iv
380
+
%iv.next = addi64%iv, 8
381
+
%ec = icmpeqi64%iv.next, 64
382
+
bri1%ec, label%exit, label%loop
383
+
384
+
exit:
385
+
retvoid
386
+
}
387
+
388
+
; Source type-size differs from that of the sink, and when
389
+
; determining forward dependence, the source size can
; CHECK-NEXT: Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
434
+
; CHECK-NEXT: Forward loop carried data dependence that prevents store-to-load forwarding.
; CHECK-NEXT: Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
473
+
; CHECK-NEXT: Forward loop carried data dependence that prevents store-to-load forwarding.
0 commit comments