~ubuntu-branches/debian/squeeze/ffcall/squeeze

« back to all changes in this revision

Viewing changes to ffcall/avcall/avcall-i386-macro.S

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Egger
  • Date: 2010-06-26 15:29:30 UTC
  • mfrom: (5.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20100626152930-c09y01gk3szcnykn
Tags: 1.10+cvs20100619-2
Ship to unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include "asmi386.h"
2
 
TEXT()
3
 
        ALIGN(2)
4
 
GLOBL(C(__builtin_avcall))
5
 
        DECLARE_FUNCTION(__builtin_avcall)
6
 
FUNBEGIN(__builtin_avcall)
7
 
        INSN1(push,l    ,R(ebp))
8
 
        INSN2(mov,l     ,R(esp),R(ebp))
9
 
        INSN1(push,l    ,R(esi))
10
 
        INSN1(push,l    ,R(ebx))
11
 
        INSN2(mov,l     ,X4 MEM_DISP(ebp,8),R(esi))
12
 
        INSN2(add,l     ,NUM(-1024),R(esp))
13
 
        INSN2(mov,l     ,R(esp),R(ecx))
14
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,20),R(eax))
15
 
        INSN2(add,l     ,NUM(-32),R(eax))
16
 
        INSN2(sub,l     ,R(esi),R(eax))
17
 
        INSN2(mov,l     ,R(eax),R(edx))
18
 
        INSN2(sar,l     ,NUM(2),R(edx))
19
 
        INSN2(xor,l     ,R(ebx),R(ebx))
20
 
        INSN2(cmp,l     ,R(edx),R(ebx))
21
 
        INSN1(jge,_     ,L3)
22
 
L5:
23
 
        INSN2(mov,l     ,X4 MEM_DISP_SHINDEX(esi,32,ebx,4),R(eax))
24
 
        INSN2(mov,l     ,R(eax),X4 MEM_SHINDEX(ecx,ebx,4))
25
 
        INSN1(inc,l     ,R(ebx))
26
 
        INSN2(cmp,l     ,R(edx),R(ebx))
27
 
        INSN1(jl,_      ,L5)
28
 
L3:
29
 
        INSN2(test,b    ,NUM(8),X1 MEM_DISP(esi,4))
30
 
        INSN1(je,_      ,L7)
31
 
        INSN2(cmp,l     ,NUM(16),X4 MEM_DISP(esi,12))
32
 
        INSN1(jne,_     ,L7)
33
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(ebx))
34
 
L7:
35
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,12),R(eax))
36
 
        INSN2(cmp,l     ,NUM(13),R(eax))
37
 
        INSN1(jne,_     ,L8)
38
 
        INSN2(mov,l     ,X4 MEM(esi),R(eax))
39
 
        INSN1(call,_    ,INDIR(R(eax)))
40
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(eax))
41
 
        INSN1(fstp,s    ,X4 MEM(eax))
42
 
        INSN1(jmp,_     ,L9)
43
 
L8:
44
 
        INSN2(cmp,l     ,NUM(14),R(eax))
45
 
        INSN1(jne,_     ,L10)
46
 
        INSN2(mov,l     ,X4 MEM(esi),R(eax))
47
 
        INSN1(call,_    ,INDIR(R(eax)))
48
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(eax))
49
 
        INSN1(fstp,l    ,X8 MEM(eax))
50
 
        INSN1(jmp,_     ,L9)
51
 
L10:
52
 
        INSN2(mov,l     ,X4 MEM(esi),R(eax))
53
 
        INSN1(call,_    ,INDIR(R(eax)))
54
 
        INSN2(mov,l     ,R(eax),R(ebx))
55
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,12),R(eax))
56
 
        INSN2(cmp,l     ,NUM(1),R(eax))
57
 
        INSN1(je,_      ,L9)
58
 
        INSN2(test,l    ,R(eax),R(eax))
59
 
        INSN1(je,_      ,L61)
60
 
        INSN2(cmp,l     ,NUM(2),R(eax))
61
 
        INSN1(je,_      ,L62)
62
 
        INSN2(cmp,l     ,NUM(3),R(eax))
63
 
        INSN1(je,_      ,L62)
64
 
        INSN2(cmp,l     ,NUM(4),R(eax))
65
 
        INSN1(je,_      ,L62)
66
 
        INSN2(cmp,l     ,NUM(5),R(eax))
67
 
        INSN1(je,_      ,L63)
68
 
        INSN2(cmp,l     ,NUM(6),R(eax))
69
 
        INSN1(je,_      ,L63)
70
 
        INSN2(cmp,l     ,NUM(7),R(eax))
71
 
        INSN1(je,_      ,L61)
72
 
        INSN2(cmp,l     ,NUM(8),R(eax))
73
 
        INSN1(je,_      ,L61)
74
 
        INSN2(cmp,l     ,NUM(9),R(eax))
75
 
        INSN1(je,_      ,L61)
76
 
        INSN2(cmp,l     ,NUM(10),R(eax))
77
 
        INSN1(je,_      ,L61)
78
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,12),R(ecx))
79
 
        INSN2(lea,l     ,X4 MEM_DISP(ecx,-11),R(eax))
