// // Test various implies relations // .text // User-supplied hint .pred.rel.imply p1, p2 (p1) mov r4 = 2 (p2) br.cond.sptk L mov r4 = 7 rfi // Symmetric to previous example .pred.rel.imply p1, p2 mov r4 = 2 (p2) br.cond.sptk L (p1) mov r4 = 7 rfi // Verify that the implies relationship caused by the unconditional compare // prevents RAW on r4. (p3) cmp.eq.unc p1, p2 = r1, r2;; // p1,p2 imply p3 (p1) mov r4 = 2 (p3) br.cond.sptk L mov r4 = 7 rfi // An instance of cmp.rel.or should not affect an implies relation. (p3) cmp.eq.unc p1, p2 = r1, r2 // p1,p2 imply p3 cmp.eq.or p3, p4 = r5, r6;; // doesn't affect implies rel (p1) mov r4 = 2 (p3) br.cond.sptk L mov r4 = 7 rfi // An instance of cmp.rel.and only affects imply targets .pred.rel.imply p1,p3 cmp.ne.and p1, p2 = r5, r6 // doesn't affect imply source (p1) mov r4 = 2 (p3) br.cond.sptk L mov r4 = 7 rfi // FIXME -- add tests for and.orcm and or.andcm L: