blob: 525617804381a2152d249ca10564a3383fb1c576 [file] [log] [blame]
//
// 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: