Commit | Line | Data |
---|---|---|
800eeca4 JW |
1 | // |
2 | // Test various implies relations | |
3 | // | |
4 | .text | |
5 | // User-supplied hint | |
6 | .pred.rel.imply p1, p2 | |
7 | (p1) mov r4 = 2 | |
8 | (p2) br.cond.sptk L | |
9 | mov r4 = 7 | |
10 | rfi | |
11 | ||
12 | // Symmetric to previous example | |
13 | .pred.rel.imply p1, p2 | |
14 | mov r4 = 2 | |
15 | (p2) br.cond.sptk L | |
16 | (p1) mov r4 = 7 | |
17 | rfi | |
18 | ||
19 | // Verify that the implies relationship caused by the unconditional compare | |
20 | // prevents RAW on r4. | |
9a8f29e3 | 21 | (p3) cmp.eq.unc p1, p2 = r1, r2;; // p1,p2 imply p3 |
800eeca4 JW |
22 | (p1) mov r4 = 2 |
23 | (p3) br.cond.sptk L | |
24 | mov r4 = 7 | |
25 | rfi | |
26 | ||
27 | // An instance of cmp.rel.or should not affect an implies relation. | |
28 | (p3) cmp.eq.unc p1, p2 = r1, r2 // p1,p2 imply p3 | |
9a8f29e3 | 29 | cmp.eq.or p3, p4 = r5, r6;; // doesn't affect implies rel |
800eeca4 JW |
30 | (p1) mov r4 = 2 |
31 | (p3) br.cond.sptk L | |
32 | mov r4 = 7 | |
33 | rfi | |
34 | ||
35 | // An instance of cmp.rel.and only affects imply targets | |
36 | .pred.rel.imply p1,p3 | |
37 | cmp.ne.and p1, p2 = r5, r6 // doesn't affect imply source | |
38 | (p1) mov r4 = 2 | |
39 | (p3) br.cond.sptk L | |
40 | mov r4 = 7 | |
41 | rfi | |
42 | ||
43 | // FIXME -- add tests for and.orcm and or.andcm | |
44 | L: |