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. 21 (p3) cmp.eq.unc p1, p2 = r1, r2;; // p1,p2 imply p3 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 29 cmp.eq.or p3, p4 = r5, r6;; // doesn't affect implies rel 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: 45