summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/ia64/dv-imply.s
blob: 525617804381a2152d249ca10564a3383fb1c576 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//	
// 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: