Home | History | Annotate | Download | only in ia64
      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