80
 
        INSN2(cmp,l     ,NUM(1),R(eax))
81
 
        INSN1(jbe,_     ,L64)
82
 
        INSN2(cmp,l     ,NUM(15),R(ecx))
83
 
        INSN1(je,_      ,L61)
84
 
        INSN2(cmp,l     ,NUM(16),R(ecx))
85
 
        INSN1(jne,_     ,L9)
86
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,4),R(eax))
87
 
        INSN2(test,b    ,NUM(1),R(al))
88
 
        INSN1(je,_      ,L39)
89
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,16),R(eax))
90
 
        INSN2(cmp,l     ,NUM(1),R(eax))
91
 
        INSN1(jne,_     ,L40)
92
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(edx))
93
 
        INSN2(mov,b     ,X1 MEM(ebx),R(al))
94
 
        INSN2(mov,b     ,R(al),X1 MEM(edx))
95
 
        INSN1(jmp,_     ,L9)
96
 
L40:
97
 
        INSN2(cmp,l     ,NUM(2),R(eax))
98
 
        INSN1(jne,_     ,L42)
99
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(edx))
100
 
        INSN2(mov,w     ,X2 MEM(ebx),R(ax))
101
 
        INSN2(mov,w     ,R(ax),X2 MEM(edx))
102
 
        INSN1(jmp,_     ,L9)
103
 
L42:
104
 
        INSN2(cmp,l     ,NUM(4),R(eax))
105
 
        INSN1(jne,_     ,L44)
106
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(edx))
107
 
        INSN2(mov,l     ,X4 MEM(ebx),R(eax))
108
 
        INSN2(mov,l     ,R(eax),X4 MEM(edx))
109
 
        INSN1(jmp,_     ,L9)
110
 
L44:
111
 
        INSN2(cmp,l     ,NUM(8),R(eax))
112
 
        INSN1(jne,_     ,L46)
113
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(edx))
114
 
        INSN2(mov,l     ,X4 MEM(ebx),R(eax))
115
 
        INSN2(mov,l     ,R(eax),X4 MEM(edx))
116
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(edx))
117
 
        INSN2(mov,l     ,X4 MEM_DISP(ebx,4),R(eax))
118
 
        INSN2(mov,l     ,R(eax),X4 MEM_DISP(edx,4))
119
 
        INSN1(jmp,_     ,L9)
120
 
L46:
121
 
        INSN2(add,l     ,NUM(3),R(eax))
122
 
        INSN2(mov,l     ,R(eax),R(ecx))
123
 
        INSN2(shr,l     ,NUM(2),R(ecx))
124
 
        INSN1(dec,l     ,R(ecx))
125
 
        INSN1(js,_      ,L9)
126
 
L50:
127
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(edx))
128
 
        INSN2(mov,l     ,X4 MEM_SHINDEX(ebx,ecx,4),R(eax))
129
 
        INSN2(mov,l     ,R(eax),X4 MEM_SHINDEX(edx,ecx,4))
130
 
        INSN1(dec,l     ,R(ecx))
131
 
        INSN1(jns,_     ,L50)
132
 
        INSN1(jmp,_     ,L9)
133
 
L39:
134
 
        INSN2(test,b    ,NUM(2),R(ah))
135
 
        INSN1(je,_      ,L9)
136
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,16),R(eax))
137
 
        INSN2(cmp,l     ,NUM(1),R(eax))
138
 
        INSN1(jne,_     ,L54)
139
 
L62:
140
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(eax))
141
 
        INSN2(mov,b     ,R(bl),X1 MEM(eax))
142
 
        INSN1(jmp,_     ,L9)
143
 
L54:
144
 
        INSN2(cmp,l     ,NUM(2),R(eax))
145
 
        INSN1(jne,_     ,L56)
146
 
L63:
147
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(eax))
148
 
        INSN2(mov,w     ,R(bx),X2 MEM(eax))
149
 
        INSN1(jmp,_     ,L9)
150
 
L56:
151
 
        INSN2(cmp,l     ,NUM(4),R(eax))
152
 
        INSN1(jne,_     ,L58)
153
 
L61:
154
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(eax))
155
 
        INSN2(mov,l     ,R(ebx),X4 MEM(eax))
156
 
        INSN1(jmp,_     ,L9)
157
 
L58:
158
 
        INSN2(cmp,l     ,NUM(8),R(eax))
159
 
        INSN1(jne,_     ,L9)
160
 
L64:
161
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(eax))
162
 
        INSN2(mov,l     ,R(ebx),X4 MEM(eax))
163
 
        INSN2(mov,l     ,X4 MEM_DISP(esi,8),R(eax))
164
 
        INSN2(mov,l     ,R(edx),X4 MEM_DISP(eax,4))
165
 
L9:
166
 
        INSN2(xor,l     ,R(eax),R(eax))
167
 
        INSN2(lea,l     ,X4 MEM_DISP(ebp,-8),R(esp))
168
 
        INSN1(pop,l     ,R(ebx))
169
 
        INSN1(pop,l     ,R(esi))
170
 
        INSN2(mov,l     ,R(ebp),R(esp))
171
 
        INSN1(pop,l     ,R(ebp))
172
 
        ret
173
 
FUNEND()
174