|
1 | 1 | # RUN: llc -mtriple=hexagon -run-pass pipeliner -debug-only=pipeliner %s -o /dev/null 2>&1 -pipeliner-experimental-cg=true | FileCheck %s
|
2 | 2 | # REQUIRES: asserts
|
3 | 3 |
|
4 |
| -# Test that it correctly recognizes that there is no loop carried dependence |
| 4 | +# Test that the loop carried dependence check correctly identifies dependences |
5 | 5 | # when the loop variable decreases and the array index offset is negative.
|
6 | 6 |
|
| 7 | +# No dependence from the store to the load. |
7 | 8 | # CHECK: Overlap check:
|
8 | 9 | # CHECK-NEXT: BaseMI: S2_storeri_io %{{[0-9]+}}:intregs, 0, %{{[0-9]+}}:intregs :: (store (s32) into %ir.lsr.iv1)
|
9 | 10 | # CHECK-NEXT: Base + 0 + I * -4, Len: 4
|
10 | 11 | # CHECK-NEXT: OtherMI: %{{[0-9]+}}:intregs = L2_loadri_io %{{[0-9]+}}:intregs, -8 :: (load (s32) from %ir.cgep)
|
11 | 12 | # CHECK-NEXT: Base + -8 + I * -4, Len: 4
|
12 | 13 | # CHECK-NEXT: Result: No overlap
|
13 | 14 |
|
| 15 | +# TODO: There is a loop carried dependence from the load to the store but it |
| 16 | +# is not recognised. addLoopCarriedDependences() should be modified to |
| 17 | +# recognise the dependence and enable the following checks. |
| 18 | +# CHECK-AFTER-FIX: Overlap check: |
| 19 | +# CHECK-AFTER-FIX-NEXT: BaseMI: %{{[0-9]+}}:intregs = L2_loadri_io %{{[0-9]+}}:intregs, -8 :: (load (s32) from %ir.cgep) |
| 20 | +# CHECK-AFTER-FIX-NEXT: Base + -8 + I * -4, Len: 4 |
| 21 | +# CHECK-AFTER-FIX-NEXT: OtherMI: S2_storeri_io %{{[0-9]+}}:intregs, 0, %{{[0-9]+}}:intregs :: (store (s32) into %ir.lsr.iv1) |
| 22 | +# CHECK-AFTER-FIX-NEXT: Base + 0 + I * -4, Len: 4 |
| 23 | +# CHECK-AFTER-FIX-NEXT: Result: Overlap! |
| 24 | + |
14 | 25 | --- |
|
15 | 26 |
|
16 | 27 | define void @test() {
|
|
0 commit comments