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 44L: 45