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