File: MIPS.asm

package info (click to toggle)
openmpi 1.2.7~rc2-2
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 41,300 kB
  • ctags: 24,303
  • sloc: ansic: 224,835; sh: 22,627; makefile: 7,037; cpp: 6,353; asm: 3,547; lex: 528; objc: 383; perl: 348; csh: 89; f90: 49; fortran: 47; tcl: 12
file content (130 lines) | stat: -rw-r--r-- 2,200 bytes parent folder | download | duplicates (2)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
START_FILE

#include <asm.h>
#include <regdef.h>
	
	TEXT

	ALIGN(8)
LEAF(opal_atomic_mb)
	sync
	j	ra
END(opal_atomic_mb)

	
	ALIGN(8)
LEAF(opal_atomic_rmb)
	sync
	j	ra
END(opal_atomic_rmb)
	
	
LEAF(opal_atomic_wmb)
	sync
	j	ra
END(opal_atomic_wmb)


LEAF(opal_atomic_cmpset_32)
	.set noreorder        
retry1:                
	ll     $3, 0($4)         
	bne    $3, $5, done1   
	or     $2, $6, 0      
	sc     $2, 0($4)         
	bne    $2, 1, retry1
done1:                 
	.set reorder          

	xor	$3,$3,$5
	j	ra
	sltu	$2,$3,1
END(opal_atomic_cmpset_32)


LEAF(opal_atomic_cmpset_acq_32)
	.set noreorder        
retry2:                
	ll     $3, 0($4)         
	bne    $3, $5, done2   
	or     $2, $6, 0      
	sc     $2, 0($4)         
	bne    $2, 1, retry2   
done2:                 
	sync
	.set reorder          

	xor	$3,$3,$5
	j	ra
	sltu	$2,$3,1
END(opal_atomic_cmpset_acq_32)

	
LEAF(opal_atomic_cmpset_rel_32)
	.set noreorder        
	sync
retry3:                
	ll     $3, 0($4)         
	bne    $3, $5, done3   
	or     $2, $6, 0      
	sc     $2, 0($4)         
	bne    $2, 1, retry3   
done3:                 
	.set reorder          

	xor	$3,$3,$5
	j	ra
	sltu	$2,$3,1
END(opal_atomic_cmpset_rel_32)
	
	
LEAF(opal_atomic_cmpset_64)
		.set noreorder        
retry4:                
	lld    $3, 0($4)         
	bne    $3, $5, done4   
	or     $2, $6, 0      
	scd    $2, 0($4)         
	bne    $2, 1, retry4   
done4:                 
	.set reorder          

	xor	$4,$3,$5
	j	ra
	sltu	$3,$4,1
END(opal_atomic_cmpset_64)


LEAF(opal_atomic_cmpset_acq_64)
	.set noreorder        
retry5:                
	lld    $3, 0($4)         
	bne    $3, $5, done5   
	or     $2, $6, 0      
	scd    $2, 0($4)         
	bne    $2, 1, retry5   
done5:                 
	.set reorder          
	sync
	xor	$4,$3,$5
	j	ra
	sltu	$3,$4,1
END(opal_atomic_cmpset_acq_64)


LEAF(opal_atomic_cmpset_rel_64)
	.set noreorder        
	sync
retry6:                
	lld    $3, 0($4)         
	bne    $3, $5, done6   
	or     $2, $6, 0      
	scd    $2, 0($4)         
	bne    $2, 1, retry6   
done6:                 
	.set reorder          

	xor	$4,$3,$5
	j	ra
	sltu	$3,$4,1
END(opal_atomic_cmpset_rel_64)